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
  49#define BR_DEFAULT_AGEING_TIME  (300 * HZ)
  50
  51extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
  52
  53typedef int br_should_route_hook_t(struct sk_buff *skb);
  54extern br_should_route_hook_t __rcu *br_should_route_hook;
  55
  56#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
  57int br_multicast_list_adjacent(struct net_device *dev,
  58                               struct list_head *br_ip_list);
  59bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
  60bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
  61#else
  62static inline int br_multicast_list_adjacent(struct net_device *dev,
  63                                             struct list_head *br_ip_list)
  64{
  65        return 0;
  66}
  67static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
  68                                                     int proto)
  69{
  70        return false;
  71}
  72static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
  73                                                     int proto)
  74{
  75        return false;
  76}
  77#endif
  78
  79#endif
  80