/ duct-tape / xnu / bsd / net / ndrv_var.h
ndrv_var.h
 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  /* Copyright (c) 1997, 1998 Apple Computer, Inc. All Rights Reserved */
29  /*
30   *	@(#)ndrv.h	1.1 (MacOSX) 6/10/43
31   * Justin Walker - 970604
32   */
33  
34  #ifndef _NET_NDRV_VAR_H
35  #define _NET_NDRV_VAR_H
36  #ifdef PRIVATE
37  
38  /*
39   * structure for storing a linked list of multicast addresses
40   * registered by this socket. May be variable in length.
41   */
42  
43  struct ndrv_multiaddr {
44  	struct ndrv_multiaddr*      next;
45  	ifmultiaddr_t                       ifma;
46  	struct sockaddr                     addr;
47  };
48  
49  /*
50   * The cb is plugged into the socket (so_pcb), and the ifnet structure
51   *  of BIND is plugged in here.
52   * For now, it looks like a raw_cb up front...
53   */
54  struct ndrv_cb {
55  	TAILQ_ENTRY(ndrv_cb)    nd_next;
56  	struct socket *nd_socket;       /* Back to the socket */
57  	u_int32_t nd_signature; /* Just double-checking */
58  	struct sockaddr_ndrv *nd_faddr;
59  	struct sockaddr_ndrv *nd_laddr;
60  	struct sockproto nd_proto;      /* proto family, protocol */
61  	int nd_descrcnt;                /* # elements in nd_dlist - Obsolete */
62  	TAILQ_HEAD(dlist, dlil_demux_desc) nd_dlist; /* Descr. list */
63  	u_int32_t nd_dlist_cnt; /* Descr. list count */
64  	struct ifnet *nd_if; /* obsolete, maintained for binary compatibility */
65  	u_int32_t nd_proto_family;
66  	u_int32_t nd_family;
67  	struct ndrv_multiaddr* nd_multiaddrs;
68  	short nd_unit;
69  };
70  
71  #define sotondrvcb(so)          ((struct ndrv_cb *)(so)->so_pcb)
72  #define NDRV_SIGNATURE  0x4e445256 /* "NDRV" */
73  
74  /* Nominal allocated space for NDRV sockets */
75  #define NDRVSNDQ         8192
76  #define NDRVRCVQ         8192
77  
78  #endif /* PRIVATE */
79  #endif  /* _NET_NDRV_VAR_H */