SIOCGIFADDR broken on 9.0-RC1?
GR
freebsd at gomor.org
Tue Nov 15 17:10:18 UTC 2011
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/ <---+
More information about the freebsd-stable
mailing list