2014-11-19 14:05:03 +01:00
/*
* Copyright ( c ) 2014 Jiri Pirko < jiri @ resnulli . us >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*/
# ifndef __NET_TC_VLAN_H
# define __NET_TC_VLAN_H
# include <net/act_api.h>
2016-09-22 20:01:41 +03:00
# include <linux/tc_act/tc_vlan.h>
2014-11-19 14:05:03 +01:00
struct tcf_vlan {
2016-07-25 16:09:42 -07:00
struct tc_action common ;
2014-11-19 14:05:03 +01:00
int tcfv_action ;
2014-11-24 11:30:26 +01:00
u16 tcfv_push_vid ;
2014-11-19 14:05:03 +01:00
__be16 tcfv_push_proto ;
2016-08-17 13:36:14 +03:00
u8 tcfv_push_prio ;
2014-11-19 14:05:03 +01:00
} ;
2016-07-25 16:09:41 -07:00
# define to_vlan(a) ((struct tcf_vlan *)a)
2014-11-19 14:05:03 +01:00
2016-09-22 20:01:41 +03:00
static inline bool is_tcf_vlan ( const struct tc_action * a )
{
# ifdef CONFIG_NET_CLS_ACT
if ( a - > ops & & a - > ops - > type = = TCA_ACT_VLAN )
return true ;
# endif
return false ;
}
static inline u32 tcf_vlan_action ( const struct tc_action * a )
{
return to_vlan ( a ) - > tcfv_action ;
}
static inline u16 tcf_vlan_push_vid ( const struct tc_action * a )
{
return to_vlan ( a ) - > tcfv_push_vid ;
}
static inline __be16 tcf_vlan_push_proto ( const struct tc_action * a )
{
return to_vlan ( a ) - > tcfv_push_proto ;
}
2017-03-09 09:25:19 +01:00
static inline u8 tcf_vlan_push_prio ( const struct tc_action * a )
{
return to_vlan ( a ) - > tcfv_push_prio ;
}
2014-11-19 14:05:03 +01:00
# endif /* __NET_TC_VLAN_H */