From 8c6a4d8c1acdee3dd2cc3c7460610efd05246801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Linus=20L=C3=BCssing?= Date: Thu, 15 Nov 2018 01:44:07 +0100 Subject: [PATCH] gluon-mesh-batman-adv: unify IPv4 and IPv6 local-node route behavior MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just as was done for IPv6 previously, use the new, separate table for IPv4 local-node, too. This ensures that we will always only use the source MAC of the local-node interface if the packet originated from us (locally generated, not routed) and matches our local-node IPv4 or IPv6 address. Signed-off-by: Linus Lüssing --- .../gluon/upgrade/310-gluon-client-bridge-local-node | 3 +-- .../upgrade/320-gluon-mesh-batman-adv-client-bridge | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node b/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node index 824d8d40..4b51db0c 100755 --- a/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node +++ b/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node @@ -23,8 +23,7 @@ uci:section('network', 'device', 'local_node_dev', { local ip4, ip6 if next_node.ip4 then - local plen = site.prefix4():match('/%d+$') - ip4 = next_node.ip4 .. plen + ip4 = next_node.ip4 .. '/32' end if next_node.ip6 then diff --git a/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-client-bridge b/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-client-bridge index 4658b419..58c6084a 100755 --- a/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-client-bridge +++ b/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-client-bridge @@ -25,7 +25,18 @@ uci:section('network', 'interface', 'client', { uci:delete('network', 'client_lan') +uci:section('network', 'rule', 'local_node_rule', { + src = next_node.ip4 .. '/32', + lookup = 2, +}) +uci:set('network', 'local_node_rule', 'in', 'loopback') + uci:delete('network', 'local_node_route') +uci:section('network', 'route', 'local_node_route', { + interface = 'local_node', + target = site.prefix4(), + table = 2, +}) uci:section('network', 'rule6', 'local_node_rule6', { src = next_node.ip6 .. '/128',