]> git.baikalelectronics.ru Git - kernel.git/commit
net: ipmr: add support for passing full packet on wrong vif
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Fri, 13 Jul 2018 09:16:43 +0000 (12:16 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Jul 2018 21:21:16 +0000 (14:21 -0700)
commit908f4dec3acca09cce980413a43adad2d65bd773
tree532124740dbc9fba27b1d55bae50d34205cc115f
parentadfcb253eb45bf1baea78eaf44f9675c21e7302b
net: ipmr: add support for passing full packet on wrong vif

This patch adds support for IGMPMSG_WRVIFWHOLE which is used to pass
full packet and real vif id when the incoming interface is wrong.
While the RP and FHR are setting up state we need to be sending the
registers encapsulated with all the data inside otherwise we lose it.
The RP then decapsulates it and forwards it to the interested parties.
Currently with WRONGVIF we can only be sending empty register packets
and will lose that data.
This behaviour can be enabled by using MRT_PIM with
val == IGMPMSG_WRVIFWHOLE. This doesn't prevent IGMPMSG_WRONGVIF from
happening, it happens in addition to it, also it is controlled by the same
throttling parameters as WRONGVIF (i.e. 1 packet per 3 seconds currently).
Both messages are generated to keep backwards compatibily and avoid
breaking someone who was enabling MRT_PIM with val == 4, since any
positive val is accepted and treated the same.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/mroute_base.h
include/uapi/linux/mroute.h
net/ipv4/ipmr.c