package py38-wsdd-0.7.0 OSError: [Errno 48] Address already in use

From: David Christensen <dpchrist_at_holgerdanske.com>
Date: Wed, 20 Apr 2022 00:16:45 UTC
freebsd-questions:

I have a FreeBSD computer:

2022-04-19 16:56:30 toor@f3 ~
# freebsd-version ; uname -a
12.3-RELEASE-p4
FreeBSD f3.tracy.holgerdanske.com 12.3-RELEASE-p3 FreeBSD 
12.3-RELEASE-p3 GENERIC  amd64


It has a jail running Samba:

2022-04-19 16:59:23 toor@samba ~
# pkg info | grep samba
samba413-4.13.14               Free SMB/CIFS and AD/DC server and client 
for Unix

2022-04-19 16:59:41 toor@samba ~
# service samba_server status
nmbd is running as pid 23443.
smbd is running as pid 23450.


I have installed the py38-wsdd package:

2022-04-19 16:59:52 toor@samba ~
# pkg info | grep wsdd
py38-wsdd-0.7.0                Web Service Discovery (WSD) host daemon 
for Samba


Per the package installation instructions, I have enabled wsdd in 
/etc/rc.conf:

2022-04-19 17:00:20 toor@samba ~
# grep wsdd /etc/rc.conf
wsdd_enable="YES"


If I stop and start the jail:

2022-04-19 17:07:17 toor@f3 ~
# service jail stop samba
Stopping jails: samba.

2022-04-19 17:07:29 toor@f3 ~
# service jail start samba
Starting jails: samba.


wsdd is not running:

2022-04-19 17:08:03 toor@samba ~
# service wsdd status
wsdd is not running.


If I try to start wsdd manually:

2022-04-19 17:08:45 toor@samba ~
# /usr/local/bin/wsdd -w WORKGROUP -u _wsdd:_wsdd -v -v
2022-04-19 17:09:10,165:wsdd WARNING(pid 50101): no interface given, 
using all interfaces
2022-04-19 17:09:10,165:wsdd INFO(pid 50101): using pre-defined UUID 
6581a241-9008-5830-b724-2b181b86f05d
2022-04-19 17:09:10,165:asyncio DEBUG(pid 50101): Using selector: 
KqueueSelector
2022-04-19 17:09:10,168:wsdd DEBUG(pid 50101): new address 192.168.5.24 
on em0
2022-04-19 17:09:10,168:wsdd DEBUG(pid 50101): handling traffic for 
192.168.5.24 on em0
Traceback (most recent call last):
   File "/usr/local/bin/wsdd", line 1799, in <module>
     sys.exit(main())
   File "/usr/local/bin/wsdd", line 1754, in main
     nm = RouteSocketAddressMonitor(aio_loop)
   File "/usr/local/bin/wsdd", line 1058, in __call__
     obj.enumerate()
   File "/usr/local/bin/wsdd", line 1097, in enumerate
     self.do_enumerate()
   File "/usr/local/bin/wsdd", line 1471, in do_enumerate
     self.parse_route_socket_response(rt_buf.raw, True)
   File "/usr/local/bin/wsdd", line 1505, in parse_route_socket_response
     new_intf = self.parse_addrs(buf, sa_offset, offset + rtm_len, intf, 
addr_mask, rtm_type, intf_flags)
   File "/usr/local/bin/wsdd", line 1551, in parse_addrs
     self.handle_new_address(addr, addr_family, intf)
   File "/usr/local/bin/wsdd", line 1161, in handle_new_address
     mch = MulticastHandler(addr_family, addr, interface, self.aio_loop)
   File "/usr/local/bin/wsdd", line 83, in __init__
     self.init_v4()
   File "/usr/local/bin/wsdd", line 163, in init_v4
     self.uc_send_socket.bind((self.address, WSD_UDP_PORT))
OSError: [Errno 48] Address already in use


Note that 192.168.5.24 is the IPv4 address of the jail:

2022-04-19 17:13:31 toor@f3 ~
# grep -A 2 samba /etc/jail.conf
samba {
     ip4.addr="192.168.5.24";
}


Suggestions?


David