Re: Troubles with adding IPv6 support to a program
- In reply to: Chris Ross : "Troubles with adding IPv6 support to a program"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 12 Jun 2022 17:19:35 UTC
Okay. So, anyone can feel free to look at my code at the link below, but as soon as I got desperate enough to reach out to a mailer, I found my own mistake. For the curious, inside my loop I was calling socket() with the original pointer, not the iterator. :-( So, calling socket() the same way twice despite thinking I wasn’t. Sorry for the noise. - Chris > On Jun 12, 2022, at 12:40, Chris Ross <cross+freebsd@distal.com> wrote: > > > Tl;dr; > I don’t know why I’m getting an EINVAL from a call to bind for a second socket > > > > > 20 years ago, I spent a lot of time adding IPv6 support to IPv4-only programs. > So I thought this (adding IPv6 support to simpleproxy[1]) would be an easy > project to pick up. I’ve gotten most of the framework in, delayed only > slightly when I learned that FreeBSD is “different” in not routing IPv4 > traffic to AF_INET6 sockets [2]. > > However, I’m getting an issue from one of my bind(2) calls that I’m not able > to figure out. I was hoping someone else had a few minutes to take a quick > look and help me find out what I’m doing wrong. > > A ~70 line relevant section of the source is at https://justpaste.it/6u3jd > > The tl;dr; of this is that I: > > * getaddrinfo(NULL, portIwant) > * for each address returned: > * create a socket > * setsockopt(SO_REUSEADDR) > * bind > * listen > > The first address I get is IPv6 localhost, and that binds and listens, then > continues to the next address. A new socket is created, setsockopt’d, but > bind for the second address (IPv4 localhost) fails with EINVAL. > > As you can see in the code shared, I have lots of debugging logs in the code, > and it looks like everything is as it should be. I’m probably just missing > Something simple, and am looking for another set of eyes. > > Thanks all. Contact me off list if you like, or on-list if it’s obvious > what I’ve done and it will help others. > > - Chris > > > [1] https://github.com/vzaliva/simpleproxy > [2] inet6(4), "Interaction between IPv4/v6 sockets" >