SIOCGIFADDR broken on 9.0-RC1?

Gleb Kurtsou gleb.kurtsou at gmail.com
Tue Nov 15 22:38:29 UTC 2011


On (15/11/2011 18:10), GR wrote:
> Hello list,
> 
> more insights since my last post. Here is a small code to trigger the bug (end of email).
> When you run it on 9.0-RC1, it gets an alias address instead of the main inet address:
> 
> % ./get-ip re0          
> inet: 192.168.2.10
> # Main address being 192.168.1.148
> 
> On 8.2-RELEASE, all goes well:
> % ./get-ip re0
> inet: PUBLIC_IP4
> 
> Is something broken, or a behaviour has changed since 8.2-RELEASE?

Your test case looks ok and works as expexted for me on 10-CURRENT, both
without aliases and after adding alias to interface. Perhaps it's the way
you add aliases (libdnet ?).

I've used:
ifconfing em0 alias OTHERIP


Thanks,
Gleb.

> 
> Best regards,
> 
> 
> --8<--
> #include <sys/types.h>
> #include <sys/socket.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <net/if.h>
> #include <sys/sockio.h>
> #include <string.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> 
> int
> main(int argc, char *argv[])
> {
>    int fd;
>    struct ifreq ifr;
>    const struct sockaddr_in *sa;
> 
>    fd = socket(AF_INET, SOCK_DGRAM, 0);
>    if (fd < 0) {
>       perror("socket");
>       exit(-1);
>    }
> 
>    memset(&ifr, 0, sizeof(struct ifreq));
>    strlcpy(ifr.ifr_name, argv[1], sizeof(ifr.ifr_name));
> 
>    if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) {
>       sa = (const struct sockaddr_in *) &ifr.ifr_addr;
>       printf("inet: %s\n", inet_ntoa(sa->sin_addr));
>    }
>    else {
>       perror("ioctl");
>       exit(-1);
>    }
> 
>    exit(0);
> }
> --8<--
> 
> -- 
>   ^  ___  ___             http://www.GomoR.org/          <-+
>   | / __ |__/            Senior Security Engineer          |
>   | \__/ |  \     ---[ zsh$ alias psed='perl -pe ' ]---    |
>   +-->  Net::Frame <=> http://search.cpan.org/~gomor/  <---+
> 
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"


More information about the freebsd-current mailing list