[prev in list] [next in list] [prev in thread] [next in thread]
List: openbsd-tech
Subject: Re: unwind(8): use SO_BINDANY
From: Claudio Jeker <cjeker () diehard ! n-r-g ! com>
Date: 2021-01-29 17:55:30
Message-ID: 20210129175530.GB95509 () diehard ! n-r-g ! com
[Download RAW message or body]
On Fri, Jan 29, 2021 at 06:29:52PM +0100, Florian Obser wrote:
> Hold off on this for now, claudio pointed out that I might not be
> supposed to use SO_BINDANY like this.
I checked the code and I think using SO_BINDANY should be OK. Still not
sure if unwind can bind(2) before any interface is configured.
> On Fri, Jan 29, 2021 at 04:51:46PM +0100, Florian Obser wrote:
> > 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.
> >
>
> --
> I'm not entirely sure you are real.
>
--
:wq Claudio
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic