platform: detect missing firmware on IFF_UP change

This commit is contained in:
Pavel Šimerda
2013-05-24 00:29:21 +02:00
parent 8489994eb0
commit 01b95ef293
3 changed files with 12 additions and 0 deletions

View File

@@ -886,6 +886,14 @@ link_change (NMPlatform *platform, int ifindex, struct rtnl_link *change)
nle = rtnl_link_change (priv->nlh, rtnllink, change, 0);
/* When netlink returns this error, it usually means it failed to find
* firmware for the device, especially on nm_platform_link_set_up ().
* This is basically the same check as in the original code and could
* potentially be improved.
*/
if (nle == -NLE_NOT_FOUND)
return NM_PLATFORM_ERROR_NO_FIRMWARE;
return refresh_object (platform, (struct nl_object *) rtnllink, nle);
}

View File

@@ -177,6 +177,8 @@ nm_platform_get_error_msg (void)
return "object already exists";
case NM_PLATFORM_ERROR_NOT_SLAVE:
return "link not a slave";
case NM_PLATFORM_ERROR_NO_FIRMWARE:
return "firmware not found";
default:
return "invalid error number";
}

View File

@@ -43,6 +43,8 @@ typedef enum {
NM_PLATFORM_ERROR_EXISTS,
/* object is not a slave */
NM_PLATFORM_ERROR_NOT_SLAVE
/* firmware is not found */
NM_PLATFORM_ERROR_NO_FIRMWARE
} NMPlatformError;
typedef enum {