[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(usagi-users 02106) Re: multiproto bind() ?
- To: usagi-users@xxxxxxxxxxxxxx
- Subject: (usagi-users 02106) Re: multiproto bind() ?
- From: Abdul Basit <basit@xxxxxxxx>
- Date: Sun, 19 Jan 2003 02:36:54 -0600 (CST)
- Cc: snap-users@xxxxxxxx
- In-reply-to: <20030119015348.W43691-100000@wireless.cs.twsu.edu>
- Reply-to: usagi-users@xxxxxxxxxxxxxx
and it seems to be if i want to bind on both
i need to use multiple listenfds like listenfd[k];
for multiple protocols ?
is there any other way to cope around with it ?
-- basit
On Sun, 19 Jan 2003, Abdul Basit wrote:
> hey,
>
> i am trying to bind on all available ipv4 and ipv6 addresses.
> i tried,
>
> -- snippet of code --
>
> hints.ai_flags = AI_PASSIVE;
> hints.ai_family = PF_UNSPEC;
> hints.ai_socktype = SOCK_STREAM;
>
> if ((n = getaddrinfo(NULL, "7710", &hints, &res)) != 0) {
> printf("%s\n", gai_strerror(n));
> }
> do {
>
> listenfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
>
> if (listenfd < 0)
> continue;
>
> setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &len, sizeof(len));
>
> if (bind(listenfd, res->ai_addr, res->ai_addrlen) == 0)
> break;
>
> } while ((res = res->ai_next) != NULL);
>
> it works fine, and i can telnet to my-host:7710 from ipv4 only and ipv6
> only hosts also, but when i try to print to address family, it always
> gives 28c on freebsd and 10c on Linux indicating AF_INET6
>
> i tried :
>
> -- snippet of code
>
> listen (listenfd,1024);
> caddr = malloc(res->ai_addrlen);
>
> for(;;) {
>
> slen = res->ai_addrlen;
> ptr = malloc(sizeof(int));
> *ptr = accept(listenfd, caddr, &slen);
>
> // using res->ai_family 'd give same result.
> printf("%uc\n",caddr->sa_family);
> }
>
> i want to distinguish between clients coming to ipv4 or ipv6
> and print client address ? if i would get sa_family correct
> i can switch(family) { and case for AF_INET and AF_INET6 and
> use inet_ntop to print address ? but i am getting same family
> always (28c/bsd and 10c/linux --> AF_INET6)
>
> any hints?
>
> -- basit
>
>
>
>