• David Ahern's avatar
    net: Enable support for VRF with ipv4 multicast · e58e4159
    David Ahern authored
    Enable support for IPv4 multicast:
    - similar to unicast the flow struct is updated to L3 master device
      if relevant prior to calling fib_rules_lookup. The table id is saved
      to the lookup arg so the rule action for ipmr can return the table
      associated with the device.
    
    - ip_mr_forward needs to check for master device mismatch as well
      since the skb->dev is set to it
    
    - allow multicast address on VRF device for Rx by checking for the
      daddr in the VRF device as well as the original ingress device
    
    - on Tx need to drop to __mkroute_output when FIB lookup fails for
      multicast destination address.
    
    - if CONFIG_IP_MROUTE_MULTIPLE_TABLES is enabled VRF driver creates
      IPMR FIB rules on first device create similar to FIB rules. In
      addition the VRF driver does not divert IPv4 multicast packets:
      it breaks on Tx since the fib lookup fails on the mcast address.
    
    With this patch, ipmr forwarding and local rx/tx work.
    Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e58e4159
ipmr.c 67 KB