--- a/ifconfig.old	2010-12-10 11:18:19.890041196 +0100
+++ b/ifconfig.c	2010-12-10 11:59:58.170347114 +0100
@@ -43,6 +43,9 @@
     char addr[20];
     char brdaddr[20];
     char netmask[20];
+    short int flags = 0;
+
+    hwaddr[0] = addr[0] = brdaddr[0] = netmask[0] = 0;
 
     if (!PyArg_ParseTuple(args, "s", &itf))
 	return NULL;
@@ -51,29 +54,35 @@
 
     strcpy(ifreq.ifr_name, itf);
 
-    /* hardware address */
-    ioctl(fd, SIOCGIFHWADDR, &ifreq);
-    hw = ifreq.ifr_hwaddr.sa_data;
-    sprintf(hwaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
-	    *hw, *(hw + 1), *(hw + 2), *(hw + 3), *(hw + 4), *(hw + 5));
-
-    /* address */
-    ioctl(fd, SIOCGIFADDR, &ifreq);
-    sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
-    sprintf(addr, "%s", inet_ntoa(sin->sin_addr));
-
-    /* broadcast */
-    ioctl(fd, SIOCGIFBRDADDR, &ifreq);
-    sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
-    sprintf(brdaddr, "%s", inet_ntoa(sin->sin_addr));
-
-    /* netmask */
-    ioctl(fd, SIOCGIFNETMASK, &ifreq);
-    sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
-    sprintf(netmask, "%s", inet_ntoa(sin->sin_addr));
+    /* flags */
+    if (ioctl(fd, SIOCGIFFLAGS, &ifreq) == 0) {
+        flags = ifreq.ifr_flags;
+
+        /* hardware address */
+        ioctl(fd, SIOCGIFHWADDR, &ifreq);
+        hw = ifreq.ifr_hwaddr.sa_data;
+        sprintf(hwaddr, "%02x:%02x:%02x:%02x:%02x:%02x",
+	        *hw, *(hw + 1), *(hw + 2), *(hw + 3), *(hw + 4), *(hw + 5));
+
+        /* address */
+        ioctl(fd, SIOCGIFADDR, &ifreq);
+        sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
+        sprintf(addr, "%s", inet_ntoa(sin->sin_addr));
+
+        /* broadcast */
+        ioctl(fd, SIOCGIFBRDADDR, &ifreq);
+        sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
+        sprintf(brdaddr, "%s", inet_ntoa(sin->sin_addr));
+
+        /* netmask */
+        ioctl(fd, SIOCGIFNETMASK, &ifreq);
+        sin = (struct sockaddr_in *)&ifreq.ifr_broadaddr;
+        sprintf(netmask, "%s", inet_ntoa(sin->sin_addr));
+    }
 
     close(fd);
-    return Py_BuildValue("{s:s,s:s,s:s,s:s}",
+    return Py_BuildValue("{s:i,s:s,s:s,s:s,s:s}",
+                         "flags", flags,
 			 "hwaddr", hwaddr,
 			 "addr", addr,
 			 "brdaddr", brdaddr,