]> git.proxmox.com Git - mirror_iproute2.git/commit
m_mpls: add mac_push action
authorGuillaume Nault <gnault@redhat.com>
Mon, 19 Oct 2020 15:23:08 +0000 (17:23 +0200)
committerDavid Ahern <dsahern@gmail.com>
Tue, 20 Oct 2020 14:57:08 +0000 (08:57 -0600)
commit02a261b5ba1c8580ac2a35bc6c87faa2ec9f5c96
treef4ea7bf1def9b543094bfa5a38d65585c867bae0
parentd61167dd88b45832843b1458cd156f3b85c8ff16
m_mpls: add mac_push action

Add support for the new TCA_MPLS_ACT_MAC_PUSH action (kernel commit
a45294af9e96 ("net/sched: act_mpls: Add action to push MPLS LSE before
Ethernet header")). This action let TC push an MPLS header before the
MAC header of a frame.

Example (encapsulate all outgoing frames with label 20, then add an
outer Ethernet header):
 # tc filter add dev ethX matchall \
       action mpls mac_push label 20 ttl 64 \
       action vlan push_eth dst_mac 0a:00:00:00:00:02 \
                            src_mac 0a:00:00:00:00:01

This patch also adds an alias for ETH_P_TEB, since it is useful when
decapsulating MPLS packets that contain an Ethernet frame.

With MAC_PUSH, there's no previous Ethertype to modify. However, the
"protocol" option is still needed, because the kernel uses it to set
skb->protocol. So rename can_modify_ethtype() to can_set_ethtype().

Also add a test suite for m_mpls, which covers the new action and the
pre-existing ones.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
lib/ll_proto.c
man/man8/tc-mpls.8
man/man8/tc-vlan.8
tc/m_mpls.c
testsuite/tests/tc/mpls.t [new file with mode: 0755]