|
|
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: /* Copyright (c) 1997, 1998 Apple Computer, Inc. All Rights Reserved */
23: /*
24: * @(#)if_blue.h 1.1 (MacOSX) 6/10/43
25: * Justin Walker
26: * 970520 - First version
27: * 980130 - Second version - performance improvements
28: */
29:
30: #ifndef _IF_BLUE_H
31: #define _IF_BLUE_H
32:
33: #define BLUE_DEBUG 0
34:
35: /*
36: * Y-adapter filter mechanism.
37: * Specifies the Atalk or IP network address of this node.
38: * If BF_ALLOC is set and BF_VALID is not, the corresponding
39: * protocol type should be captured.
40: */
41: struct BlueFilter
42: {
43: #define IFNAMSIZ 16
44: char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
45: short BF_flags;
46: unsigned long BF_address; /* IP address or Atalk Network # */
47: unsigned char BF_node; /* Atalk node # */
48: #ifdef notyet
49: struct ifnet *BF_if; /* Destination of "passed" pkts */
50: #endif
51: };
52:
53: #define BF_ALLOC 0x01 /* Entry in use */
54: #define BF_DEALLOC 0x02 /* Clear matching entry */
55: #define BF_VALID 0x04 /* Address is valid */
56: #define BF_ATALK 0x08 /* Appletalk network address */
57: #define BF_IP 0x10 /* IP network address */
58:
59: struct Ystats
60: { char YS_name[IFNAMSIZ]; /* if name, e.g. "en0" */
61: struct BlueFilter YS_filter[2];
62: pid_t YS_blue_pid;
63: int YS_pkts_up;
64: int YS_pkts_out;
65: int YS_pkts_looped_r2b;
66: int YS_pkts_looped_b2r;
67: int YS_no_bufs1;
68: int YS_no_bufs2;
69: int YS_full_sockbuf;
70: };
71:
72: struct ifnet_blue
73: { struct ifnet ifb_ifn;
74: struct socket *ifb_so;
75: pid_t blue_pid;
76: int sig_to_send;
77: int sig_sent; /* Set when new pkt arrives; cleared when mt */
78: struct BlueFilter filter[2]; /* Only need to check IP, A/talk */
79: /* Stats */
80: int pkts_up;
81: int pkts_out;
82: int pkts_looped_r2b;
83: int pkts_looped_b2r;
84: int no_bufs1; /* splitter_input got null mbuf */
85: int no_bufs2; /* ndrv_output couldn't dup mbuf */
86: int full_sockbuf;
87: };
88:
89: /* Preallocate slots in blue_if to simplify filtering */
90: #define BFS_ATALK 0x0 /* The Atalk filter */
91: #define BFS_IP 0x1 /* The IP filter */
92:
93: #define SIOCSSPLITTER _IOW('i', 123, struct ifreq) /* set 'splitter' */
94: #define SIOCGSPLITTER _IOR('i', 122, struct ifreq) /* get 'splitter' */
95: #define SIOCGSPLTSTAT _IOWR('i', 121, struct Ystats)
96: #define SIOCSSPLTFILT _IOW('i', 120, struct BlueFilter)
97: #define SIOCZSPLTSTAT _IO('i', 119) /* Clear stats */
98:
99: /*
100: * Config structure for the Y adapter - NYI
101: */
102: struct if_splitter
103: { char ifs_on; /* 1=>on */
104: char ifs_qmax; /* !0 => maxqlen */
105: short ifs_wait; /* Time to wait for signal */
106: short ifs_sig; /* Signal to send */
107: short ifs_pad; /* Extra space */
108: };
109:
110: #ifdef KERNEL
111: extern struct ifqueue blueq; /* Place to put incoming BB packets */
112:
113: #define BFCount 10
114: extern struct BlueFilter RhapFilter[]; /* Filters for MacOSX side */
115: extern int BFIx;
116: #endif
117: #endif /* _IF_BLUE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.