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