route: add support for directed broadcast forwarding
authorXin Long <lucien.xin@gmail.com>
Fri, 27 Jul 2018 08:37:28 +0000 (16:37 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Jul 2018 19:37:06 +0000 (12:37 -0700)
commit5cbf777cfdf6e5a7b7149006e4881a255da78fdd
treeae012b8fd609fdc7768819f156aa397a12611619
parentd0c1f01138c4b7e532889474e3f2a485546d7270
route: add support for directed broadcast forwarding

This patch implements the feature described in rfc1812#section-5.3.5.2
and rfc2644. It allows the router to forward directed broadcast when
sysctl bc_forwarding is enabled.

Note that this feature could be done by iptables -j TEE, but it would
cause some problems:
  - target TEE's gateway param has to be set with a specific address,
    and it's not flexible especially when the route wants forward all
    directed broadcasts.
  - this duplicates the directed broadcasts so this may cause side
    effects to applications.

Besides, to keep consistent with other os router like BSD, it's also
necessary to implement it in the route rx path.

Note that route cache needs to be flushed when bc_forwarding is
changed.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/inetdevice.h
include/uapi/linux/ip.h
include/uapi/linux/netconf.h
net/ipv4/devinet.c
net/ipv4/route.c