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 --- |