diff options
author | Thomas Haller <thaller@redhat.com> | 2015-04-14 10:07:47 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-04-14 13:04:13 +0200 |
commit | d695776d484c7cbc2fdd398cf960c6521a026b1a (patch) | |
tree | 46b230786dd9d73ef919ed34e7da7d8b19abe3b1 | |
parent | 7354dc4c586bbc076d2a238cb52f2d397cdb81c9 (diff) | |
download | NetworkManager-d695776d484c7cbc2fdd398cf960c6521a026b1a.tar.gz |
platform/trivial: move udev code closer to beginning of nm-linux-platform.c
-rw-r--r-- | src/platform/nm-linux-platform.c | 88 |
1 files changed, 46 insertions, 42 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 908c237e40..7409c943bb 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -281,6 +281,52 @@ _rtnl_addr_hack_lifetimes_rel_to_abs (struct rtnl_addr *rtnladdr) } /****************************************************************** + * udev + ******************************************************************/ + +static const char * +udev_get_driver (GUdevDevice *device, int ifindex) +{ + GUdevDevice *parent = NULL, *grandparent = NULL; + const char *driver, *subsys; + + driver = g_udev_device_get_driver (device); + if (driver) + return driver; + + /* Try the parent */ + parent = g_udev_device_get_parent (device); + if (parent) { + driver = g_udev_device_get_driver (parent); + if (!driver) { + /* Try the grandparent if it's an ibmebus device or if the + * subsys is NULL which usually indicates some sort of + * platform device like a 'gadget' net interface. + */ + subsys = g_udev_device_get_subsystem (parent); + if ( (g_strcmp0 (subsys, "ibmebus") == 0) + || (subsys == NULL)) { + grandparent = g_udev_device_get_parent (parent); + if (grandparent) { + driver = g_udev_device_get_driver (grandparent); + } + } + } + } + + /* Intern the string so we don't have to worry about memory + * management in NMPlatformLink. + */ + if (driver) + driver = g_intern_string (driver); + + g_clear_object (&parent); + g_clear_object (&grandparent); + + return driver; +} + +/****************************************************************** * NMPlatform types and functions ******************************************************************/ @@ -901,48 +947,6 @@ link_extract_type (NMPlatform *platform, struct rtnl_link *rtnllink, const char return_type (NM_LINK_TYPE_UNKNOWN, type); } -static const char * -udev_get_driver (GUdevDevice *device, int ifindex) -{ - GUdevDevice *parent = NULL, *grandparent = NULL; - const char *driver, *subsys; - - driver = g_udev_device_get_driver (device); - if (driver) - return driver; - - /* Try the parent */ - parent = g_udev_device_get_parent (device); - if (parent) { - driver = g_udev_device_get_driver (parent); - if (!driver) { - /* Try the grandparent if it's an ibmebus device or if the - * subsys is NULL which usually indicates some sort of - * platform device like a 'gadget' net interface. - */ - subsys = g_udev_device_get_subsystem (parent); - if ( (g_strcmp0 (subsys, "ibmebus") == 0) - || (subsys == NULL)) { - grandparent = g_udev_device_get_parent (parent); - if (grandparent) { - driver = g_udev_device_get_driver (grandparent); - } - } - } - } - - /* Intern the string so we don't have to worry about memory - * management in NMPlatformLink. - */ - if (driver) - driver = g_intern_string (driver); - - g_clear_object (&parent); - g_clear_object (&grandparent); - - return driver; -} - static gboolean init_link (NMPlatform *platform, NMPlatformLink *info, struct rtnl_link *rtnllink) { |