linux/include/linux/if_bridge.h
<<
>>
Prefs
   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
   9 *      as published by the Free Software Foundation; either version
  10 *      2 of the License, or (at your option) any later version.
  11 */
  12#ifndef _LINUX_IF_BRIDGE_H
  13#define _LINUX_IF_BRIDGE_H
  14
  15
  16#include <linux/netdevice.h>
  17#include <uapi/linux/if_bridge.h>
  18#include <linux/bitops.h>
  19
  20struct br_ip {
  21        union {
  22                __be32  ip4;
  23#if IS_ENABLED(CONFIG_IPV6)
  24                struct in6_addr ip6;
  25#endif
  26        } u;
  27        __be16          proto;
  28        __u16           vid;
  29};
  30
  31struct br_ip_list {
  32        struct list_head list;
  33        struct br_ip addr;
  34};
  35
  36#define BR_HAIRPIN_MODE         BIT(0)
  37#define BR_BPDU_GUARD           BIT(1)
  38#define BR_ROOT_BLOCK           BIT(2)
  39#define BR_MULTICAST_FAST_LEAVE BIT(3)
  40#define BR_ADMIN_COST           BIT(4)
  41#define BR_LEARNING             BIT(5)
  42#define BR_FLOOD                BIT(6)
  43#define BR_AUTO_MASK            (BR_FLOOD | BR_LEARNING)
  44#define BR_PROMISC              BIT(7)
  45#define BR_PROXYARP             BIT(8)
  46#define BR_LEARNING_SYNC        BIT(9)
  47#define BR_PROXYARP_WIFI        BIT(10)
  48#define BR_MCAST_FLOOD          BIT(11)
  49
  50#define BR_DEFAULT_AGEING_TIME  (300 * HZ)
  51
  52extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
  53
  54typedef int br_should_route_hook_t(struct sk_buff *skb);
  55extern br_should_route_hook_t __rcu *br_should_route_hook;
  56
  57#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
  58int br_multicast_list_adjacent(struct net_device *dev,
  59                               struct list_head *br_ip_list);
  60bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
  61bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
  62#else
  63static inline int br_multicast_list_adjacent(struct net_device *dev,
  64                                             struct list_head *br_ip_list)
  65{
  66        return 0;
  67}
  68static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
  69                                                     int proto)
  70{
  71        return false;
  72}
  73static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
  74                                                     int proto)
  75{
  76        return false;
  77}
  78#endif
  79
  80#endif
  81