diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2011-08-06 11:02:46 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2011-08-06 12:53:50 +0200 |
commit | 787f14229acf3cfd2e028264d42b492ed237ef73 (patch) | |
tree | f0f913745786732095dd084e129c8581877c3189 | |
parent | 64d90e9fa7002f13c9232c4cbabf10d9cf93121a (diff) | |
download | ofono-787f14229acf3cfd2e028264d42b492ed237ef73.tar.bz2 |
udev: Prioritize labeled interfaces over discovered ones
-rw-r--r-- | plugins/udevng.c | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/plugins/udevng.c b/plugins/udevng.c index d9992321..651782fa 100644 --- a/plugins/udevng.c +++ b/plugins/udevng.c @@ -67,8 +67,10 @@ static gboolean setup_gobi(struct modem_info *modem) info->number, info->label); if (g_strcmp0(info->interface, "255/255/255") == 0 && - g_strcmp0(info->number, "02") == 0) + g_strcmp0(info->number, "02") == 0) { device = info->devnode; + break; + } } if (device == NULL) @@ -95,8 +97,10 @@ static gboolean setup_sierra(struct modem_info *modem) info->number, info->label); if (g_strcmp0(info->interface, "255/255/255") == 0 && - g_strcmp0(info->number, "03") == 0) + g_strcmp0(info->number, "03") == 0) { device = info->devnode; + break; + } } if (device == NULL) @@ -124,13 +128,17 @@ static gboolean setup_huawei(struct modem_info *modem) if (g_strcmp0(info->label, "modem") == 0 || g_strcmp0(info->interface, "255/1/1") == 0 || - g_strcmp0(info->interface, "255/2/1") == 0) + g_strcmp0(info->interface, "255/2/1") == 0) { mdm = info->devnode; - else if (g_strcmp0(info->label, "pcui") == 0 || + if (pcui != NULL) + break; + } else if (g_strcmp0(info->label, "pcui") == 0 || g_strcmp0(info->interface, "255/1/2") == 0 || - g_strcmp0(info->interface, "255/2/2") == 0) + g_strcmp0(info->interface, "255/2/2") == 0) { pcui = info->devnode; - else if (g_strcmp0(info->interface, "255/255/255") == 0) { + if (mdm != NULL) + break; + } else if (g_strcmp0(info->interface, "255/255/255") == 0) { if (g_strcmp0(info->number, "00") == 0) mdm = info->devnode; else if (g_strcmp0(info->number, "02") == 0) @@ -166,11 +174,15 @@ static gboolean setup_novatel(struct modem_info *modem) DBG("%s %s %s %s", info->devnode, info->interface, info->number, info->label); - if (g_strcmp0(info->label, "aux") == 0) + if (g_strcmp0(info->label, "aux") == 0) { aux = info->devnode; - else if (g_strcmp0(info->label, "modem") == 0) + if (mdm != NULL) + break; + } else if (g_strcmp0(info->label, "modem") == 0) { mdm = info->devnode; - else if (g_strcmp0(info->interface, "255/255/255") == 0) { + if (aux != NULL) + break; + } else if (g_strcmp0(info->interface, "255/255/255") == 0) { if (g_strcmp0(info->number, "00") == 0) aux = info->devnode; else if (g_strcmp0(info->number, "01") == 0) @@ -202,11 +214,15 @@ static gboolean setup_zte(struct modem_info *modem) DBG("%s %s %s %s", info->devnode, info->interface, info->number, info->label); - if (g_strcmp0(info->label, "aux") == 0) + if (g_strcmp0(info->label, "aux") == 0) { aux = info->devnode; - else if (g_strcmp0(info->label, "modem") == 0) + if (mdm != NULL) + break; + } else if (g_strcmp0(info->label, "modem") == 0) { mdm = info->devnode; - else if (g_strcmp0(info->interface, "255/255/255") == 0) { + if (aux != NULL) + break; + } else if (g_strcmp0(info->interface, "255/255/255") == 0) { if (g_strcmp0(info->number, "01") == 0) aux = info->devnode; else if (g_strcmp0(info->number, "02") == 0) @@ -300,7 +316,8 @@ static void remove_device(struct udev_device *device) DBG("%s", syspath); - g_hash_table_foreach_remove(modem_list, check_remove, (char *) syspath); + g_hash_table_foreach_remove(modem_list, check_remove, + (char *) syspath); } static gint compare_device(gconstpointer a, gconstpointer b) |