Message ID | 20110730233444.GA15976@rox.home.comstyle.com |
---|---|
State | New |
Headers | show |
----- Original message ----- > On Fri, Jul 29, 2011 at 07:15:11PM -0400, Brad wrote: > > Fix forcing multicast msgs to loopback on OpenBSD. > > > > e.g. > > $ sudo qemu -m 128 -no-fd-bootchk \ > > -hda virtual.img -boot n -nographic \ > > -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:34:03 \ > > -net user -tftp /usr/src/sys/arch/i386/compile/TEST -bootp pxeboot \ > > -net nic,vlan=1,model=rtl8139,macaddr=52:54:00:23:03:01 \ > > -net tap,vlan=1,script=no \ > > -net nic,vlan=3,model=rtl8139,macaddr=52:54:00:23:03:03 \ > > -net socket,vlan=3,mcast=230.0.0.1:10003 > > setsockopt(SOL_IP, IP_MULTICAST_LOOP): Invalid argument > > qemu: -net socket,vlan=3,mcast=230.0.0.1:10003: Device 'socket' could > > not be initialized > > > > > > Signed-off-by: Brad Smith <brad@comstyle.com> > > An updated diff taking Blue Swirl's comment into consideration. ping.
Thanks, applied. On Sat, Jul 30, 2011 at 11:34 PM, Brad <brad@comstyle.com> wrote: > On Fri, Jul 29, 2011 at 07:15:11PM -0400, Brad wrote: >> Fix forcing multicast msgs to loopback on OpenBSD. >> >> e.g. >> $ sudo qemu -m 128 -no-fd-bootchk \ >> -hda virtual.img -boot n -nographic \ >> -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:34:03 \ >> -net user -tftp /usr/src/sys/arch/i386/compile/TEST -bootp pxeboot \ >> -net nic,vlan=1,model=rtl8139,macaddr=52:54:00:23:03:01 \ >> -net tap,vlan=1,script=no \ >> -net nic,vlan=3,model=rtl8139,macaddr=52:54:00:23:03:03 \ >> -net socket,vlan=3,mcast=230.0.0.1:10003 >> setsockopt(SOL_IP, IP_MULTICAST_LOOP): Invalid argument >> qemu: -net socket,vlan=3,mcast=230.0.0.1:10003: Device 'socket' could not be initialized >> >> >> Signed-off-by: Brad Smith <brad@comstyle.com> > > An updated diff taking Blue Swirl's comment into consideration. > > > --- > net/socket.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/net/socket.c b/net/socket.c > index 11fe5f3..5cd0b9a 100644 > --- a/net/socket.c > +++ b/net/socket.c > @@ -154,6 +154,12 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr > struct ip_mreq imr; > int fd; > int val, ret; > +#ifdef __OpenBSD__ > + unsigned char loop; > +#else > + int loop; > +#endif > + > if (!IN_MULTICAST(ntohl(mcastaddr->sin_addr.s_addr))) { > fprintf(stderr, "qemu: error: specified mcastaddr \"%s\" (0x%08x) does not contain a multicast address\n", > inet_ntoa(mcastaddr->sin_addr), > @@ -197,9 +203,9 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr > } > > /* Force mcast msgs to loopback (eg. several QEMUs in same host */ > - val = 1; > + loop = 1; > ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, > - (const char *)&val, sizeof(val)); > + (const char *)&loop, sizeof(loop)); > if (ret < 0) { > perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)"); > goto fail; > -- > 1.7.6 > > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > > >
Could this please be pulled back to the 0.15 branch? commit b49b710aae35add54321e4ba1b338cf6db25c2a2 Author: Brad Smith <brad@comstyle.com> Date: Sat Jul 30 19:08:51 2011 -0400 Fix forcing multicast msgs to loopback on OpenBSD. On 07/08/11 7:10 AM, Blue Swirl wrote: > Thanks, applied. > > On Sat, Jul 30, 2011 at 11:34 PM, Brad<brad@comstyle.com> wrote: >> On Fri, Jul 29, 2011 at 07:15:11PM -0400, Brad wrote: >>> Fix forcing multicast msgs to loopback on OpenBSD. >>> >>> e.g. >>> $ sudo qemu -m 128 -no-fd-bootchk \ >>> -hda virtual.img -boot n -nographic \ >>> -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:34:03 \ >>> -net user -tftp /usr/src/sys/arch/i386/compile/TEST -bootp pxeboot \ >>> -net nic,vlan=1,model=rtl8139,macaddr=52:54:00:23:03:01 \ >>> -net tap,vlan=1,script=no \ >>> -net nic,vlan=3,model=rtl8139,macaddr=52:54:00:23:03:03 \ >>> -net socket,vlan=3,mcast=230.0.0.1:10003 >>> setsockopt(SOL_IP, IP_MULTICAST_LOOP): Invalid argument >>> qemu: -net socket,vlan=3,mcast=230.0.0.1:10003: Device 'socket' could not be initialized >>> >>> >>> Signed-off-by: Brad Smith<brad@comstyle.com> >> >> An updated diff taking Blue Swirl's comment into consideration. >> >> >> --- >> net/socket.c | 10 ++++++++-- >> 1 files changed, 8 insertions(+), 2 deletions(-) >> >> diff --git a/net/socket.c b/net/socket.c >> index 11fe5f3..5cd0b9a 100644 >> --- a/net/socket.c >> +++ b/net/socket.c >> @@ -154,6 +154,12 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr >> struct ip_mreq imr; >> int fd; >> int val, ret; >> +#ifdef __OpenBSD__ >> + unsigned char loop; >> +#else >> + int loop; >> +#endif >> + >> if (!IN_MULTICAST(ntohl(mcastaddr->sin_addr.s_addr))) { >> fprintf(stderr, "qemu: error: specified mcastaddr \"%s\" (0x%08x) does not contain a multicast address\n", >> inet_ntoa(mcastaddr->sin_addr), >> @@ -197,9 +203,9 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr >> } >> >> /* Force mcast msgs to loopback (eg. several QEMUs in same host */ >> - val = 1; >> + loop = 1; >> ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, >> - (const char *)&val, sizeof(val)); >> + (const char *)&loop, sizeof(loop)); >> if (ret< 0) { >> perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)"); >> goto fail; >> -- >> 1.7.6
On Sun, 2011-08-07 at 21:44 -0400, Brad wrote: > Could this please be pulled back to the 0.15 branch? > > > commit b49b710aae35add54321e4ba1b338cf6db25c2a2 > Author: Brad Smith <brad@comstyle.com> > Date: Sat Jul 30 19:08:51 2011 -0400 > > Fix forcing multicast msgs to loopback on OpenBSD. > Pulled, thanks. Justin
diff --git a/net/socket.c b/net/socket.c index 11fe5f3..5cd0b9a 100644 --- a/net/socket.c +++ b/net/socket.c @@ -154,6 +154,12 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr struct ip_mreq imr; int fd; int val, ret; +#ifdef __OpenBSD__ + unsigned char loop; +#else + int loop; +#endif + if (!IN_MULTICAST(ntohl(mcastaddr->sin_addr.s_addr))) { fprintf(stderr, "qemu: error: specified mcastaddr \"%s\" (0x%08x) does not contain a multicast address\n", inet_ntoa(mcastaddr->sin_addr), @@ -197,9 +203,9 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr } /* Force mcast msgs to loopback (eg. several QEMUs in same host */ - val = 1; + loop = 1; ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, - (const char *)&val, sizeof(val)); + (const char *)&loop, sizeof(loop)); if (ret < 0) { perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)"); goto fail;