summary refs log tree commit diff
path: root/src/libnm-base
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-base')
-rw-r--r--src/libnm-base/nm-base.c34
-rw-r--r--src/libnm-base/nm-base.h5
-rw-r--r--src/libnm-base/nm-config-base.h2
3 files changed, 41 insertions, 0 deletions
diff --git a/src/libnm-base/nm-base.c b/src/libnm-base/nm-base.c
index fa64372f..6e164908 100644
--- a/src/libnm-base/nm-base.c
+++ b/src/libnm-base/nm-base.c
@@ -39,3 +39,37 @@ nm_dhcp_iaid_from_hexstr(const char *str, guint32 *out_value)
     NM_SET_OUT(out_value, be32toh(iaid.num));
     return TRUE;
 }
+
+/*****************************************************************************/
+
+/* nm_net_devname_infiniband:
+ * @name: the output-buffer where the value will be written. Must be
+ *   not %NULL and point to a string buffer of at least IFNAMSIZ bytes.
+ * @parent_name: the parent interface name
+ * @p_key: the partition key.
+ *
+ * Returns: the infiniband name will be written to @name and @name
+ *   is returned.
+ */
+const char *
+nm_net_devname_infiniband(char name[static NM_IFNAMSIZ], const char *parent_name, int p_key)
+{
+    g_return_val_if_fail(name, NULL);
+    g_return_val_if_fail(parent_name && parent_name[0], NULL);
+    g_return_val_if_fail(strlen(parent_name) < NM_IFNAMSIZ, NULL);
+
+    /* technically, p_key of 0x0000 and 0x8000 is not allowed either. But we don't
+     * want to assert against that in nm_net_devname_infiniband(). So be more
+     * resilient here, and accept those. */
+    g_return_val_if_fail(p_key >= 0 && p_key <= 0xffff, NULL);
+
+    nm_assert(nm_utils_ifname_valid_kernel(parent_name, NULL));
+
+    /* If parent+suffix is too long, kernel would just truncate
+     * the name. We do the same. See ipoib_vlan_add().  */
+    g_snprintf(name, NM_IFNAMSIZ, "%s.%04x", parent_name, p_key);
+
+    nm_assert(nm_utils_ifname_valid_kernel(name, NULL));
+
+    return name;
+}
diff --git a/src/libnm-base/nm-base.h b/src/libnm-base/nm-base.h
index 440fbc90..65fc9299 100644
--- a/src/libnm-base/nm-base.h
+++ b/src/libnm-base/nm-base.h
@@ -432,4 +432,9 @@ char *nm_dhcp_iaid_to_hexstr(guint32 iaid, char buf[static NM_DHCP_IAID_TO_HEXST
 
 gboolean nm_dhcp_iaid_from_hexstr(const char *str, guint32 *out_value);
 
+/*****************************************************************************/
+
+const char *
+nm_net_devname_infiniband(char name[static NM_IFNAMSIZ], const char *parent_name, int p_key);
+
 #endif /* __NM_LIBNM_BASE_H__ */
diff --git a/src/libnm-base/nm-config-base.h b/src/libnm-base/nm-config-base.h
index c413e867..c90efc1b 100644
--- a/src/libnm-base/nm-config-base.h
+++ b/src/libnm-base/nm-config-base.h
@@ -30,6 +30,7 @@
 #define NM_CONFIG_KEYFILE_KEY_MAIN_HOSTNAME_MODE               "hostname-mode"
 #define NM_CONFIG_KEYFILE_KEY_MAIN_IGNORE_CARRIER              "ignore-carrier"
 #define NM_CONFIG_KEYFILE_KEY_MAIN_IWD_CONFIG_PATH             "iwd-config-path"
+#define NM_CONFIG_KEYFILE_KEY_MAIN_MIGRATE_IFCFG_RH            "migrate-ifcfg-rh"
 #define NM_CONFIG_KEYFILE_KEY_MAIN_MONITOR_CONNECTION_FILES    "monitor-connection-files"
 #define NM_CONFIG_KEYFILE_KEY_MAIN_NO_AUTO_DEFAULT             "no-auto-default"
 #define NM_CONFIG_KEYFILE_KEY_MAIN_PLUGINS                     "plugins"
@@ -50,6 +51,7 @@
 #define NM_CONFIG_KEYFILE_KEY_KEYFILE_PATH              "path"
 #define NM_CONFIG_KEYFILE_KEY_KEYFILE_UNMANAGED_DEVICES "unmanaged-devices"
 #define NM_CONFIG_KEYFILE_KEY_KEYFILE_HOSTNAME          "hostname"
+#define NM_CONFIG_KEYFILE_KEY_KEYFILE_RENAME            "rename"
 
 #define NM_CONFIG_KEYFILE_KEY_IFUPDOWN_MANAGED "managed"