br_private.h (b33084be192ee1e347d98bb5c9e38a53d98d35e2) br_private.h (eb1d16414339a6e113d89e2cca2556005d7ce919)
1/*
2 * Linux ethernet bridge
3 *
4 * Authors:
5 * Lennert Buytenhek <buytenh@gnu.org>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License

--- 43 unchanged lines hidden (view full) ---

52
53 struct rcu_head rcu;
54 unsigned long ageing_timer;
55 mac_addr addr;
56 unsigned char is_local;
57 unsigned char is_static;
58};
59
1/*
2 * Linux ethernet bridge
3 *
4 * Authors:
5 * Lennert Buytenhek <buytenh@gnu.org>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License

--- 43 unchanged lines hidden (view full) ---

52
53 struct rcu_head rcu;
54 unsigned long ageing_timer;
55 mac_addr addr;
56 unsigned char is_local;
57 unsigned char is_static;
58};
59
60struct net_bridge_port_group {
61 struct net_bridge_port *port;
62 struct net_bridge_port_group *next;
63 struct hlist_node mglist;
64 struct rcu_head rcu;
65 struct timer_list timer;
66 struct timer_list query_timer;
67 __be32 addr;
68 u32 queries_sent;
69};
70
71struct net_bridge_mdb_entry
72{
73 struct hlist_node hlist[2];
74 struct hlist_node mglist;
75 struct net_bridge *br;
76 struct net_bridge_port_group *ports;
77 struct rcu_head rcu;
78 struct timer_list timer;
79 struct timer_list query_timer;
80 __be32 addr;
81 u32 queries_sent;
82};
83
84struct net_bridge_mdb_htable
85{
86 struct hlist_head *mhash;
87 struct rcu_head rcu;
88 struct net_bridge_mdb_htable *old;
89 u32 size;
90 u32 max;
91 u32 secret;
92 u32 ver;
93};
94
60struct net_bridge_port
61{
62 struct net_bridge *br;
63 struct net_device *dev;
64 struct list_head list;
65
66 /* STP */
67 u8 priority;

--- 11 unchanged lines hidden (view full) ---

79 struct timer_list forward_delay_timer;
80 struct timer_list hold_timer;
81 struct timer_list message_age_timer;
82 struct kobject kobj;
83 struct rcu_head rcu;
84
85 unsigned long flags;
86#define BR_HAIRPIN_MODE 0x00000001
95struct net_bridge_port
96{
97 struct net_bridge *br;
98 struct net_device *dev;
99 struct list_head list;
100
101 /* STP */
102 u8 priority;

--- 11 unchanged lines hidden (view full) ---

114 struct timer_list forward_delay_timer;
115 struct timer_list hold_timer;
116 struct timer_list message_age_timer;
117 struct kobject kobj;
118 struct rcu_head rcu;
119
120 unsigned long flags;
121#define BR_HAIRPIN_MODE 0x00000001
122
123#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
124 u32 multicast_startup_queries_sent;
125 unsigned char multicast_router;
126 struct timer_list multicast_router_timer;
127 struct timer_list multicast_query_timer;
128 struct hlist_head mglist;
129 struct hlist_node rlist;
130#endif
87};
88
89struct net_bridge
90{
91 spinlock_t lock;
92 struct list_head port_list;
93 struct net_device *dev;
94 spinlock_t hash_lock;

--- 24 unchanged lines hidden (view full) ---

119 BR_NO_STP, /* no spanning tree */
120 BR_KERNEL_STP, /* old STP in kernel */
121 BR_USER_STP, /* new RSTP in userspace */
122 } stp_enabled;
123
124 unsigned char topology_change;
125 unsigned char topology_change_detected;
126
131};
132
133struct net_bridge
134{
135 spinlock_t lock;
136 struct list_head port_list;
137 struct net_device *dev;
138 spinlock_t hash_lock;

--- 24 unchanged lines hidden (view full) ---

163 BR_NO_STP, /* no spanning tree */
164 BR_KERNEL_STP, /* old STP in kernel */
165 BR_USER_STP, /* new RSTP in userspace */
166 } stp_enabled;
167
168 unsigned char topology_change;
169 unsigned char topology_change_detected;
170
171#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
172 unsigned char multicast_router;
173
174 u8 multicast_disabled:1;
175
176 u32 hash_elasticity;
177 u32 hash_max;
178
179 u32 multicast_last_member_count;
180 u32 multicast_startup_queries_sent;
181 u32 multicast_startup_query_count;
182
183 unsigned long multicast_last_member_interval;
184 unsigned long multicast_membership_interval;
185 unsigned long multicast_querier_interval;
186 unsigned long multicast_query_interval;
187 unsigned long multicast_query_response_interval;
188 unsigned long multicast_startup_query_interval;
189
190 spinlock_t multicast_lock;
191 struct net_bridge_mdb_htable *mdb;
192 struct hlist_head router_list;
193 struct hlist_head mglist;
194
195 struct timer_list multicast_router_timer;
196 struct timer_list multicast_querier_timer;
197 struct timer_list multicast_query_timer;
198#endif
199
127 struct timer_list hello_timer;
128 struct timer_list tcn_timer;
129 struct timer_list topology_change_timer;
130 struct timer_list gc_timer;
131 struct kobject *ifobj;
132};
133
134struct br_input_skb_cb {
135 struct net_device *brdev;
200 struct timer_list hello_timer;
201 struct timer_list tcn_timer;
202 struct timer_list topology_change_timer;
203 struct timer_list gc_timer;
204 struct kobject *ifobj;
205};
206
207struct br_input_skb_cb {
208 struct net_device *brdev;
209 int igmp;
210 int mrouters_only;
136};
137
138#define BR_INPUT_SKB_CB(__skb) ((struct br_input_skb_cb *)(__skb)->cb)
139
140extern struct notifier_block br_device_notifier;
141extern const u8 br_group_address[ETH_ALEN];
142
143/* called under bridge lock */

--- 55 unchanged lines hidden (view full) ---

199extern int br_handle_frame_finish(struct sk_buff *skb);
200extern struct sk_buff *br_handle_frame(struct net_bridge_port *p,
201 struct sk_buff *skb);
202
203/* br_ioctl.c */
204extern int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
205extern int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __user *arg);
206
211};
212
213#define BR_INPUT_SKB_CB(__skb) ((struct br_input_skb_cb *)(__skb)->cb)
214
215extern struct notifier_block br_device_notifier;
216extern const u8 br_group_address[ETH_ALEN];
217
218/* called under bridge lock */

--- 55 unchanged lines hidden (view full) ---

274extern int br_handle_frame_finish(struct sk_buff *skb);
275extern struct sk_buff *br_handle_frame(struct net_bridge_port *p,
276 struct sk_buff *skb);
277
278/* br_ioctl.c */
279extern int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
280extern int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __user *arg);
281
282/* br_multicast.c */
283#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
284extern int br_multicast_rcv(struct net_bridge *br,
285 struct net_bridge_port *port,
286 struct sk_buff *skb);
287extern struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br,
288 struct sk_buff *skb);
289extern void br_multicast_add_port(struct net_bridge_port *port);
290extern void br_multicast_del_port(struct net_bridge_port *port);
291extern void br_multicast_enable_port(struct net_bridge_port *port);
292extern void br_multicast_disable_port(struct net_bridge_port *port);
293extern void br_multicast_init(struct net_bridge *br);
294extern void br_multicast_open(struct net_bridge *br);
295extern void br_multicast_stop(struct net_bridge *br);
296#else
297static inline int br_multicast_rcv(struct net_bridge *br,
298 struct net_bridge_port *port,
299 struct sk_buff *skb)
300{
301 return 0;
302}
303
304static inline struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br,
305 struct sk_buff *skb)
306{
307 return NULL;
308}
309
310static inline void br_multicast_add_port(struct net_bridge_port *port)
311{
312}
313
314static inline void br_multicast_del_port(struct net_bridge_port *port)
315{
316}
317
318static inline void br_multicast_enable_port(struct net_bridge_port *port)
319{
320}
321
322static inline void br_multicast_disable_port(struct net_bridge_port *port)
323{
324}
325
326static inline void br_multicast_init(struct net_bridge *br)
327{
328}
329
330static inline void br_multicast_open(struct net_bridge *br)
331{
332}
333
334static inline void br_multicast_stop(struct net_bridge *br)
335{
336}
337#endif
338
339static inline bool br_multicast_is_router(struct net_bridge *br)
340{
341 return br->multicast_router == 2 ||
342 (br->multicast_router == 1 &&
343 timer_pending(&br->multicast_router_timer));
344}
345
207/* br_netfilter.c */
208#ifdef CONFIG_BRIDGE_NETFILTER
209extern int br_netfilter_init(void);
210extern void br_netfilter_fini(void);
211extern void br_netfilter_rtable_init(struct net_bridge *);
212#else
213#define br_netfilter_init() (0)
214#define br_netfilter_fini() do { } while(0)

--- 63 unchanged lines hidden ---
346/* br_netfilter.c */
347#ifdef CONFIG_BRIDGE_NETFILTER
348extern int br_netfilter_init(void);
349extern void br_netfilter_fini(void);
350extern void br_netfilter_rtable_init(struct net_bridge *);
351#else
352#define br_netfilter_init() (0)
353#define br_netfilter_fini() do { } while(0)

--- 63 unchanged lines hidden ---