16 #include <linux/netdevice.h>
17 #include <linux/if_bridge.h>
22 #define BR_HASH_BITS 8
23 #define BR_HASH_SIZE (1 << BR_HASH_BITS)
25 #define BR_HOLD_TIME (1*HZ)
27 #define BR_PORT_BITS 10
28 #define BR_MAX_PORTS (1<<BR_PORT_BITS)
30 #define BR_VERSION "2.3"
33 #define BR_GROUPFWD_DEFAULT 0
35 #define BR_GROUPFWD_RESTRICTED 0x4007u
38 #define BR_STP_PROG "/sbin/bridge-stp"
59 #if IS_ENABLED(CONFIG_IPV6)
137 #define BR_HAIRPIN_MODE 0x00000001
139 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
140 u32 multicast_startup_queries_sent;
141 unsigned char multicast_router;
152 #ifdef CONFIG_NET_POLL_CONTROLLER
157 #define br_port_exists(dev) (dev->priv_flags & IFF_BRIDGE_PORT)
188 #ifdef CONFIG_BRIDGE_NETFILTER
189 struct rtable fake_rtable;
190 bool nf_call_iptables;
191 bool nf_call_ip6tables;
192 bool nf_call_arptables;
195 #define BR_SET_MAC_ADDR 0x00000001
223 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
224 unsigned char multicast_router;
226 u8 multicast_disabled:1;
227 u8 multicast_querier:1;
232 u32 multicast_last_member_count;
233 u32 multicast_startup_queries_sent;
234 u32 multicast_startup_query_count;
236 unsigned long multicast_last_member_interval;
237 unsigned long multicast_membership_interval;
238 unsigned long multicast_querier_interval;
239 unsigned long multicast_query_interval;
240 unsigned long multicast_query_response_interval;
241 unsigned long multicast_startup_query_interval;
261 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
267 #define BR_INPUT_SKB_CB(__skb) ((struct br_input_skb_cb *)(__skb)->cb)
269 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
270 # define BR_INPUT_SKB_CB_MROUTERS_ONLY(__skb) (BR_INPUT_SKB_CB(__skb)->mrouters_only)
272 # define BR_INPUT_SKB_CB_MROUTERS_ONLY(__skb) (0)
275 #define br_printk(level, br, format, args...) \
276 printk(level "%s: " format, (br)->dev->name, ##args)
278 #define br_err(__br, format, args...) \
279 br_printk(KERN_ERR, __br, format, ##args)
280 #define br_warn(__br, format, args...) \
281 br_printk(KERN_WARNING, __br, format, ##args)
282 #define br_notice(__br, format, args...) \
283 br_printk(KERN_NOTICE, __br, format, ##args)
284 #define br_info(__br, format, args...) \
285 br_printk(KERN_INFO, __br, format, ##args)
287 #define br_debug(br, format, args...) \
288 pr_debug("%s: " format, (br)->dev->name, ##args)
294 static inline int br_is_root_bridge(
const struct net_bridge *br)
304 #ifdef CONFIG_NET_POLL_CONTROLLER
307 return br->
dev->npinfo;
316 netpoll_send_skb(np, skb);
327 static inline void br_netpoll_send_skb(
const struct net_bridge_port *p,
347 const unsigned char *newaddr);
353 const unsigned char *
addr);
356 unsigned long count,
unsigned long off);
359 const unsigned char *
addr);
362 const unsigned char *
addr);
366 const unsigned char *
addr);
369 const unsigned char *
addr,
409 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
433 static inline bool br_multicast_is_router(
struct net_bridge *
br)
435 return br->multicast_router == 2 ||
436 (br->multicast_router == 1 &&
437 timer_pending(&br->multicast_router_timer));
491 static inline bool br_multicast_is_router(
struct net_bridge *
br)
498 #ifdef CONFIG_BRIDGE_NETFILTER
503 #define br_netfilter_init() (0)
504 #define br_netfilter_fini() do { } while(0)
505 #define br_netfilter_rtable_init(x)
531 unsigned long newprio);
547 #if IS_ENABLED(CONFIG_ATM_LANE)
569 #define br_sysfs_addif(p) (0)
570 #define br_sysfs_renameif(p) (0)
571 #define br_sysfs_addbr(dev) (0)
572 #define br_sysfs_delbr(dev) do { } while(0)