From: Roopa Prabhu <ro...@cumulusnetworks.com>

This patch adds support for MPLS multipath routes.

Includes following changes to support multipath:
- splits struct mpls_route into 'struct mpls_route + struct mpls_nh'.

- struct mpls_nh represents a mpls nexthop label forwarding entry

- Adds support to parse/fill RTA_MULTIPATH netlink attribute for
multipath routes similar to ipv4/v6 fib

- In the process of restructuring, this patch also consistently changes all
labels to u8

$ip -f mpls route add 100 nexthop as 200 via inet 10.1.1.2 dev swp1 \
                nexthop as 700 via inet 10.1.1.6 dev swp2 \
                nexthop as 800 via inet 40.1.1.2 dev swp3

$ip  -f mpls route show
100 
        nexthop as to 200 via inet 10.1.1.2  dev swp1
        nexthop as to 700 via inet 10.1.1.6  dev swp2
        nexthop as to 800 via inet 40.1.1.2  dev swp3

Roopa Prabhu (1):
  mpls: multipath support

Robert Shearman (1):
  mpls: flow-based multipath selection

Signed-off-by: Roopa Prabhu <ro...@cumulusnetworks.com>
Acked-by: Eric W. Biederman <ebied...@xmission.com>

----
v2:
        - Incorporate some feedback from Robert:
                use dynamic allocation (list) instead of static allocation
                for nexthops
v3:
        - Move back to arrays (same as v1), also suggested by Eric Biederman

v4:
        - address a few comments from Eric Biederman
        Plan to address the following pending comments in incremental patches 
after this
        infrastructure changes go in.
        - Move VIA size to 16 bytes
        - use ipv6 flow label in ecmp calculations
        - dead route handling during multipath route selection (I had planned 
this in
        an incremental patch initially).

v5:
        feedback from Eric Biederman
                - Removed some dead code
        feedback from Robert
                - Moved dev_put into find_outdev to make it clear that we dont 
need
                a hold on the dev because we are under rtnl
                - move the unused variable fix into the correct patch file

v6:
        - fix checkpatch errors
        - Still see one pending checkpatch error "ERROR: Macros with
        complex values should be enclosed in parentheses
        #859: FILE: net/mpls/internal.h:70:
        +#define endfor_nexthops(rt) } "

        I picked this macro from ip_fib.h and there are other places in
        the kernel that define the same macro. See some discussions
        on mailing lists that this could be spurious.

 include/net/mpls_iptunnel.h |   2 +-
 net/mpls/af_mpls.c          | 668 ++++++++++++++++++++++++++++++++++----------
 net/mpls/internal.h         |  57 +++-
 3 files changed, 572 insertions(+), 155 deletions(-)

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to