Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  Bridge per vlan tunnels
0004  *
0005  *  Authors:
0006  *  Roopa Prabhu        <roopa@cumulusnetworks.com>
0007  */
0008 
0009 #ifndef _BR_PRIVATE_TUNNEL_H
0010 #define _BR_PRIVATE_TUNNEL_H
0011 
0012 struct vtunnel_info {
0013     u32 tunid;
0014     u16 vid;
0015     u16 flags;
0016 };
0017 
0018 /* br_netlink_tunnel.c */
0019 int br_parse_vlan_tunnel_info(struct nlattr *attr,
0020                   struct vtunnel_info *tinfo);
0021 int br_process_vlan_tunnel_info(const struct net_bridge *br,
0022                 const struct net_bridge_port *p,
0023                 int cmd,
0024                 struct vtunnel_info *tinfo_curr,
0025                 struct vtunnel_info *tinfo_last,
0026                 bool *changed);
0027 int br_get_vlan_tunnel_info_size(struct net_bridge_vlan_group *vg);
0028 int br_fill_vlan_tunnel_info(struct sk_buff *skb,
0029                  struct net_bridge_vlan_group *vg);
0030 
0031 #ifdef CONFIG_BRIDGE_VLAN_FILTERING
0032 /* br_vlan_tunnel.c */
0033 int vlan_tunnel_init(struct net_bridge_vlan_group *vg);
0034 void vlan_tunnel_deinit(struct net_bridge_vlan_group *vg);
0035 int nbp_vlan_tunnel_info_delete(const struct net_bridge_port *port, u16 vid);
0036 int nbp_vlan_tunnel_info_add(const struct net_bridge_port *port, u16 vid,
0037                  u32 tun_id);
0038 void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port);
0039 void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg,
0040               struct net_bridge_vlan *vlan);
0041 void br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
0042                    struct net_bridge_port *p,
0043                    struct net_bridge_vlan_group *vg);
0044 int br_handle_egress_vlan_tunnel(struct sk_buff *skb,
0045                  struct net_bridge_vlan *vlan);
0046 bool vlan_tunid_inrange(const struct net_bridge_vlan *v_curr,
0047             const struct net_bridge_vlan *v_last);
0048 int br_vlan_tunnel_info(const struct net_bridge_port *p, int cmd,
0049             u16 vid, u32 tun_id, bool *changed);
0050 #else
0051 static inline int vlan_tunnel_init(struct net_bridge_vlan_group *vg)
0052 {
0053     return 0;
0054 }
0055 
0056 static inline int nbp_vlan_tunnel_info_delete(const struct net_bridge_port *port,
0057                           u16 vid)
0058 {
0059     return 0;
0060 }
0061 
0062 static inline int nbp_vlan_tunnel_info_add(const struct net_bridge_port *port,
0063                        u16 vid, u32 tun_id)
0064 {
0065     return 0;
0066 }
0067 
0068 static inline void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port)
0069 {
0070 }
0071 
0072 static inline void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg,
0073                     struct net_bridge_vlan *vlan)
0074 {
0075 }
0076 
0077 static inline int br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
0078                         struct net_bridge_port *p,
0079                         struct net_bridge_vlan_group *vg)
0080 {
0081     return 0;
0082 }
0083 #endif
0084 
0085 #endif