Perform early check of interface scanning capabilities
authorjaviplx <javiplx@gmail.com>
Sat, 16 Oct 2010 10:39:10 +0000 (10:39 +0000)
committerjaviplx <javiplx@gmail.com>
Sat, 16 Oct 2010 10:39:10 +0000 (10:39 +0000)
git-svn-id: file:///svnroot/wifihood/trunk@62 c51dfc6a-5949-4919-9c8e-f207a149c383

wifiscand/wifiscand.c

index 5f94f2f..8aa1d81 100644 (file)
@@ -188,6 +188,17 @@ gint dbus_req_handler(const gchar * interface, const gchar * method,
             return OSSO_ERROR;
         }
 
+        /* Get range stuff */
+       iwrange        range;
+        int has_range = (iw_get_range_info(appdata->iface.sock, appdata->iface.ifname, &range) >= 0);
+
+        /* Check if the interface could support scanning. */
+        if((!has_range) || (range.we_version_compiled < 14)) {
+            retval->value.s = (gchar *) realloc(retval->value.s,35*sizeof(gchar *));
+            snprintf(retval->value.s,35,"Interface doesn't support scanning");
+            return OSSO_ERROR;
+        }
+
         struct ifreq frq;
         strncpy(frq.ifr_name, appdata->iface.ifname, IFNAMSIZ);
         if(ioctl(appdata->iface.sock, SIOCGIFFLAGS, &frq)) {