> This is somewhat a continuation of my previous question about max
> interfaces. I wanted to know how much space I needed for a buffer using
> ioctl(). Then I discovered getifaddrs()
>
> I'm not sure if I'm doing something wrong or this is the correct
> output. I have this sample code:
>
> #include <sys/types.h>
> #include <sys/socket.h>
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <ifaddrs.h>
>
> int
> main(int argc, char *argv[])
> {
> struct ifaddrs *ifaddr, *ifa;
> int i;
>
> if (getifaddrs(&ifaddr) < 0)
> {
> printf("\ngetifaddr failed\n");
> exit(1);
> }
>
> for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next)
> {
> printf("%s\n", ifa->ifa_name);
> }
>
> freeifaddrs(ifaddr);
> return 0;
> }
>
> When compiled and ran I get this:
>
> $ ./test
> lo0
> lo0
> lo0
> lo0
> em0
> iwn0
> iwn0
> enc0
> pflog0
>
> But ifconfig only shows one of each interface. Why is getifaddrs()
> giving me 4 lo0 and 2 iwn0?
Print more fields of the structure and you'll see.