From: Xin Long <[email protected]>
Date: Sun, 2 Jun 2019 19:10:24 +0800
> With the topo:
>
> h1 ---| rp1 |
> | route rp3 |--- h3 (192.168.200.1)
> h2 ---| rp2 |
>
> If rp1 bc_forwarding is set while rp2 bc_forwarding is not, after
> doing "ping 192.168.200.255" on h1, then ping 192.168.200.255 on
> h2, and the packets can still be forwared.
>
> This issue was caused by the input route cache. It should only do
> the cache for either bc forwarding or local delivery. Otherwise,
> local delivery can use the route cache for bc forwarding of other
> interfaces.
>
> This patch is to fix it by not doing cache for local delivery if
> all.bc_forwarding is enabled.
>
> Note that we don't fix it by checking route cache local flag after
> rt_cache_valid() in "local_input:" and "ip_mkroute_input", as the
> common route code shouldn't be touched for bc_forwarding.
>
> Fixes: 5cbf777cfdf6 ("route: add support for directed broadcast forwarding")
> Reported-by: Jianlin Shi <[email protected]>
> Signed-off-by: Xin Long <[email protected]>
Applied and queued up for -stable.