1 --- a/ifconfig.old 2010-12-10 11:18:19.890041196 +0100
2 +++ b/ifconfig.c 2010-12-10 11:59:58.170347114 +0100
9 + hwaddr[0] = addr[0] = brdaddr[0] = netmask[0] = 0;
11 if (!PyArg_ParseTuple(args, "s", &itf))
15 strcpy(ifreq.ifr_name, itf);
17 - /* hardware address */
18 - ioctl(fd, SIOCGIFHWADDR, &ifreq);
19 - hw = ifreq.ifr_hwaddr.sa_data;
20 - sprintf(hwaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
21 - *hw, *(hw + 1), *(hw + 2), *(hw + 3), *(hw + 4), *(hw + 5));
24 - ioctl(fd, SIOCGIFADDR, &ifreq);
25 - sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
26 - sprintf(addr, "%s", inet_ntoa(sin->sin_addr));
29 - ioctl(fd, SIOCGIFBRDADDR, &ifreq);
30 - sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
31 - sprintf(brdaddr, "%s", inet_ntoa(sin->sin_addr));
34 - ioctl(fd, SIOCGIFNETMASK, &ifreq);
35 - sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
36 - sprintf(netmask, "%s", inet_ntoa(sin->sin_addr));
38 + if (ioctl(fd, SIOCGIFFLAGS, &ifreq) == 0) {
39 + flags = ifreq.ifr_flags;
41 + /* hardware address */
42 + ioctl(fd, SIOCGIFHWADDR, &ifreq);
43 + hw = ifreq.ifr_hwaddr.sa_data;
44 + sprintf(hwaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
45 + *hw, *(hw + 1), *(hw + 2), *(hw + 3), *(hw + 4), *(hw + 5));
48 + ioctl(fd, SIOCGIFADDR, &ifreq);
49 + sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
50 + sprintf(addr, "%s", inet_ntoa(sin->sin_addr));
53 + ioctl(fd, SIOCGIFBRDADDR, &ifreq);
54 + sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
55 + sprintf(brdaddr, "%s", inet_ntoa(sin->sin_addr));
58 + ioctl(fd, SIOCGIFNETMASK, &ifreq);
59 + sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
60 + sprintf(netmask, "%s", inet_ntoa(sin->sin_addr));
64 - return Py_BuildValue("{s:s,s:s,s:s,s:s}",
65 + return Py_BuildValue("{s:i,s:s,s:s,s:s,s:s}",