From 61454b1374a610e3ef7219e32f4a01f004d6c267 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 19 Feb 2024 10:02:55 +0100 Subject: [PATCH] datamodel: support interface names with dashes Dashes can't be present in normal identifiers in Lua, so we switch to a different syntactic sugar for the same thing. --- NEWS | 8 ++++++++ .../datamodel/templates/macros/network_macros.lua.j2 | 2 +- .../tests/unit/datamodel/templates/test_network_macros.py | 6 +++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index d4ce40fbe..fbf4e3485 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,11 @@ +Knot Resolver 6.0.7 (2024-0m-dd) +================================ + +Bugfixes +-------- +- fix listening by interface name containing dashes (#900, !1500) + + Knot Resolver 6.0.6 (2024-02-13) ================================ diff --git a/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 index ff78fbd80..79800f7da 100644 --- a/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 @@ -31,7 +31,7 @@ net.listen( {%- if interface.addr -%} '{{ interface.addr }}', {%- elif interface.if_name -%} -net.{{ interface.if_name }}, +net['{{ interface.if_name }}'], {%- endif -%} {%- if interface.port -%} {{ interface.port }}, diff --git a/manager/tests/unit/datamodel/templates/test_network_macros.py b/manager/tests/unit/datamodel/templates/test_network_macros.py index 63fcf3731..066463dff 100644 --- a/manager/tests/unit/datamodel/templates/test_network_macros.py +++ b/manager/tests/unit/datamodel/templates/test_network_macros.py @@ -26,10 +26,10 @@ def test_network_listen(): ) intrfc = ListenSchema({"interface": "eth0", "kind": "doh2"}) - assert tmpl.render(listen=intrfc) == "net.listen(net.eth0,443,{kind='doh2',freebind=false})\n" + assert tmpl.render(listen=intrfc) == "net.listen(net['eth0'],443,{kind='doh2',freebind=false})\n" intrfc_list = ListenSchema({"interface": [intrfc.interface.to_std()[0], "lo"], "port": 5555, "kind": "doh2"}) assert ( tmpl.render(listen=intrfc_list) - == "net.listen(net.eth0,5555,{kind='doh2',freebind=false})\n" - + "net.listen(net.lo,5555,{kind='doh2',freebind=false})\n" + == "net.listen(net['eth0'],5555,{kind='doh2',freebind=false})\n" + + "net.listen(net['lo'],5555,{kind='doh2',freebind=false})\n" ) -- 2.47.2