|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1997-1999 Apple Computer, Inc.
24: * All Rights Reserved.
25: */
26: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
27: /*
28: * Copyright (c) 1982, 1986, 1990, 1993
29: * The Regents of the University of California. All rights reserved.
30: *
31: * Redistribution and use in source and binary forms, with or without
32: * modification, are permitted provided that the following conditions
33: * are met:
34: * 1. Redistributions of source code must retain the above copyright
35: * notice, this list of conditions and the following disclaimer.
36: * 2. Redistributions in binary form must reproduce the above copyright
37: * notice, this list of conditions and the following disclaimer in the
38: * documentation and/or other materials provided with the distribution.
39: * 3. All advertising materials mentioning features or use of this software
40: * must display the following acknowledgement:
41: * This product includes software developed by the University of
42: * California, Berkeley and its contributors.
43: * 4. Neither the name of the University nor the names of its contributors
44: * may be used to endorse or promote products derived from this software
45: * without specific prior written permission.
46: *
47: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
48: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
50: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
51: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
53: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
54: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
55: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
56: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
57: * SUCH DAMAGE.
58: */
59:
60: /* at_pcb.h */
61:
62: /*
63: * Common structure pcb for internet protocol implementation.
64: * Here are stored pointers to local and foreign host table
65: * entries, local and foreign socket numbers, and pointers
66: * up (to a socket structure) and down (to a protocol-specific)
67: * control block.
68: */
69: struct atpcb {
70: struct atpcb *atpcb_next, /* pointers to other pcb's */
71: *atpcb_prev,
72: *atpcb_head; /* pointer back to chain of atpcb's
73: for this protocol */
74: struct socket *atpcb_socket; /* back pointer to socket */
75: u_char ddptype, /* DDP type */
76: lport, /* local DDP socket */
77: rport; /* remote DDP socket */
78: struct at_addr laddr, /* local net and node */
79: raddr; /* remote net and node */
80: int ddp_flags; /* generic IP/datagram flags */
81: caddr_t at_ppcb; /* pointer to per-protocol pcb */
82:
83: /* from the gref structure */
84:
85: void *info;
86: gbuf_t *ichead;
87: gbuf_t *ictail;
88: gbuf_t *rdhead;
89: gbuf_t *rdtail;
90: unsigned char proto; /* old-style ATPROTO_* */
91: unsigned char errno;
92: unsigned short sevents;
93: int pid;
94: atlock_t lock;
95: atevent_t event;
96: atevent_t iocevent;
97: int (*writeable)();
98: int (*readable)();
99: struct selinfo si; /* BSD 4.4 selinfo structure for
100: selrecord/selwakeup */
101: };
102:
103: #define sotoatpcb(so)((struct atpcb *)(so)->so_pcb)
104:
105: /* ddp_flags */
106: #define DDPFLG_CHKSUM 0x01 /* DDP checksums to be used on this connection */
107: #define DDPFLG_SLFSNDOFF 0x08 /* packets sent to the cable-multicast address
108: on this socket should not be looped back */
109: #define DDPFLG_HDRINCL 0x08 /* user supplies entire DDP header */
110: #define DDPFLG_STRIPHDR 0x200 /* drop DDP header on receive (raw) */
111:
112: #ifdef KERNEL
113: typedef struct atpcb gref_t;
114:
115: int at_pcballoc __P((struct socket *, struct atpcb *));
116: int at_pcbdetach __P((struct atpcb *));
117: int at_pcbbind __P((struct atpcb *, struct sockaddr *));
118: void at_setpeeraddr __P((struct atpcb *, struct sockaddr *));
119: void at_setsockaddr __P((struct atpcb *, struct sockaddr *));
120: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.