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