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

net/sched: act_tunnel_key: add support for "don't fragment"

extend "act_tunnel_key" to allow specifying TUNNEL_DONT_FRAGMENT.

Suggested-by: Ilya Maximets <i.maximets@ovn.org>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Davide Caratti and committed by
Jakub Kicinski
2384127e 46e9acb7

+6
+1
include/uapi/linux/tc_act/tc_tunnel_key.h
··· 34 34 */ 35 35 TCA_TUNNEL_KEY_ENC_TOS, /* u8 */ 36 36 TCA_TUNNEL_KEY_ENC_TTL, /* u8 */ 37 + TCA_TUNNEL_KEY_NO_FRAG, /* flag */ 37 38 __TCA_TUNNEL_KEY_MAX, 38 39 }; 39 40
+5
net/sched/act_tunnel_key.c
··· 420 420 nla_get_u8(tb[TCA_TUNNEL_KEY_NO_CSUM])) 421 421 flags &= ~TUNNEL_CSUM; 422 422 423 + if (nla_get_flag(tb[TCA_TUNNEL_KEY_NO_FRAG])) 424 + flags |= TUNNEL_DONT_FRAGMENT; 425 + 423 426 if (tb[TCA_TUNNEL_KEY_ENC_DST_PORT]) 424 427 dst_port = nla_get_be16(tb[TCA_TUNNEL_KEY_ENC_DST_PORT]); 425 428 ··· 750 747 key->tp_dst)) || 751 748 nla_put_u8(skb, TCA_TUNNEL_KEY_NO_CSUM, 752 749 !(key->tun_flags & TUNNEL_CSUM)) || 750 + ((key->tun_flags & TUNNEL_DONT_FRAGMENT) && 751 + nla_put_flag(skb, TCA_TUNNEL_KEY_NO_FRAG)) || 753 752 tunnel_key_opts_dump(skb, info)) 754 753 goto nla_put_failure; 755 754