0001
0002
0003
0004
0005
0006
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
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
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