cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

if_bridge.h (5574B)


      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
     16struct br_ip {
     17	union {
     18		__be32	ip4;
     19#if IS_ENABLED(CONFIG_IPV6)
     20		struct in6_addr ip6;
     21#endif
     22	} src;
     23	union {
     24		__be32	ip4;
     25#if IS_ENABLED(CONFIG_IPV6)
     26		struct in6_addr ip6;
     27#endif
     28		unsigned char	mac_addr[ETH_ALEN];
     29	} dst;
     30	__be16		proto;
     31	__u16           vid;
     32};
     33
     34struct br_ip_list {
     35	struct list_head list;
     36	struct br_ip addr;
     37};
     38
     39#define BR_HAIRPIN_MODE		BIT(0)
     40#define BR_BPDU_GUARD		BIT(1)
     41#define BR_ROOT_BLOCK		BIT(2)
     42#define BR_MULTICAST_FAST_LEAVE	BIT(3)
     43#define BR_ADMIN_COST		BIT(4)
     44#define BR_LEARNING		BIT(5)
     45#define BR_FLOOD		BIT(6)
     46#define BR_AUTO_MASK		(BR_FLOOD | BR_LEARNING)
     47#define BR_PROMISC		BIT(7)
     48#define BR_PROXYARP		BIT(8)
     49#define BR_LEARNING_SYNC	BIT(9)
     50#define BR_PROXYARP_WIFI	BIT(10)
     51#define BR_MCAST_FLOOD		BIT(11)
     52#define BR_MULTICAST_TO_UNICAST	BIT(12)
     53#define BR_VLAN_TUNNEL		BIT(13)
     54#define BR_BCAST_FLOOD		BIT(14)
     55#define BR_NEIGH_SUPPRESS	BIT(15)
     56#define BR_ISOLATED		BIT(16)
     57#define BR_MRP_AWARE		BIT(17)
     58#define BR_MRP_LOST_CONT	BIT(18)
     59#define BR_MRP_LOST_IN_CONT	BIT(19)
     60#define BR_TX_FWD_OFFLOAD	BIT(20)
     61#define BR_PORT_LOCKED		BIT(21)
     62
     63#define BR_DEFAULT_AGEING_TIME	(300 * HZ)
     64
     65struct net_bridge;
     66void brioctl_set(int (*hook)(struct net *net, struct net_bridge *br,
     67			     unsigned int cmd, struct ifreq *ifr,
     68			     void __user *uarg));
     69int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
     70		  struct ifreq *ifr, void __user *uarg);
     71
     72#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
     73int br_multicast_list_adjacent(struct net_device *dev,
     74			       struct list_head *br_ip_list);
     75bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
     76bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
     77bool br_multicast_has_router_adjacent(struct net_device *dev, int proto);
     78bool br_multicast_enabled(const struct net_device *dev);
     79bool br_multicast_router(const struct net_device *dev);
     80#else
     81static inline int br_multicast_list_adjacent(struct net_device *dev,
     82					     struct list_head *br_ip_list)
     83{
     84	return 0;
     85}
     86static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
     87						     int proto)
     88{
     89	return false;
     90}
     91static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
     92						     int proto)
     93{
     94	return false;
     95}
     96
     97static inline bool br_multicast_has_router_adjacent(struct net_device *dev,
     98						    int proto)
     99{
    100	return true;
    101}
    102
    103static inline bool br_multicast_enabled(const struct net_device *dev)
    104{
    105	return false;
    106}
    107static inline bool br_multicast_router(const struct net_device *dev)
    108{
    109	return false;
    110}
    111#endif
    112
    113#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING)
    114bool br_vlan_enabled(const struct net_device *dev);
    115int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid);
    116int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid);
    117int br_vlan_get_proto(const struct net_device *dev, u16 *p_proto);
    118int br_vlan_get_info(const struct net_device *dev, u16 vid,
    119		     struct bridge_vlan_info *p_vinfo);
    120int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid,
    121			 struct bridge_vlan_info *p_vinfo);
    122bool br_mst_enabled(const struct net_device *dev);
    123int br_mst_get_info(const struct net_device *dev, u16 msti, unsigned long *vids);
    124int br_mst_get_state(const struct net_device *dev, u16 msti, u8 *state);
    125#else
    126static inline bool br_vlan_enabled(const struct net_device *dev)
    127{
    128	return false;
    129}
    130
    131static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid)
    132{
    133	return -EINVAL;
    134}
    135
    136static inline int br_vlan_get_proto(const struct net_device *dev, u16 *p_proto)
    137{
    138	return -EINVAL;
    139}
    140
    141static inline int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid)
    142{
    143	return -EINVAL;
    144}
    145
    146static inline int br_vlan_get_info(const struct net_device *dev, u16 vid,
    147				   struct bridge_vlan_info *p_vinfo)
    148{
    149	return -EINVAL;
    150}
    151
    152static inline int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid,
    153				       struct bridge_vlan_info *p_vinfo)
    154{
    155	return -EINVAL;
    156}
    157
    158static inline bool br_mst_enabled(const struct net_device *dev)
    159{
    160	return false;
    161}
    162
    163static inline int br_mst_get_info(const struct net_device *dev, u16 msti,
    164				  unsigned long *vids)
    165{
    166	return -EINVAL;
    167}
    168static inline int br_mst_get_state(const struct net_device *dev, u16 msti,
    169				   u8 *state)
    170{
    171	return -EINVAL;
    172}
    173#endif
    174
    175#if IS_ENABLED(CONFIG_BRIDGE)
    176struct net_device *br_fdb_find_port(const struct net_device *br_dev,
    177				    const unsigned char *addr,
    178				    __u16 vid);
    179void br_fdb_clear_offload(const struct net_device *dev, u16 vid);
    180bool br_port_flag_is_set(const struct net_device *dev, unsigned long flag);
    181u8 br_port_get_stp_state(const struct net_device *dev);
    182clock_t br_get_ageing_time(const struct net_device *br_dev);
    183#else
    184static inline struct net_device *
    185br_fdb_find_port(const struct net_device *br_dev,
    186		 const unsigned char *addr,
    187		 __u16 vid)
    188{
    189	return NULL;
    190}
    191
    192static inline void br_fdb_clear_offload(const struct net_device *dev, u16 vid)
    193{
    194}
    195
    196static inline bool
    197br_port_flag_is_set(const struct net_device *dev, unsigned long flag)
    198{
    199	return false;
    200}
    201
    202static inline u8 br_port_get_stp_state(const struct net_device *dev)
    203{
    204	return BR_STATE_DISABLED;
    205}
    206
    207static inline clock_t br_get_ageing_time(const struct net_device *br_dev)
    208{
    209	return 0;
    210}
    211#endif
    212
    213#endif