On Thu, Oct 14, 2004 at 05:44:57PM +0400, Grigory Klyuchnikov wrote: > Hello, > > How can a user process get IPv6 multicast addresses of ethernet > interfaces? I have FreeBSD 5.2.1 and get interface addresses > via ioctl(SIOCGIFCONF) or sysctl(witch NET_RT_IFLIST), > but all returned addresses are unicast.
getifaddrs(3) and getifmaddrs(3) may do what you want. > In net/if.h there is a struct ifma_msghdr: > > /* > * Message format for use in obtaining information about multicast addresses > * from the routing socket > */ > struct ifma_msghdr { > u_short ifmam_msglen; /* to skip over non-understood messages */ > u_char ifmam_version; /* future binary compatibility */ > u_char ifmam_type; /* message type */ > int ifmam_addrs; /* like rtm_addrs */ > int ifmam_flags; /* value of ifa_flags */ > u_short ifmam_index; /* index for associated ifp */ > }; > > > How it may be used? In addition to the functions above, you can directly access these structures via sysctl (see src/lib/libc/net/getifmaddrs.c for an example). -- Brooks -- Any statement of the form "X is the one, true Y" is FALSE. PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
pgpnFmanTX23Q.pgp
Description: PGP signature