2008-09-13 03:30:20 +04:00
/*
* Copyright ( c ) 2008 , Intel Corporation .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms and conditions of the GNU General Public License ,
* version 2 , as published by the Free Software Foundation .
*
* This program is distributed in the hope it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for
* more details .
*
* You should have received a copy of the GNU General Public License along with
2013-12-06 21:13:40 +04:00
* this program ; if not , see < http : //www.gnu.org/licenses/>.
2008-09-13 03:30:20 +04:00
*
* Author : Alexander Duyck < alexander . h . duyck @ intel . com >
*/
# ifndef __NET_TC_SKBEDIT_H
# define __NET_TC_SKBEDIT_H
# include <net/act_api.h>
2016-03-08 13:42:32 +03:00
# include <linux/tc_act/tc_skbedit.h>
2008-09-13 03:30:20 +04:00
2018-07-11 17:04:50 +03:00
struct tcf_skbedit_params {
u32 flags ;
u32 priority ;
u32 mark ;
u32 mask ;
u16 queue_mapping ;
u16 ptype ;
struct rcu_head rcu ;
} ;
2008-09-13 03:30:20 +04:00
struct tcf_skbedit {
2018-07-11 17:04:50 +03:00
struct tc_action common ;
struct tcf_skbedit_params __rcu * params ;
2008-09-13 03:30:20 +04:00
} ;
2016-07-26 02:09:41 +03:00
# define to_skbedit(a) ((struct tcf_skbedit *)a)
2008-09-13 03:30:20 +04:00
2016-03-08 13:42:32 +03:00
/* Return true iff action is mark */
static inline bool is_tcf_skbedit_mark ( const struct tc_action * a )
{
# ifdef CONFIG_NET_CLS_ACT
2018-07-11 17:04:50 +03:00
u32 flags ;
if ( a - > ops & & a - > ops - > type = = TCA_ACT_SKBEDIT ) {
rcu_read_lock ( ) ;
flags = rcu_dereference ( to_skbedit ( a ) - > params ) - > flags ;
rcu_read_unlock ( ) ;
return flags = = SKBEDIT_F_MARK ;
}
2016-03-08 13:42:32 +03:00
# endif
return false ;
}
static inline u32 tcf_skbedit_mark ( const struct tc_action * a )
{
2018-07-11 17:04:50 +03:00
u32 mark ;
rcu_read_lock ( ) ;
mark = rcu_dereference ( to_skbedit ( a ) - > params ) - > mark ;
rcu_read_unlock ( ) ;
return mark ;
2016-03-08 13:42:32 +03:00
}
2008-09-13 03:30:20 +04:00
# endif /* __NET_TC_SKBEDIT_H */