br_private_tunnel.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * Bridge per vlan tunnels
  3. *
  4. * Authors:
  5. * Roopa Prabhu <roopa@cumulusnetworks.com>
  6. *
  7. * This program is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU General Public License
  9. * as published by the Free Software Foundation; either version
  10. * 2 of the License, or (at your option) any later version.
  11. */
  12. #ifndef _BR_PRIVATE_TUNNEL_H
  13. #define _BR_PRIVATE_TUNNEL_H
  14. struct vtunnel_info {
  15. u32 tunid;
  16. u16 vid;
  17. u16 flags;
  18. };
  19. /* br_netlink_tunnel.c */
  20. int br_parse_vlan_tunnel_info(struct nlattr *attr,
  21. struct vtunnel_info *tinfo);
  22. int br_process_vlan_tunnel_info(struct net_bridge *br,
  23. struct net_bridge_port *p,
  24. int cmd,
  25. struct vtunnel_info *tinfo_curr,
  26. struct vtunnel_info *tinfo_last);
  27. int br_get_vlan_tunnel_info_size(struct net_bridge_vlan_group *vg);
  28. int br_fill_vlan_tunnel_info(struct sk_buff *skb,
  29. struct net_bridge_vlan_group *vg);
  30. #ifdef CONFIG_BRIDGE_VLAN_FILTERING
  31. /* br_vlan_tunnel.c */
  32. int vlan_tunnel_init(struct net_bridge_vlan_group *vg);
  33. void vlan_tunnel_deinit(struct net_bridge_vlan_group *vg);
  34. int nbp_vlan_tunnel_info_delete(struct net_bridge_port *port, u16 vid);
  35. int nbp_vlan_tunnel_info_add(struct net_bridge_port *port, u16 vid, u32 tun_id);
  36. void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port);
  37. void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg,
  38. struct net_bridge_vlan *vlan);
  39. int br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
  40. struct net_bridge_port *p,
  41. struct net_bridge_vlan_group *vg);
  42. int br_handle_egress_vlan_tunnel(struct sk_buff *skb,
  43. struct net_bridge_vlan *vlan);
  44. #else
  45. static inline int vlan_tunnel_init(struct net_bridge_vlan_group *vg)
  46. {
  47. return 0;
  48. }
  49. static inline int nbp_vlan_tunnel_info_delete(struct net_bridge_port *port,
  50. u16 vid)
  51. {
  52. return 0;
  53. }
  54. static inline int nbp_vlan_tunnel_info_add(struct net_bridge_port *port,
  55. u16 vid, u32 tun_id)
  56. {
  57. return 0;
  58. }
  59. static inline void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port)
  60. {
  61. }
  62. static inline void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg,
  63. struct net_bridge_vlan *vlan)
  64. {
  65. }
  66. static inline int br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
  67. struct net_bridge_port *p,
  68. struct net_bridge_vlan_group *vg)
  69. {
  70. return 0;
  71. }
  72. #endif
  73. #endif