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

TOMOYO Linux Cross Reference
Linux/include/linux/atalk.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef __LINUX_ATALK_H__
  3 #define __LINUX_ATALK_H__
  4 
  5 
  6 #include <net/sock.h>
  7 #include <uapi/linux/atalk.h>
  8 
  9 struct atalk_route {
 10         struct net_device  *dev;
 11         struct atalk_addr  target;
 12         struct atalk_addr  gateway;
 13         int                flags;
 14         struct atalk_route *next;
 15 };
 16 
 17 /**
 18  *      struct atalk_iface - AppleTalk Interface
 19  *      @dev - Network device associated with this interface
 20  *      @address - Our address
 21  *      @status - What are we doing?
 22  *      @nets - Associated direct netrange
 23  *      @next - next element in the list of interfaces
 24  */
 25 struct atalk_iface {
 26         struct net_device       *dev;
 27         struct atalk_addr       address;
 28         int                     status;
 29 #define ATIF_PROBE      1               /* Probing for an address */
 30 #define ATIF_PROBE_FAIL 2               /* Probe collided */
 31         struct atalk_netrange   nets;
 32         struct atalk_iface      *next;
 33 };
 34         
 35 struct atalk_sock {
 36         /* struct sock has to be the first member of atalk_sock */
 37         struct sock     sk;
 38         __be16          dest_net;
 39         __be16          src_net;
 40         unsigned char   dest_node;
 41         unsigned char   src_node;
 42         unsigned char   dest_port;
 43         unsigned char   src_port;
 44 };
 45 
 46 static inline struct atalk_sock *at_sk(struct sock *sk)
 47 {
 48         return (struct atalk_sock *)sk;
 49 }
 50 
 51 struct ddpehdr {
 52         __be16  deh_len_hops;   /* lower 10 bits are length, next 4 - hops */
 53         __be16  deh_sum;
 54         __be16  deh_dnet;
 55         __be16  deh_snet;
 56         __u8    deh_dnode;
 57         __u8    deh_snode;
 58         __u8    deh_dport;
 59         __u8    deh_sport;
 60         /* And netatalk apps expect to stick the type in themselves */
 61 };
 62 
 63 static __inline__ struct ddpehdr *ddp_hdr(struct sk_buff *skb)
 64 {
 65         return (struct ddpehdr *)skb_transport_header(skb);
 66 }
 67 
 68 /* AppleTalk AARP headers */
 69 struct elapaarp {
 70         __be16  hw_type;
 71 #define AARP_HW_TYPE_ETHERNET           1
 72 #define AARP_HW_TYPE_TOKENRING          2
 73         __be16  pa_type;
 74         __u8    hw_len;
 75         __u8    pa_len;
 76 #define AARP_PA_ALEN                    4
 77         __be16  function;
 78 #define AARP_REQUEST                    1
 79 #define AARP_REPLY                      2
 80 #define AARP_PROBE                      3
 81         __u8    hw_src[ETH_ALEN];
 82         __u8    pa_src_zero;
 83         __be16  pa_src_net;
 84         __u8    pa_src_node;
 85         __u8    hw_dst[ETH_ALEN];
 86         __u8    pa_dst_zero;
 87         __be16  pa_dst_net;
 88         __u8    pa_dst_node;
 89 } __attribute__ ((packed));
 90 
 91 static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb)
 92 {
 93         return (struct elapaarp *)skb_transport_header(skb);
 94 }
 95 
 96 /* Not specified - how long till we drop a resolved entry */
 97 #define AARP_EXPIRY_TIME        (5 * 60 * HZ)
 98 /* Size of hash table */
 99 #define AARP_HASH_SIZE          16
100 /* Fast retransmission timer when resolving */
101 #define AARP_TICK_TIME          (HZ / 5)
102 /* Send 10 requests then give up (2 seconds) */
103 #define AARP_RETRANSMIT_LIMIT   10
104 /*
105  * Some value bigger than total retransmit time + a bit for last reply to
106  * appear and to stop continual requests
107  */
108 #define AARP_RESOLVE_TIME       (10 * HZ)
109 
110 extern struct datalink_proto *ddp_dl, *aarp_dl;
111 extern int aarp_proto_init(void);
112 
113 /* Inter module exports */
114 
115 /* Give a device find its atif control structure */
116 #if IS_ENABLED(CONFIG_ATALK)
117 static inline struct atalk_iface *atalk_find_dev(struct net_device *dev)
118 {
119         return dev->atalk_ptr;
120 }
121 #endif
122 
123 extern struct atalk_addr *atalk_find_dev_addr(struct net_device *dev);
124 extern struct net_device *atrtr_get_dev(struct atalk_addr *sa);
125 extern int               aarp_send_ddp(struct net_device *dev,
126                                        struct sk_buff *skb,
127                                        struct atalk_addr *sa, void *hwaddr);
128 extern void              aarp_device_down(struct net_device *dev);
129 extern void              aarp_probe_network(struct atalk_iface *atif);
130 extern int               aarp_proxy_probe_network(struct atalk_iface *atif,
131                                      struct atalk_addr *sa);
132 extern void              aarp_proxy_remove(struct net_device *dev,
133                                            struct atalk_addr *sa);
134 
135 extern void             aarp_cleanup_module(void);
136 
137 extern struct hlist_head atalk_sockets;
138 extern rwlock_t atalk_sockets_lock;
139 
140 extern struct atalk_route *atalk_routes;
141 extern rwlock_t atalk_routes_lock;
142 
143 extern struct atalk_iface *atalk_interfaces;
144 extern rwlock_t atalk_interfaces_lock;
145 
146 extern struct atalk_route atrtr_default;
147 
148 struct aarp_iter_state {
149         int bucket;
150         struct aarp_entry **table;
151 };
152 
153 extern const struct seq_operations aarp_seq_ops;
154 
155 extern int sysctl_aarp_expiry_time;
156 extern int sysctl_aarp_tick_time;
157 extern int sysctl_aarp_retransmit_limit;
158 extern int sysctl_aarp_resolve_time;
159 
160 #ifdef CONFIG_SYSCTL
161 extern int atalk_register_sysctl(void);
162 extern void atalk_unregister_sysctl(void);
163 #else
164 static inline int atalk_register_sysctl(void)
165 {
166         return 0;
167 }
168 static inline void atalk_unregister_sysctl(void)
169 {
170 }
171 #endif
172 
173 #ifdef CONFIG_PROC_FS
174 extern int atalk_proc_init(void);
175 extern void atalk_proc_exit(void);
176 #else
177 static inline int atalk_proc_init(void)
178 {
179         return 0;
180 }
181 static inline void atalk_proc_exit(void)
182 {
183 }
184 #endif /* CONFIG_PROC_FS */
185 
186 #endif /* __LINUX_ATALK_H__ */
187 

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

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php