root/include/linux/if_bridge.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. br_multicast_list_adjacent
  2. br_multicast_has_querier_anywhere
  3. br_multicast_has_querier_adjacent
  4. br_multicast_enabled
  5. br_multicast_router
  6. br_vlan_enabled
  7. br_vlan_get_pvid
  8. br_vlan_get_proto
  9. br_vlan_get_pvid_rcu
  10. br_vlan_get_info
  11. br_fdb_find_port
  12. br_fdb_clear_offload
  13. br_port_flag_is_set

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  *      Linux ethernet bridge
   4  *
   5  *      Authors:
   6  *      Lennert Buytenhek               <buytenh@gnu.org>
   7  */
   8 #ifndef _LINUX_IF_BRIDGE_H
   9 #define _LINUX_IF_BRIDGE_H
  10 
  11 
  12 #include <linux/netdevice.h>
  13 #include <uapi/linux/if_bridge.h>
  14 #include <linux/bitops.h>
  15 
  16 struct br_ip {
  17         union {
  18                 __be32  ip4;
  19 #if IS_ENABLED(CONFIG_IPV6)
  20                 struct in6_addr ip6;
  21 #endif
  22         } u;
  23         __be16          proto;
  24         __u16           vid;
  25 };
  26 
  27 struct br_ip_list {
  28         struct list_head list;
  29         struct br_ip addr;
  30 };
  31 
  32 #define BR_HAIRPIN_MODE         BIT(0)
  33 #define BR_BPDU_GUARD           BIT(1)
  34 #define BR_ROOT_BLOCK           BIT(2)
  35 #define BR_MULTICAST_FAST_LEAVE BIT(3)
  36 #define BR_ADMIN_COST           BIT(4)
  37 #define BR_LEARNING             BIT(5)
  38 #define BR_FLOOD                BIT(6)
  39 #define BR_AUTO_MASK            (BR_FLOOD | BR_LEARNING)
  40 #define BR_PROMISC              BIT(7)
  41 #define BR_PROXYARP             BIT(8)
  42 #define BR_LEARNING_SYNC        BIT(9)
  43 #define BR_PROXYARP_WIFI        BIT(10)
  44 #define BR_MCAST_FLOOD          BIT(11)
  45 #define BR_MULTICAST_TO_UNICAST BIT(12)
  46 #define BR_VLAN_TUNNEL          BIT(13)
  47 #define BR_BCAST_FLOOD          BIT(14)
  48 #define BR_NEIGH_SUPPRESS       BIT(15)
  49 #define BR_ISOLATED             BIT(16)
  50 
  51 #define BR_DEFAULT_AGEING_TIME  (300 * HZ)
  52 
  53 extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
  54 
  55 #if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
  56 int br_multicast_list_adjacent(struct net_device *dev,
  57                                struct list_head *br_ip_list);
  58 bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
  59 bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
  60 bool br_multicast_enabled(const struct net_device *dev);
  61 bool br_multicast_router(const struct net_device *dev);
  62 #else
  63 static inline int br_multicast_list_adjacent(struct net_device *dev,
  64                                              struct list_head *br_ip_list)
  65 {
  66         return 0;
  67 }
  68 static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
  69                                                      int proto)
  70 {
  71         return false;
  72 }
  73 static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
  74                                                      int proto)
  75 {
  76         return false;
  77 }
  78 static inline bool br_multicast_enabled(const struct net_device *dev)
  79 {
  80         return false;
  81 }
  82 static inline bool br_multicast_router(const struct net_device *dev)
  83 {
  84         return false;
  85 }
  86 #endif
  87 
  88 #if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING)
  89 bool br_vlan_enabled(const struct net_device *dev);
  90 int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid);
  91 int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid);
  92 int br_vlan_get_proto(const struct net_device *dev, u16 *p_proto);
  93 int br_vlan_get_info(const struct net_device *dev, u16 vid,
  94                      struct bridge_vlan_info *p_vinfo);
  95 #else
  96 static inline bool br_vlan_enabled(const struct net_device *dev)
  97 {
  98         return false;
  99 }
 100 
 101 static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid)
 102 {
 103         return -EINVAL;
 104 }
 105 
 106 static inline int br_vlan_get_proto(const struct net_device *dev, u16 *p_proto)
 107 {
 108         return -EINVAL;
 109 }
 110 
 111 static inline int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid)
 112 {
 113         return -EINVAL;
 114 }
 115 
 116 static inline int br_vlan_get_info(const struct net_device *dev, u16 vid,
 117                                    struct bridge_vlan_info *p_vinfo)
 118 {
 119         return -EINVAL;
 120 }
 121 #endif
 122 
 123 #if IS_ENABLED(CONFIG_BRIDGE)
 124 struct net_device *br_fdb_find_port(const struct net_device *br_dev,
 125                                     const unsigned char *addr,
 126                                     __u16 vid);
 127 void br_fdb_clear_offload(const struct net_device *dev, u16 vid);
 128 bool br_port_flag_is_set(const struct net_device *dev, unsigned long flag);
 129 #else
 130 static inline struct net_device *
 131 br_fdb_find_port(const struct net_device *br_dev,
 132                  const unsigned char *addr,
 133                  __u16 vid)
 134 {
 135         return NULL;
 136 }
 137 
 138 static inline void br_fdb_clear_offload(const struct net_device *dev, u16 vid)
 139 {
 140 }
 141 
 142 static inline bool
 143 br_port_flag_is_set(const struct net_device *dev, unsigned long flag)
 144 {
 145         return false;
 146 }
 147 #endif
 148 
 149 #endif

/* [<][>][^][v][top][bottom][index][help] */