From 062246fb123dbb2b277ab1765050a98f57d4b4cd Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 5 Dec 2022 17:56:39 +0000 Subject: [PATCH] allow specifying zeroconf filters by subnet --- copyparty/multicast.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/copyparty/multicast.py b/copyparty/multicast.py index cab9fb5d..ebc1c77a 100644 --- a/copyparty/multicast.py +++ b/copyparty/multicast.py @@ -5,7 +5,14 @@ import socket import time import ipaddress -from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network +from ipaddress import ( + IPv4Address, + IPv4Network, + IPv6Address, + IPv6Network, + ip_address, + ip_network, +) from .__init__ import TYPE_CHECKING from .util import MACOS, Netdev, min_ex, spack @@ -110,7 +117,17 @@ class MCast(object): off = self.off[:] for lst in (on, off): for av in list(lst): + try: + arg_net = ip_network(av, False) + except: + arg_net = None + for sk, sv in netdevs.items(): + if arg_net: + net_ip = ip_address(sk.split("/")[0]) + if net_ip in arg_net and sk not in lst: + lst.append(sk) + if (av == str(sv.idx) or av == sv.name) and sk not in lst: lst.append(sk)