Release 4.18 include/linux/if_bridge.h
/*
* Linux ethernet bridge
*
* Authors:
* Lennert Buytenhek <buytenh@gnu.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#ifndef _LINUX_IF_BRIDGE_H
#define _LINUX_IF_BRIDGE_H
#include <linux/netdevice.h>
#include <uapi/linux/if_bridge.h>
#include <linux/bitops.h>
struct br_ip {
union {
__be32 ip4;
#if IS_ENABLED(CONFIG_IPV6)
struct in6_addr ip6;
#endif
} u;
__be16 proto;
__u16 vid;
};
struct br_ip_list {
struct list_head list;
struct br_ip addr;
};
#define BR_HAIRPIN_MODE BIT(0)
#define BR_BPDU_GUARD BIT(1)
#define BR_ROOT_BLOCK BIT(2)
#define BR_MULTICAST_FAST_LEAVE BIT(3)
#define BR_ADMIN_COST BIT(4)
#define BR_LEARNING BIT(5)
#define BR_FLOOD BIT(6)
#define BR_AUTO_MASK (BR_FLOOD | BR_LEARNING)
#define BR_PROMISC BIT(7)
#define BR_PROXYARP BIT(8)
#define BR_LEARNING_SYNC BIT(9)
#define BR_PROXYARP_WIFI BIT(10)
#define BR_MCAST_FLOOD BIT(11)
#define BR_MULTICAST_TO_UNICAST BIT(12)
#define BR_VLAN_TUNNEL BIT(13)
#define BR_BCAST_FLOOD BIT(14)
#define BR_NEIGH_SUPPRESS BIT(15)
#define BR_ISOLATED BIT(16)
#define BR_DEFAULT_AGEING_TIME (300 * HZ)
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
typedef int br_should_route_hook_t(struct sk_buff *skb);
extern br_should_route_hook_t __rcu *br_should_route_hook;
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
int br_multicast_list_adjacent(struct net_device *dev,
struct list_head *br_ip_list);
bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
bool br_multicast_enabled(const struct net_device *dev);
bool br_multicast_router(const struct net_device *dev);
#else
static inline int br_multicast_list_adjacent(struct net_device *dev,
struct list_head *br_ip_list)
{
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Linus Lüssing | 20 | 100.00% | 1 | 100.00% |
Total | 20 | 100.00% | 1 | 100.00% |
static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
int proto)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Linus Lüssing | 18 | 100.00% | 1 | 100.00% |
Total | 18 | 100.00% | 1 | 100.00% |
static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
int proto)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Linus Lüssing | 18 | 100.00% | 1 | 100.00% |
Total | 18 | 100.00% | 1 | 100.00% |
static inline bool br_multicast_enabled(const struct net_device *dev)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Yotam Gigi | 11 | 68.75% | 1 | 50.00% |
Ido Schimmel | 5 | 31.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline bool br_multicast_router(const struct net_device *dev)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Ido Schimmel | 11 | 68.75% | 1 | 50.00% |
Yotam Gigi | 5 | 31.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
#endif
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING)
bool br_vlan_enabled(const struct net_device *dev);
int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid);
int br_vlan_get_info(const struct net_device *dev, u16 vid,
struct bridge_vlan_info *p_vinfo);
#else
static inline bool br_vlan_enabled(const struct net_device *dev)
{
return false;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Ido Schimmel | 16 | 100.00% | 1 | 100.00% |
Total | 16 | 100.00% | 1 | 100.00% |
static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid)
{
return -EINVAL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Petr Machata | 20 | 95.24% | 1 | 50.00% |
Arnd Bergmann | 1 | 4.76% | 1 | 50.00% |
Total | 21 | 100.00% | 2 | 100.00% |
static inline int br_vlan_get_info(const struct net_device *dev, u16 vid,
struct bridge_vlan_info *p_vinfo)
{
return -EINVAL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Petr Machata | 24 | 96.00% | 1 | 50.00% |
Arnd Bergmann | 1 | 4.00% | 1 | 50.00% |
Total | 25 | 100.00% | 2 | 100.00% |
#endif
#if IS_ENABLED(CONFIG_BRIDGE)
struct net_device *br_fdb_find_port(const struct net_device *br_dev,
const unsigned char *addr,
__u16 vid);
#else
static inline struct net_device *
br_fdb_find_port(const struct net_device *br_dev,
const unsigned char *addr,
__u16 vid)
{
return NULL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Petr Machata | 27 | 100.00% | 1 | 100.00% |
Total | 27 | 100.00% | 1 | 100.00% |
#endif
#endif
Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Linus Lüssing | 153 | 29.71% | 4 | 13.79% |
Petr Machata | 134 | 26.02% | 1 | 3.45% |
Ido Schimmel | 67 | 13.01% | 2 | 6.90% |
Scott Feldman | 51 | 9.90% | 3 | 10.34% |
Yotam Gigi | 26 | 5.05% | 1 | 3.45% |
Linus Torvalds (pre-git) | 21 | 4.08% | 1 | 3.45% |
Nikolay Aleksandrov | 8 | 1.55% | 2 | 6.90% |
Roopa Prabhu | 8 | 1.55% | 2 | 6.90% |
Eric Dumazet | 8 | 1.55% | 1 | 3.45% |
Stephen Hemminger | 7 | 1.36% | 2 | 6.90% |
Bart De Schuymer | 7 | 1.36% | 1 | 3.45% |
Felix Fietkau | 4 | 0.78% | 1 | 3.45% |
Mike Manning | 4 | 0.78% | 1 | 3.45% |
Eric W. Biedermann | 4 | 0.78% | 1 | 3.45% |
Jouni Malinen | 4 | 0.78% | 1 | 3.45% |
Al Viro | 3 | 0.58% | 1 | 3.45% |
David Howells | 2 | 0.39% | 1 | 3.45% |
Arnd Bergmann | 2 | 0.39% | 1 | 3.45% |
Herbert Xu | 1 | 0.19% | 1 | 3.45% |
Adrian Bunk | 1 | 0.19% | 1 | 3.45% |
Florian Westphal | | 0.00% | 0 | 0.00% |
Total | 515 | 100.00% | 29 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.