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 19struct sk_buff; 20 21struct 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 37struct 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 46struct 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