linux-old/include/linux/atalk.h
<<
>>
Prefs
   1/*
   2 *      AppleTalk networking structures
   3 *
   4 *      The following are directly referenced from the University Of Michigan
   5 *      netatalk for compatibility reasons.
   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     254 /* 254 is only legal on localtalk */ 
  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#define DDP_MAXHOPS     15      /* 4 bits of hop counter */
  20
  21#define SIOCATALKDIFADDR       (SIOCPROTOPRIVATE + 0)
  22
  23struct at_addr 
  24{
  25        __u16   s_net;
  26        __u8    s_node;
  27};
  28
  29struct sockaddr_at 
  30{
  31        sa_family_t     sat_family;
  32        __u8            sat_port;
  33        struct at_addr  sat_addr;
  34        char            sat_zero[ 8 ];
  35};
  36
  37struct netrange 
  38{
  39        __u8    nr_phase;
  40        __u16   nr_firstnet;
  41        __u16   nr_lastnet;
  42};
  43
  44struct atalk_route
  45{
  46        struct net_device *dev;
  47        struct at_addr target;
  48        struct at_addr gateway;
  49        int flags;
  50        struct atalk_route *next;
  51};
  52
  53struct atalk_iface
  54{
  55        struct net_device *dev;
  56        struct at_addr address;         /* Our address */
  57        int status;                     /* What are we doing? */
  58#define ATIF_PROBE      1               /* Probing for an address */
  59#define ATIF_PROBE_FAIL 2               /* Probe collided */
  60        struct netrange nets;           /* Associated direct netrange */
  61        struct atalk_iface *next;
  62};
  63        
  64struct atalk_sock
  65{
  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;
  72};
  73
  74#ifdef __KERNEL__
  75
  76#include <asm/byteorder.h>
  77
  78struct ddpehdr
  79{
  80#ifdef __LITTLE_ENDIAN_BITFIELD
  81        __u16   deh_len:10, deh_hops:4, deh_pad:2;
  82#else
  83        __u16   deh_pad:2, deh_hops:4, deh_len:10;
  84#endif
  85        __u16   deh_sum;
  86        __u16   deh_dnet;
  87        __u16   deh_snet;
  88        __u8    deh_dnode;
  89        __u8    deh_snode;
  90        __u8    deh_dport;
  91        __u8    deh_sport;
  92        /* And netatalk apps expect to stick the type in themselves */
  93};
  94
  95/*
  96 *      Don't drop the struct into the struct above.  You'll get some
  97 *      surprise padding.
  98 */
  99 
 100struct ddpebits
 101{
 102#ifdef __LITTLE_ENDIAN_BITFIELD
 103        __u16   deh_len:10, deh_hops:4, deh_pad:2;
 104#else
 105        __u16   deh_pad:2, deh_hops:4, deh_len:10;
 106#endif
 107};
 108
 109/*
 110 *      Short form header
 111 */
 112 
 113struct ddpshdr
 114{
 115#ifdef __LITTLE_ENDIAN_BITFIELD
 116        __u16   dsh_len:10, dsh_pad:6;
 117#else
 118        __u16   dsh_pad:6, dsh_len:10;
 119#endif
 120        __u8    dsh_dport;
 121        __u8    dsh_sport;
 122        /* And netatalk apps expect to stick the type in themselves */
 123};
 124
 125/* AppleTalk AARP headers */
 126
 127struct elapaarp
 128{
 129        __u16   hw_type;
 130#define AARP_HW_TYPE_ETHERNET           1
 131#define AARP_HW_TYPE_TOKENRING          2
 132        __u16   pa_type;
 133        __u8    hw_len;
 134        __u8    pa_len;
 135#define AARP_PA_ALEN                    4
 136        __u16   function;
 137#define AARP_REQUEST                    1
 138#define AARP_REPLY                      2
 139#define AARP_PROBE                      3
 140        __u8    hw_src[ETH_ALEN]        __attribute__ ((packed));
 141        __u8    pa_src_zero             __attribute__ ((packed));
 142        __u16   pa_src_net              __attribute__ ((packed));
 143        __u8    pa_src_node             __attribute__ ((packed));
 144        __u8    hw_dst[ETH_ALEN]        __attribute__ ((packed));
 145        __u8    pa_dst_zero             __attribute__ ((packed));
 146        __u16   pa_dst_net              __attribute__ ((packed));
 147        __u8    pa_dst_node             __attribute__ ((packed));       
 148};
 149
 150#define AARP_EXPIRY_TIME        (5*60*HZ)       /* Not specified - how long till we drop a resolved entry */
 151#define AARP_HASH_SIZE          16              /* Size of hash table */
 152#define AARP_TICK_TIME          (HZ/5)          /* Fast retransmission timer when resolving */
 153#define AARP_RETRANSMIT_LIMIT   10              /* Send 10 requests then give up (2 seconds) */
 154#define AARP_RESOLVE_TIME       (10*HZ)         /* Some value bigger than total retransmit time + a bit for last reply to appear and to stop continual requests */
 155
 156extern struct datalink_proto *ddp_dl, *aarp_dl;
 157extern void aarp_proto_init(void);
 158/* Inter module exports */
 159
 160/*
 161 *      Give a device find its atif control structure
 162 */
 163
 164static inline struct atalk_iface *atalk_find_dev(struct net_device *dev)
 165{
 166        return dev->atalk_ptr;
 167}
 168
 169extern struct at_addr *atalk_find_dev_addr(struct net_device *dev);
 170extern struct net_device *atrtr_get_dev(struct at_addr *sa);
 171extern int aarp_send_ddp(struct net_device *dev,struct sk_buff *skb, struct at_addr *sa, void *hwaddr);
 172extern void aarp_send_probe(struct net_device *dev, struct at_addr *addr);
 173extern void aarp_device_down(struct net_device *dev);
 174
 175#ifdef MODULE
 176extern void aarp_cleanup_module(void);
 177#endif /* MODULE */
 178
 179#endif /* __KERNEL__ */
 180#endif /* __LINUX_ATALK_H__ */
 181
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.