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#include <sys/appleapiopts.h> 62 63#ifdef __APPLE_API_OBSOLETE 64#ifdef KERNEL_PRIVATE 65/* 66 * Common structure pcb for internet protocol implementation. 67 * Here are stored pointers to local and foreign host table 68 * entries, local and foreign socket numbers, and pointers 69 * up (to a socket structure) and down (to a protocol-specific) 70 * control block. 71 */ 72struct atpcb; 73typedef struct atpcb gref_t; 74struct atpcb { 75 struct atpcb *atpcb_next, /* pointers to other pcb's */ 76 *atpcb_prev, 77 *atpcb_head; /* pointer back to chain of atpcb's 78 for this protocol */ 79 struct socket *atpcb_socket; /* back pointer to socket */ 80 u_char ddptype, /* DDP type */ 81 lport, /* local DDP socket */ 82 rport; /* remote DDP socket */ 83 struct at_addr laddr, /* local net and node */ 84 raddr; /* remote net and node */ 85 int ddp_flags; /* generic IP/datagram flags */ 86 caddr_t at_ppcb; /* pointer to per-protocol pcb */ 87 88 /* from the gref structure */ 89 90 void *info; 91 gbuf_t *ichead; 92 gbuf_t *ictail; 93 gbuf_t *rdhead; 94 gbuf_t *rdtail; 95 unsigned char proto; /* old-style ATPROTO_* */ 96 unsigned char errno; 97 unsigned short sevents; 98 int pid; 99 atlock_t lock; 100 atevent_t event; 101 atevent_t iocevent; 102 int (*writeable)(gref_t *gref); 103 int (*readable)(gref_t *gref); 104 struct selinfo si; /* BSD 4.4 selinfo structure for 105 selrecord/selwakeup */ 106}; 107 108#define sotoatpcb(so)((struct atpcb *)(so)->so_pcb) 109 110/* ddp_flags */ 111#define DDPFLG_CHKSUM 0x01 /* DDP checksums to be used on this connection */ 112#define DDPFLG_SLFSND 0x02 /* packets sent to the cable-multicast address 113 on this socket should be looped back */ 114#define DDPFLG_HDRINCL 0x08 /* user supplies entire DDP header */ 115#define DDPFLG_STRIPHDR 0x200 /* drop DDP header on receive (raw) */ 116 117int at_pcballoc(struct socket *, struct atpcb *); 118int at_pcbdetach(struct atpcb *); 119int at_pcbbind(struct atpcb *, struct sockaddr *); 120 121int atalk_getref(struct fileproc *, int , gref_t ** , struct proc *, int); 122int atalk_getref_locked(struct fileproc *, int , gref_t ** , struct proc *, int); 123 124 125#endif /* KERNEL_PRIVATE */ 126#endif /* __APPLE_API_OBSOLETE */ 127

