tc_vlan.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. */
  9. #ifndef __NET_TC_VLAN_H
  10. #define __NET_TC_VLAN_H
  11. #include <net/act_api.h>
  12. #include <linux/tc_act/tc_vlan.h>
  13. #define VLAN_F_POP 0x1
  14. #define VLAN_F_PUSH 0x2
  15. struct tcf_vlan {
  16. struct tc_action common;
  17. int tcfv_action;
  18. u16 tcfv_push_vid;
  19. __be16 tcfv_push_proto;
  20. u8 tcfv_push_prio;
  21. };
  22. #define to_vlan(a) ((struct tcf_vlan *)a)
  23. static inline bool is_tcf_vlan(const struct tc_action *a)
  24. {
  25. #ifdef CONFIG_NET_CLS_ACT
  26. if (a->ops && a->ops->type == TCA_ACT_VLAN)
  27. return true;
  28. #endif
  29. return false;
  30. }
  31. static inline u32 tcf_vlan_action(const struct tc_action *a)
  32. {
  33. return to_vlan(a)->tcfv_action;
  34. }
  35. static inline u16 tcf_vlan_push_vid(const struct tc_action *a)
  36. {
  37. return to_vlan(a)->tcfv_push_vid;
  38. }
  39. static inline __be16 tcf_vlan_push_proto(const struct tc_action *a)
  40. {
  41. return to_vlan(a)->tcfv_push_proto;
  42. }
  43. #endif /* __NET_TC_VLAN_H */