~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux-2.6.17/include/linux/atalk.h

Version: ~ [ 2.6.16 ] ~ [ 2.6.17 ] ~
Architecture: ~ [ ia64 ] ~ [ i386 ] ~ [ arm ] ~ [ ppc ] ~ [ sparc64 ] ~

  1 #ifndef __LINUX_ATALK_H__
  2 #define __LINUX_ATALK_H__
  3 
  4 #include <asm/byteorder.h>
  5 
  6 /*
  7  * AppleTalk networking structures
  8  *
  9  * The following are directly referenced from the University Of Michigan
 10  * netatalk for compatibility reasons.
 11  */
 12 #define ATPORT_FIRST    1
 13 #define ATPORT_RESERVED 128
 14 #define ATPORT_LAST     254             /* 254 is only legal on localtalk */ 
 15 #define ATADDR_ANYNET   (__u16)0
 16 #define ATADDR_ANYNODE  (__u8)0
 17 #define ATADDR_ANYPORT  (__u8)0
 18 #define ATADDR_BCAST    (__u8)255
 19 #define DDP_MAXSZ       587
 20 #define DDP_MAXHOPS     15              /* 4 bits of hop counter */
 21 
 22 #define SIOCATALKDIFADDR       (SIOCPROTOPRIVATE + 0)
 23 
 24 struct atalk_addr {
 25         __be16  s_net;
 26         __u8    s_node;
 27 };
 28 
 29 struct sockaddr_at {
 30         sa_family_t       sat_family;
 31         __u8              sat_port;
 32         struct atalk_addr sat_addr;
 33         char              sat_zero[8];
 34 };
 35 
 36 struct atalk_netrange {
 37         __u8    nr_phase;
 38         __be16  nr_firstnet;
 39         __be16  nr_lastnet;
 40 };
 41 
 42 #ifdef __KERNEL__
 43 
 44 #include <net/sock.h>
 45 
 46 struct atalk_route {
 47         struct net_device  *dev;
 48         struct atalk_addr  target;
 49         struct atalk_addr  gateway;
 50         int                flags;
 51         struct atalk_route *next;
 52 };
 53 
 54 /**
 55  *      struct atalk_iface - AppleTalk Interface
 56  *      @dev - Network device associated with this interface
 57  *      @address - Our address
 58  *      @status - What are we doing?
 59  *      @nets - Associated direct netrange
 60  *      @next - next element in the list of interfaces
 61  */
 62 struct atalk_iface {
 63         struct net_device       *dev;
 64         struct atalk_addr       address;
 65         int                     status;
 66 #define ATIF_PROBE      1               /* Probing for an address */
 67 #define ATIF_PROBE_FAIL 2               /* Probe collided */
 68         struct atalk_netrange   nets;
 69         struct atalk_iface      *next;
 70 };
 71         
 72 struct atalk_sock {
 73         /* struct sock has to be the first member of atalk_sock */
 74         struct sock     sk;
 75         __be16          dest_net;
 76         __be16          src_net;
 77         unsigned char   dest_node;
 78         unsigned char   src_node;
 79         unsigned char   dest_port;
 80         unsigned char   src_port;
 81 };
 82 
 83 static inline struct atalk_sock *at_sk(struct sock *sk)
 84 {
 85         return (struct atalk_sock *)sk;
 86 }
 87 
 88 #include <asm/byteorder.h>
 89 
 90 struct ddpehdr {
 91 #ifdef __LITTLE_ENDIAN_BITFIELD
 92         __u16   deh_len:10,
 93                 deh_hops:4,
 94                 deh_pad:2;
 95 #else
 96         __u16   deh_pad:2,
 97                 deh_hops:4,
 98                 deh_len:10;
 99 #endif
100         __be16  deh_sum;
101         __be16  deh_dnet;
102         __be16  deh_snet;
103         __u8    deh_dnode;
104         __u8    deh_snode;
105         __u8    deh_dport;
106         __u8    deh_sport;
107         /* And netatalk apps expect to stick the type in themselves */
108 };
109 
110 static __inline__ struct ddpehdr *ddp_hdr(struct sk_buff *skb)
111 {
112         return (struct ddpehdr *)skb->h.raw;
113 }
114 
115 /*
116  *      Don't drop the struct into the struct above.  You'll get some
117  *      surprise padding.
118  */
119 struct ddpebits {
120 #ifdef __LITTLE_ENDIAN_BITFIELD
121         __u16   deh_len:10,
122                 deh_hops:4,
123                 deh_pad:2;
124 #else
125         __u16   deh_pad:2,
126                 deh_hops:4,
127                 deh_len:10;
128 #endif
129 };
130 
131 /* Short form header */
132 struct ddpshdr {
133 #ifdef __LITTLE_ENDIAN_BITFIELD
134         __u16   dsh_len:10,
135                 dsh_pad:6;
136 #else
137         __u16   dsh_pad:6,
138                 dsh_len:10;
139 #endif
140         __u8    dsh_dport;
141         __u8    dsh_sport;
142         /* And netatalk apps expect to stick the type in themselves */
143 };
144 
145 /* AppleTalk AARP headers */
146 struct elapaarp {
147         __be16  hw_type;
148 #define AARP_HW_TYPE_ETHERNET           1
149 #define AARP_HW_TYPE_TOKENRING          2
150         __be16  pa_type;
151         __u8    hw_len;
152         __u8    pa_len;
153 #define AARP_PA_ALEN                    4
154         __be16  function;
155 #define AARP_REQUEST                    1
156 #define AARP_REPLY                      2
157 #define AARP_PROBE                      3
158         __u8    hw_src[ETH_ALEN];
159         __u8    pa_src_zero;
160         __be16  pa_src_net;
161         __u8    pa_src_node;
162         __u8    hw_dst[ETH_ALEN];
163         __u8    pa_dst_zero;
164         __be16  pa_dst_net;
165         __u8    pa_dst_node;
166 } __attribute__ ((packed));
167 
168 static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb)
169 {
170         return (struct elapaarp *)skb->h.raw;
171 }
172 
173 /* Not specified - how long till we drop a resolved entry */
174 #define AARP_EXPIRY_TIME        (5 * 60 * HZ)
175 /* Size of hash table */
176 #define AARP_HASH_SIZE          16
177 /* Fast retransmission timer when resolving */
178 #define AARP_TICK_TIME          (HZ / 5)
179 /* Send 10 requests then give up (2 seconds) */
180 #define AARP_RETRANSMIT_LIMIT   10
181 /*
182  * Some value bigger than total retransmit time + a bit for last reply to
183  * appear and to stop continual requests
184  */
185 #define AARP_RESOLVE_TIME       (10 * HZ)
186 
187 extern struct datalink_proto *ddp_dl, *aarp_dl;
188 extern void aarp_proto_init(void);
189 
190 /* Inter module exports */
191 
192 /* Give a device find its atif control structure */
193 static inline struct atalk_iface *atalk_find_dev(struct net_device *dev)
194 {
195         return dev->atalk_ptr;
196 }
197 
198 extern struct atalk_addr *atalk_find_dev_addr(struct net_device *dev);
199 extern struct net_device *atrtr_get_dev(struct atalk_addr *sa);
200 extern int               aarp_send_ddp(struct net_device *dev,
201                                        struct sk_buff *skb,
202                                        struct atalk_addr *sa, void *hwaddr);
203 extern void              aarp_device_down(struct net_device *dev);
204 extern void              aarp_probe_network(struct atalk_iface *atif);
205 extern int               aarp_proxy_probe_network(struct atalk_iface *atif,
206                                      struct atalk_addr *sa);
207 extern void              aarp_proxy_remove(struct net_device *dev,
208                                            struct atalk_addr *sa);
209 
210 extern void             aarp_cleanup_module(void);
211 
212 extern struct hlist_head atalk_sockets;
213 extern rwlock_t atalk_sockets_lock;
214 
215 extern struct atalk_route *atalk_routes;
216 extern rwlock_t atalk_routes_lock;
217 
218 extern struct atalk_iface *atalk_interfaces;
219 extern rwlock_t atalk_interfaces_lock;
220 
221 extern struct atalk_route atrtr_default;
222 
223 extern struct file_operations atalk_seq_arp_fops;
224 
225 extern int sysctl_aarp_expiry_time;
226 extern int sysctl_aarp_tick_time;
227 extern int sysctl_aarp_retransmit_limit;
228 extern int sysctl_aarp_resolve_time;
229 
230 #ifdef CONFIG_SYSCTL
231 extern void atalk_register_sysctl(void);
232 extern void atalk_unregister_sysctl(void);
233 #else
234 #define atalk_register_sysctl()         do { } while(0)
235 #define atalk_unregister_sysctl()       do { } while(0)
236 #endif
237 
238 #ifdef CONFIG_PROC_FS
239 extern int atalk_proc_init(void);
240 extern void atalk_proc_exit(void);
241 #else
242 #define atalk_proc_init()       ({ 0; })
243 #define atalk_proc_exit()       do { } while(0)
244 #endif /* CONFIG_PROC_FS */
245 
246 #endif /* __KERNEL__ */
247 #endif /* __LINUX_ATALK_H__ */
248 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.