• Eric W. Biederman's avatar
    mpls: Netlink commands to add, remove, and dump routes · 03c05665
    Eric W. Biederman authored
    This change adds two new netlink routing attributes:
    RTA_VIA and RTA_NEWDST.
    
    RTA_VIA specifies the specifies the next machine to send a packet to
    like RTA_GATEWAY.  RTA_VIA differs from RTA_GATEWAY in that it
    includes the address family of the address of the next machine to send
    a packet to.  Currently the MPLS code supports addresses in AF_INET,
    AF_INET6 and AF_PACKET.  For AF_INET and AF_INET6 the destination mac
    address is acquired from the neighbour table.  For AF_PACKET the
    destination mac_address is specified in the netlink configuration.
    
    I think raw destination mac address support with the family AF_PACKET
    will prove useful.  There is MPLS-TP which is defined to operate
    on machines that do not support internet packets of any flavor.  Further
    seem to be corner cases where it can be useful.  At this point
    I don't care much either way.
    
    RTA_NEWDST specifies the destination address to forward the packet
    with.  MPLS typically changes it's destination address at every hop.
    For a swap operation RTA_NEWDST is specified with a length of one label.
    For a push operation RTA_NEWDST is specified with two or more labels.
    For a pop operation RTA_NEWDST is not specified or equivalently an emtpy
    RTAN_NEWDST is specified.
    
    Those new netlink attributes are used to implement handling of rt-netlink
    RTM_NEWROUTE, RTM_DELROUTE, and RTM_GETROUTE messages, to maintain the
    MPLS label table.
    
    rtm_to_route_config parses a netlink RTM_NEWROUTE or RTM_DELROUTE message,
    verify no unhandled attributes or unhandled values are present and sets
    up the data structures for mpls_route_add and mpls_route_del.
    
    I did my best to match up with the existing conventions with the caveats
    that MPLS addresses are all destination-specific-addresses, and so
    don't properly have a scope.
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    03c05665
af_mpls.c 20.4 KB