Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.5 78 lines 1.6 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us> 4 */ 5 6#ifndef __NET_TC_VLAN_H 7#define __NET_TC_VLAN_H 8 9#include <net/act_api.h> 10#include <linux/tc_act/tc_vlan.h> 11 12struct tcf_vlan_params { 13 int tcfv_action; 14 u16 tcfv_push_vid; 15 __be16 tcfv_push_proto; 16 u8 tcfv_push_prio; 17 struct rcu_head rcu; 18}; 19 20struct tcf_vlan { 21 struct tc_action common; 22 struct tcf_vlan_params __rcu *vlan_p; 23}; 24#define to_vlan(a) ((struct tcf_vlan *)a) 25 26static inline bool is_tcf_vlan(const struct tc_action *a) 27{ 28#ifdef CONFIG_NET_CLS_ACT 29 if (a->ops && a->ops->id == TCA_ID_VLAN) 30 return true; 31#endif 32 return false; 33} 34 35static inline u32 tcf_vlan_action(const struct tc_action *a) 36{ 37 u32 tcfv_action; 38 39 rcu_read_lock(); 40 tcfv_action = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_action; 41 rcu_read_unlock(); 42 43 return tcfv_action; 44} 45 46static inline u16 tcf_vlan_push_vid(const struct tc_action *a) 47{ 48 u16 tcfv_push_vid; 49 50 rcu_read_lock(); 51 tcfv_push_vid = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_vid; 52 rcu_read_unlock(); 53 54 return tcfv_push_vid; 55} 56 57static inline __be16 tcf_vlan_push_proto(const struct tc_action *a) 58{ 59 __be16 tcfv_push_proto; 60 61 rcu_read_lock(); 62 tcfv_push_proto = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_proto; 63 rcu_read_unlock(); 64 65 return tcfv_push_proto; 66} 67 68static inline u8 tcf_vlan_push_prio(const struct tc_action *a) 69{ 70 u8 tcfv_push_prio; 71 72 rcu_read_lock(); 73 tcfv_push_prio = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_prio; 74 rcu_read_unlock(); 75 76 return tcfv_push_prio; 77} 78#endif /* __NET_TC_VLAN_H */