Ronald F. Guilmette wrote:
Given a socket which has been properly created, opened, and then bound
to some port and the special INADDR_ANY ``wildcard'' address, I need
to be able to them programatically find all of the IPv4 addresses that
the socket was just bound to.

Try something like the following:


struct ifaddrs *if_ptr, *ifap;

    if (getifaddrs(&ifap) == -1) {
        fatal(strerror(errno));
            /*NOTREACHED*/
    }

        /* iterate over the list of interfaces on the machine */
    for (if_ptr = ifap; if_ptr; if_ptr = if_ptr->ifa_next) {
        switch (if_ptr->ifa_addr->sa_family) {
          case AF_INET:
                /* check that the interface is UP before we try to use it */
            flags = if_ptr->ifa_flags;
            if (!(flags & IFF_UP)) break;
                /* do something here using if_ptr->ifa_addr */

          case AF_INET6:
                /* do something else for IPv6... */
        }
    }

...although be sure to call ntohl() on the address to get things in the local byte-ordering...

--
-Chuck

_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to