mpls: allow TTL propagation to IP packets to be configured
authorRobert Shearman <rshearma@brocade.com>
Fri, 10 Mar 2017 20:43:24 +0000 (20:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Mar 2017 22:29:22 +0000 (15:29 -0700)
commit5b441ac8784c1e7f3c619f14da4c3f52e87348d5
treec35721449202da3758d6ed7c6ec4cee19803352a
parentb66239b6824f387361bf18747a7e93760ac3c0fb
mpls: allow TTL propagation to IP packets to be configured

Provide the ability to control on a per-route basis whether the TTL
value from an MPLS packet is propagated to an IPv4/IPv6 packet when
the last label is popped as per the theoretical model in RFC 3443
through a new route attribute, RTA_TTL_PROPAGATE which can be 0 to
mean disable propagation and 1 to mean enable propagation.

In order to provide the ability to change the behaviour for packets
arriving with IPv4/IPv6 Explicit Null labels and to provide an easy
way for a user to change the behaviour for all existing routes without
having to reprogram them, a global knob is provided. This is done
through the addition of a new per-namespace sysctl,
"net.mpls.ip_ttl_propagate", which defaults to enabled. If the
per-route attribute is set (either enabled or disabled) then it
overrides the global configuration.

Signed-off-by: Robert Shearman <rshearma@brocade.com>
Acked-by: David Ahern <dsa@cumulusnetworks.com>
Tested-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Documentation/networking/mpls-sysctl.txt
include/net/netns/mpls.h
include/uapi/linux/rtnetlink.h
net/mpls/af_mpls.c
net/mpls/internal.h