ignore mac80211 devices specified in /etc/config/network
authorFelix Fietkau <nbd@openwrt.org>
Thu, 14 Jun 2012 16:48:33 +0000 (18:48 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 14 Jun 2012 16:48:33 +0000 (18:48 +0200)
device.c
system-dummy.c
system-linux.c
system.h

index 7958fed..a2d5637 100644 (file)
--- a/device.c
+++ b/device.c
@@ -374,6 +374,9 @@ device_create_default(const char *name, bool external)
 {
        struct device *dev;
 
+       if (!external && system_if_force_external(name))
+               return NULL;
+
        D(DEVICE, "Create simple device '%s'\n", name);
        dev = calloc(1, sizeof(*dev));
        dev->external = external;
index cae421d..a2411f3 100644 (file)
@@ -66,6 +66,11 @@ int system_vlan_del(struct device *dev)
        return 0;
 }
 
+bool system_if_force_external(const char *ifname)
+{
+       return false;
+}
+
 int system_if_up(struct device *dev)
 {
        D(SYSTEM, "ifconfig %s up\n", dev->ifname);
index c7b8b8f..ceb5ac5 100644 (file)
@@ -769,6 +769,16 @@ static void system_add_link_modes(struct blob_buf *b, __u32 mask)
        }
 }
 
+bool
+system_if_force_external(const char *ifname)
+{
+       char buf[64];
+       struct stat s;
+
+       snprintf(buf, sizeof(buf), "/sys/class/net/%s/phy80211", ifname);
+       return stat(buf, &s) == 0;
+}
+
 int
 system_if_dump_info(struct device *dev, struct blob_buf *b)
 {
index a197590..73ceb41 100644 (file)
--- a/system.h
+++ b/system.h
@@ -64,6 +64,7 @@ int system_if_check(struct device *dev);
 int system_if_dump_info(struct device *dev, struct blob_buf *b);
 int system_if_dump_stats(struct device *dev, struct blob_buf *b);
 struct device *system_if_get_parent(struct device *dev);
+bool system_if_force_external(const char *ifname);
 
 int system_add_address(struct device *dev, struct device_addr *addr);
 int system_del_address(struct device *dev, struct device_addr *addr);