summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Arteaga <jarteaga@jbeta.is>2018-07-01 15:13:25 +0200
committerThomas Haller <thaller@redhat.com>2018-07-13 10:38:42 +0200
commit6ea0cd1300b48407f053846de93e0368f05f3bb0 (patch)
tree456ee32243c1db67affa755b1cf2b040d2e476ae
parent6c3174f6e0cdb3e0c61ab07eb244c1a6e033ff6e (diff)
downloadNetworkManager-6ea0cd1300b48407f053846de93e0368f05f3bb0.tar.gz
platform: put wireguard_family_id in NMPObjectLink
Limit the lifetime of the cached genl family ID to the lifetime of the interface so we correctly handle module reloads. https://github.com/NetworkManager/NetworkManager/pull/161
-rw-r--r--src/platform/nm-linux-platform.c10
-rw-r--r--src/platform/nmp-object.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 641f7d68c0..42bde9dbd0 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -3442,8 +3442,6 @@ typedef struct {
int is_handling;
} delayed_action;
-
- int wireguard_family_id;
} NMLinuxPlatformPrivate;
struct _NMLinuxPlatform {
@@ -6524,10 +6522,10 @@ _wireguard_get_link_properties (NMPlatform *platform, const NMPlatformLink *link
};
guint i, j;
- if (!priv->wireguard_family_id)
- priv->wireguard_family_id = _support_genl_family (priv->genl, "wireguard");
+ if (!obj->_link.wireguard_family_id)
+ obj->_link.wireguard_family_id = _support_genl_family (priv->genl, "wireguard");
- if (!priv->wireguard_family_id) {
+ if (!obj->_link.wireguard_family_id) {
_LOGD ("wireguard: kernel support not available for wireguard link %s", link->name);
goto err;
}
@@ -6536,7 +6534,7 @@ _wireguard_get_link_properties (NMPlatform *platform, const NMPlatformLink *link
if (!msg)
goto err;
- if (!genlmsg_put (msg, NL_AUTO_PORT, NL_AUTO_SEQ, priv->wireguard_family_id,
+ if (!genlmsg_put (msg, NL_AUTO_PORT, NL_AUTO_SEQ, obj->_link.wireguard_family_id,
0, NLM_F_DUMP, WG_CMD_GET_DEVICE, 1))
goto err;
diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h
index c4e3da3fdc..2923708f15 100644
--- a/src/platform/nmp-object.h
+++ b/src/platform/nmp-object.h
@@ -167,6 +167,8 @@ typedef struct {
/* Auxiliary data object for Wi-Fi and WPAN */
GObject *ext_data;
+
+ int wireguard_family_id;
} NMPObjectLink;
typedef struct {