TCA_VLAN_ACT_MODIFY allows one to change an existing tag. It accepts same attributes as TCA_VLAN_ACT_PUSH (protocol, id, priority). If packet is vlan tagged, then the tag gets overwritten according to user specified attributes.
For example, this allows user to replace a tag's vid while preserving its priority bits (as opposed to "action vlan pop pipe action vlan push"). Shmulik Ladkani (2): net: skbuff: Export __skb_vlan_pop net/sched: act_vlan: Introduce TCA_VLAN_ACT_MODIFY vlan action include/linux/skbuff.h | 1 + include/uapi/linux/tc_act/tc_vlan.h | 1 + net/core/skbuff.c | 7 +++++-- net/sched/act_vlan.c | 29 ++++++++++++++++++++++++++++- 4 files changed, 35 insertions(+), 3 deletions(-) -- 2.7.4