On 6 March 2012 11:08, hiren panchasara <[email protected]> wrote: > > > On Mon, Mar 5, 2012 at 10:57 PM, Sergey Kandaurov <[email protected]> wrote: >> >> struct ifaddr is the in-kernel representation of the interface address. >> In kernel each network interface consists of a linked list of interface >> addresses, described by ifaddr structures. >> See man ifnet(9): http://man.freebsd.org/ifnet >> >> struct ifaddrs is used in the userland BSD API getifaddrs(3). This >> interface >> is used to get interface addresses in userland programs. See how it is >> used in e.g. ifconfig(8) sources: /usr/src/sbin/ifconfig/ifconfig.c >> See man getifaddrs(3): http://man.freebsd.org/getifaddrs > > Thanks Sergey, appreciate your help. > > Are they connected in any way? Can I get one if I have another?
Well, not strictly. getifaddrs() collects addresses on all network interfaces using sysctl interface to the routine table with NET_RT_IFLIST[L] argument. NET_RT_IFLIST[L] does what you would expect: it runs through the linked list of network interfaces and gathers all struct ifaddr on each of them. You can see how that works in /usr/src/sys/net/rtsock.c:sysctl_iflist(). See also man sysctl(3) w.r.t. NET_RT_IFLIST / NET_RT_IFLISTL. -- wbr, pluknet _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[email protected]"
