I want to start unwind earlier, around the time when slaacd comes up,
the network is not up at that point. Set SO_BINDANY to be able to
already bind upd/53 and tcp/53 on localhost.
This will make integration with dhclient easier (I hope).
diff --git unwind.c unwind.c
index 00c600560e4..9bfc4dcf3b8 100644
--- unwind.c
+++ unwind.c
@@ -746,6 +746,9 @@ open_ports(void)
if (setsockopt(udp4sock, SOL_SOCKET, SO_SNDBUF, &bsize,
sizeof(bsize)) == -1)
log_warn("setting SO_SNDBUF on socket");
+ if (setsockopt(udp4sock, SOL_SOCKET, SO_BINDANY, &opt,
+ sizeof(opt)) == -1)
+ log_warn("setting SO_BINDANY on socket");
if (bind(udp4sock, res0->ai_addr, res0->ai_addrlen)
== -1) {
close(udp4sock);
@@ -767,6 +770,9 @@ open_ports(void)
if (setsockopt(udp6sock, SOL_SOCKET, SO_SNDBUF, &bsize,
sizeof(bsize)) == -1)
log_warn("setting SO_SNDBUF on socket");
+ if (setsockopt(udp6sock, SOL_SOCKET, SO_BINDANY, &opt,
+ sizeof(opt)) == -1)
+ log_warn("setting SO_BINDANY on socket");
if (bind(udp6sock, res0->ai_addr, res0->ai_addrlen)
== -1) {
close(udp6sock);
@@ -791,6 +797,9 @@ open_ports(void)
if (setsockopt(tcp4sock, SOL_SOCKET, SO_SNDBUF, &bsize,
sizeof(bsize)) == -1)
log_warn("setting SO_SNDBUF on socket");
+ if (setsockopt(tcp4sock, SOL_SOCKET, SO_BINDANY, &opt,
+ sizeof(opt)) == -1)
+ log_warn("setting SO_BINDANY on socket");
if (bind(tcp4sock, res0->ai_addr, res0->ai_addrlen)
== -1) {
close(tcp4sock);
@@ -817,6 +826,9 @@ open_ports(void)
if (setsockopt(tcp6sock, SOL_SOCKET, SO_SNDBUF, &bsize,
sizeof(bsize)) == -1)
log_warn("setting SO_SNDBUF on socket");
+ if (setsockopt(tcp6sock, SOL_SOCKET, SO_BINDANY, &opt,
+ sizeof(opt)) == -1)
+ log_warn("setting SO_BINDANY on socket");
if (bind(tcp6sock, res0->ai_addr, res0->ai_addrlen)
== -1) {
close(tcp6sock);
--
I'm not entirely sure you are real.