[PATCH libnl 00/11] Add support for MPLS routes and encapsulations

David Ahern dsahern at gmail.com
Fri Jun 30 09:48:47 PDT 2017


This patch set adds support for the MPLS address family (LSP and egress)
and MPLS encapsulations (ingress to LSP).

Patches 1, 2 and 8 update or import header files from the kernel tree.

Patch 3 imports mpls_ntop and mpls_pton from iproute2. These are known
working implementations so no since re-inventing those wheels.

Patch 4 adds support to addr.c for MPLS labels as an nl_addr.

Patch 5 adds support for routes in the MPLS address family. MPLS uses
2 new address attributes - RTA_NEWDST and RTA_VIA - per nexthop.
RTA_NEWDST is the label stack to be applied on a forward and RTA_VIA
is the nexthop for the packet (e.g., an IPv4 or IPv6 address).

Patch 6 adds support for TTL propagation attribute per route. This
attribute sets whether the TTL is propagated on tunnel egress.

Patch 7 adds support for MPLS labels to the commands under src. The
'as' keyword is added as a nexthop option where the value is one or
more labels (NEWDST to attribute). The via keyword is updated to use
RTA_VIA if the route is added or deleted to the MPLS family.

Patch 9 adds support for lwtunnel encapsulation as a generic framework
with Patch 10 adding MPLS encapsulation support.

Patch 11 adds support for MPLS encap to the commands under src

David Ahern (11):
  Update rtnetlink.h from kernel tree
  Import mpls header from kernel tree
  addr: Add implementations for mpls_ntop and mpls_pton
  addr: Add support for AF_MPLS
  route: Add support for MPLS address family
  route: Add support for ttl propagation in MPLS routes
  Add support for label stack in nl-route commands
  Import lwtunnel encap files from kernel
  route: Add support for lwtunnel encapsulations
  route: Add support for MPLS encap
  Add support for mpls encap to libnl commands

 Makefile.am                                   |   5 +-
 include/linux-private/linux/lwtunnel.h        |  69 ++++++++++
 include/linux-private/linux/mpls.h            |  76 +++++++++++
 include/linux-private/linux/mpls_iptunnel.h   |  30 +++++
 include/linux-private/linux/rtnetlink.h       |  18 ++-
 include/netlink-private/route/nexthop-encap.h |  35 +++++
 include/netlink-private/types.h               |  11 ++
 include/netlink/route/mpls.h                  |  15 +++
 include/netlink/route/nexthop.h               |  12 ++
 include/netlink/route/route.h                 |   2 +
 lib/addr.c                                    |  56 ++++++--
 lib/mpls.c                                    | 108 +++++++++++++++
 lib/route/nexthop.c                           | 130 ++++++++++++++++++
 lib/route/nexthop_encap.c                     |  99 ++++++++++++++
 lib/route/nh_encap_mpls.c                     | 134 +++++++++++++++++++
 lib/route/route.c                             |   1 +
 lib/route/route_obj.c                         | 181 ++++++++++++++++++++++++--
 libnl-route-3.sym                             |   6 +
 src/lib/route.c                               |  26 +++-
 19 files changed, 985 insertions(+), 29 deletions(-)
 create mode 100644 include/linux-private/linux/lwtunnel.h
 create mode 100644 include/linux-private/linux/mpls.h
 create mode 100644 include/linux-private/linux/mpls_iptunnel.h
 create mode 100644 include/netlink-private/route/nexthop-encap.h
 create mode 100644 include/netlink/route/mpls.h
 create mode 100644 lib/mpls.c
 create mode 100644 lib/route/nexthop_encap.c
 create mode 100644 lib/route/nh_encap_mpls.c

-- 
2.11.0 (Apple Git-81)




More information about the libnl mailing list