1 #ifndef __LINUX_ATALK_H__
2 #define __LINUX_ATALK_H__
4 * AppleTalk networking structures
6 * The following are directly referenced from the University Of Michigan
7 * netatalk for compatibility reasons.
10 #define ATPORT_RESERVED 128
11 #define ATPORT_LAST 254 /* 254 is only legal on localtalk */
12 #define ATADDR_ANYNET (__u16)0
13 #define ATADDR_ANYNODE (__u8)0
14 #define ATADDR_ANYPORT (__u8)0
15 #define ATADDR_BCAST (__u8)255
17 #define DDP_MAXHOPS 15 /* 4 bits of hop counter */
19 #define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0)
27 sa_family_t sat_family
;
29 struct atalk_addr sat_addr
;
33 struct atalk_netrange
{
40 struct net_device
*dev
;
41 struct atalk_addr target
;
42 struct atalk_addr gateway
;
44 struct atalk_route
*next
;
48 * struct atalk_iface - AppleTalk Interface
49 * @dev - Network device associated with this interface
50 * @address - Our address
51 * @status - What are we doing?
52 * @nets - Associated direct netrange
53 * @next - next element in the list of interfaces
56 struct net_device
*dev
;
57 struct atalk_addr address
;
59 #define ATIF_PROBE 1 /* Probing for an address */
60 #define ATIF_PROBE_FAIL 2 /* Probe collided */
61 struct atalk_netrange nets
;
62 struct atalk_iface
*next
;
66 unsigned short dest_net
;
67 unsigned short src_net
;
68 unsigned char dest_node
;
69 unsigned char src_node
;
70 unsigned char dest_port
;
71 unsigned char src_port
;
76 #include <asm/byteorder.h>
79 #ifdef __LITTLE_ENDIAN_BITFIELD
95 /* And netatalk apps expect to stick the type in themselves */
98 static __inline__
struct ddpehdr
*ddp_hdr(struct sk_buff
*skb
)
100 return (struct ddpehdr
*)skb
->h
.raw
;
104 * Don't drop the struct into the struct above. You'll get some
108 #ifdef __LITTLE_ENDIAN_BITFIELD
119 /* Short form header */
121 #ifdef __LITTLE_ENDIAN_BITFIELD
130 /* And netatalk apps expect to stick the type in themselves */
133 /* AppleTalk AARP headers */
136 #define AARP_HW_TYPE_ETHERNET 1
137 #define AARP_HW_TYPE_TOKENRING 2
141 #define AARP_PA_ALEN 4
143 #define AARP_REQUEST 1
146 __u8 hw_src
[ETH_ALEN
] __attribute__ ((packed
));
147 __u8 pa_src_zero
__attribute__ ((packed
));
148 __u16 pa_src_net
__attribute__ ((packed
));
149 __u8 pa_src_node
__attribute__ ((packed
));
150 __u8 hw_dst
[ETH_ALEN
] __attribute__ ((packed
));
151 __u8 pa_dst_zero
__attribute__ ((packed
));
152 __u16 pa_dst_net
__attribute__ ((packed
));
153 __u8 pa_dst_node
__attribute__ ((packed
));
156 static __inline__
struct elapaarp
*aarp_hdr(struct sk_buff
*skb
)
158 return (struct elapaarp
*)skb
->h
.raw
;
161 /* Not specified - how long till we drop a resolved entry */
162 #define AARP_EXPIRY_TIME (5 * 60 * HZ)
163 /* Size of hash table */
164 #define AARP_HASH_SIZE 16
165 /* Fast retransmission timer when resolving */
166 #define AARP_TICK_TIME (HZ / 5)
167 /* Send 10 requests then give up (2 seconds) */
168 #define AARP_RETRANSMIT_LIMIT 10
170 * Some value bigger than total retransmit time + a bit for last reply to
171 * appear and to stop continual requests
173 #define AARP_RESOLVE_TIME (10 * HZ)
175 extern struct datalink_proto
*ddp_dl
, *aarp_dl
;
176 extern void aarp_proto_init(void);
178 /* Inter module exports */
180 /* Give a device find its atif control structure */
181 static inline struct atalk_iface
*atalk_find_dev(struct net_device
*dev
)
183 return dev
->atalk_ptr
;
186 extern struct atalk_addr
*atalk_find_dev_addr(struct net_device
*dev
);
187 extern struct net_device
*atrtr_get_dev(struct atalk_addr
*sa
);
188 extern int aarp_send_ddp(struct net_device
*dev
,
190 struct atalk_addr
*sa
, void *hwaddr
);
191 extern void aarp_send_probe(struct net_device
*dev
,
192 struct atalk_addr
*addr
);
193 extern void aarp_device_down(struct net_device
*dev
);
194 extern void aarp_probe_network(struct atalk_iface
*atif
);
195 extern int aarp_proxy_probe_network(struct atalk_iface
*atif
,
196 struct atalk_addr
*sa
);
197 extern void aarp_proxy_remove(struct net_device
*dev
,
198 struct atalk_addr
*sa
);
200 extern void aarp_cleanup_module(void);
202 #define at_sk(__sk) ((struct atalk_sock *)(__sk)->sk_protinfo)
204 extern struct hlist_head atalk_sockets
;
205 extern rwlock_t atalk_sockets_lock
;
207 extern struct atalk_route
*atalk_routes
;
208 extern rwlock_t atalk_routes_lock
;
210 extern struct atalk_iface
*atalk_interfaces
;
211 extern rwlock_t atalk_interfaces_lock
;
213 extern struct atalk_route atrtr_default
;
215 extern struct file_operations atalk_seq_arp_fops
;
217 extern int sysctl_aarp_expiry_time
;
218 extern int sysctl_aarp_tick_time
;
219 extern int sysctl_aarp_retransmit_limit
;
220 extern int sysctl_aarp_resolve_time
;
223 extern void atalk_register_sysctl(void);
224 extern void atalk_unregister_sysctl(void);
226 #define atalk_register_sysctl() do { } while(0)
227 #define atalk_unregister_sysctl() do { } while(0)
230 #ifdef CONFIG_PROC_FS
231 extern int atalk_proc_init(void);
232 extern void atalk_proc_exit(void);
234 #define atalk_proc_init() 0
235 #define atalk_proc_exit() do { } while(0)
236 #endif /* CONFIG_PROC_FS */
238 #endif /* __KERNEL__ */
239 #endif /* __LINUX_ATALK_H__ */