Commit efce49df authored by wenxu's avatar wenxu Committed by Pablo Neira Ayuso
Browse files

netfilter: flowtable: add vlan pop action offload support



This patch adds vlan pop action offload in the flowtable offload.

Signed-off-by: default avatarwenxu <wenxu@ucloud.cn>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 3e1b0c16
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -619,6 +619,7 @@ nf_flow_rule_route_common(struct net *net, const struct flow_offload *flow,
			  struct nf_flow_rule *flow_rule)
{
	const struct flow_offload_tuple *other_tuple;
	const struct flow_offload_tuple *tuple;
	int i;

	flow_offload_decap_tunnel(flow, dir, flow_rule);
@@ -628,6 +629,20 @@ nf_flow_rule_route_common(struct net *net, const struct flow_offload *flow,
	    flow_offload_eth_dst(net, flow, dir, flow_rule) < 0)
		return -1;

	tuple = &flow->tuplehash[dir].tuple;

	for (i = 0; i < tuple->encap_num; i++) {
		struct flow_action_entry *entry;

		if (tuple->in_vlan_ingress & BIT(i))
			continue;

		if (tuple->encap[i].proto == htons(ETH_P_8021Q)) {
			entry = flow_action_entry_next(flow_rule);
			entry->id = FLOW_ACTION_VLAN_POP;
		}
	}

	other_tuple = &flow->tuplehash[!dir].tuple;

	for (i = 0; i < other_tuple->encap_num; i++) {