Date: Tue, 15 Nov 2011 18:10:01 +0100 (CET) From: GR <freebsd@gomor.org> To: freebsd-current@freebsd.org Cc: freebsd-stable@freebsd.org Subject: SIOCGIFADDR broken on 9.0-RC1? Message-ID: <ba681b9d-4096-4966-9fff-590716a78ed0@ubuntu64> In-Reply-To: <ee0855d0-f04c-4bdb-8578-bb9c74284f83@ubuntu64>
index | next in thread | previous in thread | raw e-mail
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?
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/ <---+
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ba681b9d-4096-4966-9fff-590716a78ed0>
