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