diff options
| author | David S. Miller <davem@davemloft.net> | 2015-03-04 00:26:13 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-04 00:26:13 -0500 |
| commit | 27db730c4f5ed524235b06523f2dae4961d3aa98 (patch) | |
| tree | 2c0562994dc0ee616aabef727064120cf615f356 /include/uapi/linux | |
| parent | ee23393b40062362feb220b32629624c1d3c402c (diff) | |
| parent | 8de147dc8e2adea82b8a1a2a08fcc983330f6770 (diff) | |
Merge branch 'basic-mpls-support'
Eric W. Biederman says:
====================
Basic MPLS support take 2
On top of my two pending neighbour table prep patches here is the mpls
support refactored to use them, and edited to not drop routes when
an interface goes down. Additionally the addition of RTA_LLGATEWAY
has been replaced with the addtion of RTA_VIA. RTA_VIA being an
attribute that includes the address family as well as the address
of the next hop.
MPLS is at it's heart simple and I have endeavoured to maintain that
simplicity in my implemenation.
This is an implementation of a RFC3032 forwarding engine, and basic MPLS
egress logic. Which should make linux sufficient to be a mpls
forwarding node or to be a LSA (Label Switched Router) as it says in all
of the MPLS documents. The ingress support will follow but it deserves
it's own discussion so I am pushing it separately.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/rtnetlink.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h index 5cc5d66bf519..06f75a407f74 100644 --- a/include/uapi/linux/rtnetlink.h +++ b/include/uapi/linux/rtnetlink.h @@ -303,6 +303,8 @@ enum rtattr_type_t { RTA_TABLE, RTA_MARK, RTA_MFC_STATS, + RTA_VIA, + RTA_NEWDST, __RTA_MAX }; @@ -344,6 +346,12 @@ struct rtnexthop { #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len)) #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0))) +/* RTA_VIA */ +struct rtvia { + __kernel_sa_family_t rtvia_family; + __u8 rtvia_addr[0]; +}; + /* RTM_CACHEINFO */ struct rta_cacheinfo { @@ -623,6 +631,8 @@ enum rtnetlink_groups { #define RTNLGRP_IPV6_NETCONF RTNLGRP_IPV6_NETCONF RTNLGRP_MDB, #define RTNLGRP_MDB RTNLGRP_MDB + RTNLGRP_MPLS_ROUTE, +#define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE __RTNLGRP_MAX }; #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) |
