• Eyal Birger's avatar
    xfrm: lwtunnel: add lwtunnel support for xfrm interfaces in collect_md mode · 2c2493b9
    Eyal Birger authored
    Allow specifying the xfrm interface if_id and link as part of a route
    metadata using the lwtunnel infrastructure.
    
    This allows for example using a single xfrm interface in collect_md
    mode as the target of multiple routes each specifying a different if_id.
    
    With the appropriate changes to iproute2, considering an xfrm device
    ipsec1 in collect_md mode one can for example add a route specifying
    an if_id like so:
    
    ip route add <SUBNET> dev ipsec1 encap xfrm if_id 1
    
    In which case traffic routed to the device via this route would use
    if_id in the xfrm interface policy lookup.
    
    Or in the context of vrf, one can also specify the "link" property:
    
    ip route add <SUBNET> dev ipsec1 encap xfrm if_id 1 link_dev eth15
    
    Note: LWT_XFRM_LINK uses NLA_U32 similar to IFLA_XFRM_LINK even though
    internally "link" is signed. This is consistent with other _LINK
    attributes in other devices as well as in bpf and should not have an
    effect as device indexes can't be negative.
    Reviewed-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: default avatarEyal Birger <eyal.birger@gmail.com>
    Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
    2c2493b9
xfrm_interface.c 27.1 KB