br_private_tunnel.h (2382B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Bridge per vlan tunnels 4 * 5 * Authors: 6 * Roopa Prabhu <roopa@cumulusnetworks.com> 7 */ 8 9#ifndef _BR_PRIVATE_TUNNEL_H 10#define _BR_PRIVATE_TUNNEL_H 11 12struct vtunnel_info { 13 u32 tunid; 14 u16 vid; 15 u16 flags; 16}; 17 18/* br_netlink_tunnel.c */ 19int br_parse_vlan_tunnel_info(struct nlattr *attr, 20 struct vtunnel_info *tinfo); 21int br_process_vlan_tunnel_info(const struct net_bridge *br, 22 const struct net_bridge_port *p, 23 int cmd, 24 struct vtunnel_info *tinfo_curr, 25 struct vtunnel_info *tinfo_last, 26 bool *changed); 27int br_get_vlan_tunnel_info_size(struct net_bridge_vlan_group *vg); 28int br_fill_vlan_tunnel_info(struct sk_buff *skb, 29 struct net_bridge_vlan_group *vg); 30 31#ifdef CONFIG_BRIDGE_VLAN_FILTERING 32/* br_vlan_tunnel.c */ 33int vlan_tunnel_init(struct net_bridge_vlan_group *vg); 34void vlan_tunnel_deinit(struct net_bridge_vlan_group *vg); 35int nbp_vlan_tunnel_info_delete(const struct net_bridge_port *port, u16 vid); 36int nbp_vlan_tunnel_info_add(const struct net_bridge_port *port, u16 vid, 37 u32 tun_id); 38void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port); 39void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg, 40 struct net_bridge_vlan *vlan); 41void br_handle_ingress_vlan_tunnel(struct sk_buff *skb, 42 struct net_bridge_port *p, 43 struct net_bridge_vlan_group *vg); 44int br_handle_egress_vlan_tunnel(struct sk_buff *skb, 45 struct net_bridge_vlan *vlan); 46bool vlan_tunid_inrange(const struct net_bridge_vlan *v_curr, 47 const struct net_bridge_vlan *v_last); 48int br_vlan_tunnel_info(const struct net_bridge_port *p, int cmd, 49 u16 vid, u32 tun_id, bool *changed); 50#else 51static inline int vlan_tunnel_init(struct net_bridge_vlan_group *vg) 52{ 53 return 0; 54} 55 56static inline int nbp_vlan_tunnel_info_delete(const struct net_bridge_port *port, 57 u16 vid) 58{ 59 return 0; 60} 61 62static inline int nbp_vlan_tunnel_info_add(const struct net_bridge_port *port, 63 u16 vid, u32 tun_id) 64{ 65 return 0; 66} 67 68static inline void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port) 69{ 70} 71 72static inline void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg, 73 struct net_bridge_vlan *vlan) 74{ 75} 76 77static inline int br_handle_ingress_vlan_tunnel(struct sk_buff *skb, 78 struct net_bridge_port *p, 79 struct net_bridge_vlan_group *vg) 80{ 81 return 0; 82} 83#endif 84 85#endif