1
2
3
4
5
6
7
8 #ifndef __LINUX_ATALK_H__
9 #define __LINUX_ATALK_H__
10
11 #define ATPORT_FIRST 1
12 #define ATPORT_RESERVED 128
13 #define ATPORT_LAST 255
14 #define ATADDR_ANYNET (__u16)0
15 #define ATADDR_ANYNODE (__u8)0
16 #define ATADDR_ANYPORT (__u8)0
17 #define ATADDR_BCAST (__u8)255
18 #define DDP_MAXSZ 587
19
20 struct at_addr
21 {
22 __u16 s_net;
23 __u8 s_node;
24 };
25
26 struct sockaddr_at
27 {
28 short sat_family;
29 __u8 sat_port;
30 struct at_addr sat_addr;
31 char sat_zero[ 8 ];
32 };
33
34 struct netrange
35 {
36 __u8 nr_phase;
37 __u16 nr_firstnet;
38 __u16 nr_lastnet;
39 };
40
41 struct atalk_route
42 {
43 struct device *dev;
44 struct at_addr target;
45 struct at_addr gateway;
46 int flags;
47 struct atalk_route *next;
48 };
49
50 struct atalk_iface
51 {
52 struct device *dev;
53 struct at_addr address;
54 int status;
55 #define ATIF_PROBE 1
56 #define ATIF_PROBE_FAIL 2
57 struct netrange nets;
58 struct atalk_iface *next;
59 };
60
61 struct atalk_sock
62 {
63 unsigned short dest_net;
64 unsigned short src_net;
65 unsigned char dest_node;
66 unsigned char src_node;
67 unsigned char dest_port;
68 unsigned char src_port;
69 };
70
71 #define DDP_MAXHOPS 15
72
73 #ifdef __KERNEL__
74
75 struct ddpehdr
76 {
77
78
79 __u16 deh_len:10,deh_hops:4,deh_pad:2;
80 __u16 deh_sum;
81 __u16 deh_dnet;
82 __u16 deh_snet;
83 __u8 deh_dnode;
84 __u8 deh_snode;
85 __u8 deh_dport;
86 __u8 deh_sport;
87
88 };
89
90
91
92
93
94 struct ddpshdr
95 {
96
97 __u8 dsh_sport;
98 __u8 dsh_dport;
99 __u16 dsh_len:10, dsh_pad:6;
100
101 };
102
103
104
105 struct elapaarp
106 {
107 __u16 hw_type;
108 #define AARP_HW_TYPE_ETHERNET 1
109 #define AARP_HW_TYPE_TOKENRING 2
110 __u16 pa_type;
111 __u8 hw_len;
112 __u8 pa_len;
113 #define AARP_PA_ALEN 4
114 __u16 function;
115 #define AARP_REQUEST 1
116 #define AARP_REPLY 2
117 #define AARP_PROBE 3
118 __u8 hw_src[ETH_ALEN] __attribute__ ((packed));
119 __u8 pa_src_zero __attribute__ ((packed));
120 __u16 pa_src_net __attribute__ ((packed));
121 __u8 pa_src_node __attribute__ ((packed));
122 __u8 hw_dst[ETH_ALEN] __attribute__ ((packed));
123 __u8 pa_dst_zero __attribute__ ((packed));
124 __u16 pa_dst_net __attribute__ ((packed));
125 __u8 pa_dst_node __attribute__ ((packed));
126 };
127
128 typedef struct sock atalk_socket;
129
130 #define AARP_EXPIRY_TIME (5*60*HZ)
131 #define AARP_HASH_SIZE 16
132 #define AARP_TICK_TIME (HZ/5)
133 #define AARP_RETRANSMIT_LIMIT 10
134 #define AARP_RESOLVE_TIME (10*HZ)
135
136 extern struct datalink_proto *ddp_dl, *aarp_dl;
137 extern void aarp_proto_init(void);
138
139 extern struct atalk_iface *atalk_find_dev(struct device *dev);
140 extern struct at_addr *atalk_find_dev_addr(struct device *dev);
141 extern int aarp_send_ddp(struct device *dev,struct sk_buff *skb, struct at_addr *sa, void *hwaddr);
142 extern void aarp_send_probe(struct device *dev, struct at_addr *addr);
143 #endif
144 #endif