1 /* net/atm/atmarp.h - RFC1577 ATM ARP */ 2 3 /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ 4 5 6 #ifndef _ATMCLIP_H 7 #define _ATMCLIP_H 8 9 #include <linux/netdevice.h> 10 #include <linux/atm.h> 11 #include <linux/atmdev.h> 12 #include <linux/atmarp.h> 13 #include <linux/spinlock.h> 14 #include <net/neighbour.h> 15 16 17 #define CLIP_VCC(vcc) ((struct clip_vcc *) ((vcc)->user_back)) 18 19 struct sk_buff; 20 21 struct clip_vcc { 22 struct atm_vcc *vcc; /* VCC descriptor */ 23 struct atmarp_entry *entry; /* ATMARP table entry, NULL if IP addr. 24 isn't known yet */ 25 int xoff; /* 1 if send buffer is full */ 26 unsigned char encap; /* 0: NULL, 1: LLC/SNAP */ 27 unsigned long last_use; /* last send or receive operation */ 28 unsigned long idle_timeout; /* keep open idle for so many jiffies*/ 29 void (*old_push)(struct atm_vcc *vcc,struct sk_buff *skb); 30 /* keep old push fn for chaining */ 31 void (*old_pop)(struct atm_vcc *vcc,struct sk_buff *skb); 32 /* keep old pop fn for chaining */ 33 struct clip_vcc *next; /* next VCC */ 34 }; 35 36 37 struct atmarp_entry { 38 struct clip_vcc *vccs; /* active VCCs; NULL if resolution is 39 pending */ 40 unsigned long expires; /* entry expiration time */ 41 struct neighbour *neigh; /* neighbour back-pointer */ 42 }; 43 44 #define PRIV(dev) ((struct clip_priv *) netdev_priv(dev)) 45 46 struct clip_priv { 47 int number; /* for convenience ... */ 48 spinlock_t xoff_lock; /* ensures that pop is atomic (SMP) */ 49 struct net_device *next; /* next CLIP interface */ 50 }; 51 52 #endif 53