From f49ec30b2eaf65486038000fd0d1f1ca688fc204 Mon Sep 17 00:00:00 2001 From: Zsombor Welker <fedora@zdeqb.com> Date: Fri, 17 Jun 2022 10:48:52 +0200 Subject: [PATCH] Use SetLinkDNSEx so that the ip:port may be specified This allows ports besides 53 to be used --- src/systemd_resolved_docker/cli.py | 2 +- src/systemd_resolved_docker/resolvedconnector.py | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/systemd_resolved_docker/cli.py b/src/systemd_resolved_docker/cli.py index b216dfd..6076612 100644 --- a/src/systemd_resolved_docker/cli.py +++ b/src/systemd_resolved_docker/cli.py @@ -56,7 +56,7 @@ def main(): handler = Handler() handler.log("Default domain: %s, allowed domains: %s" % (default_domain, ", ".join(domains))) - resolved = SystemdResolvedConnector(interface, listen_addresses, domains) + resolved = SystemdResolvedConnector(interface, listen_addresses, listen_port, domains) dns_connector = DockerDNSConnector(listen_addresses, listen_port, dns_server, domains, default_domain, interface, handler, cli) diff --git a/src/systemd_resolved_docker/resolvedconnector.py b/src/systemd_resolved_docker/resolvedconnector.py index cc9560a..d3eb11b 100644 --- a/src/systemd_resolved_docker/resolvedconnector.py +++ b/src/systemd_resolved_docker/resolvedconnector.py @@ -7,11 +7,12 @@ from pyroute2 import IPRoute class SystemdResolvedConnector: - def __init__(self, docker_interface, listen_addresses, dns_domains): + def __init__(self, docker_interface, listen_addresses, listen_port, dns_domains): super().__init__() self.docker_interface = docker_interface self.listen_addresses = listen_addresses + self.listen_port = listen_port self.dns_domains = dns_domains self.ifindex = self.resolve_ifindex(docker_interface) @@ -36,15 +37,17 @@ class SystemdResolvedConnector: ips = [ [ AF_INET if isinstance(ip, ipaddress.IPv4Address) else AF_INET6, - ip.packed + ip.packed, + self.listen_port, + "", ] for ip in [ipaddress.ip_address(ip) for ip in self.listen_addresses] ] manager = self.if_manager() - manager.SetLinkDomains(self.ifindex, domains) - manager.SetLinkDNS(self.ifindex, ips) + manager.SetLinkDNSEx(self.ifindex, ips) manager.SetLinkDNSSEC(self.ifindex, "no") + manager.SetLinkDomains(self.ifindex, domains) def unregister(self): manager = self.if_manager() -- GitLab