Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Apr 2013 06:12:19 +0000
From:      Sreenivasa Honnur <shonnur@chelsio.com>
To:        FreeBSD Tinderbox <tinderbox@freebsd.org>, "current@freebsd.org" <current@freebsd.org>, "i386@freebsd.org" <i386@freebsd.org>
Subject:   IPV6 - sobind fails with 49.
Message-ID:  <F2BBBB6E0068844991318A316F34795C348D1D@nice.asicdesigners.com>
In-Reply-To: <F2BBBB6E0068844991318A316F34795C344106@nice.asicdesigners.com>
References:  <201303041621.r24GL1Dn022279@freebsd-current.sentex.ca> <F2BBBB6E0068844991318A316F34795C344106@nice.asicdesigners.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I am writing a kernel socket program which binds to a IPv6 address, so bind=
 always fails with 49. Below is the code snippet I am using, is something w=
rong here?

roundhay# uname -a
FreeBSD roundhay 9.1-RELEASE FreeBSD 9.1-RELEASE #2: Mon Apr  8 16:15:06 IS=
T 2013     root@roundhay:/usr/obj/home/freebsd.org/sys/TOED  amd64

Ifconfig/ping6 output:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
cxgbe1: flags=3D8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1=
500
        options=3D6c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VL=
AN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        ether 00:07:43:11:89:88
        inet6 2010::102 prefixlen 64
        inet6 fe80::207:43ff:fe11:8988%cxgbe1 prefixlen 64 scopeid 0xd
        inet6 fe80::1%cxgbe1 prefixlen 64 scopeid 0xd
        nd6 options=3D21<PERFORMNUD,AUTO_LINKLOCAL>
        media: Ethernet 10Gbase-SR <full-duplex>
        status: active
roundhay# ping6 2010::101
PING6(56=3D40+8+8 bytes) 2010::102 --> 2010::101
16 bytes from 2010::101, icmp_seq=3D0 hlim=3D64 time=3D0.915 ms
16 bytes from 2010::101, icmp_seq=3D1 hlim=3D64 time=3D0.168 ms
^C
--- 2010::101 ping6 statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev =3D 0.168/0.541/0.915/0.374 ms


Code:
                struct sockaddr_in6 saddr6;
                rv =3D socreate(AF_INET6, &sock, SOCK_STREAM, IPPROTO_TCP,
                                td->td_ucred, td);

                if (rv !=3D 0) {
                        printf("sock create ipv6 %s failed %d.\n",
                                        tbuf, rv);
                        return NULL;
                }

                saddr6.sin6_family =3D AF_INET6;
                rv =3D inet_pton(AF_INET6, "2010::102", &saddr6.sin6_addr);=
 =3D=3D> returns 1, which indicates it's a valid IPV6 address
                printf("inet_pton retunred:%d\n", rv);

                saddr6.sin6_port =3D htons(3260);
                saddr6.sin6_len =3D sizeof(saddr6);

                rv =3D sobind(sock, (struct sockaddr *)&saddr6, td); =3D=3D=
> fails with return value of 49





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F2BBBB6E0068844991318A316F34795C348D1D>