diff options
| author | Michael Biebl <biebl@debian.org> | 2023-08-09 21:55:35 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2023-08-09 21:55:35 +0200 |
| commit | 05e4a733f2141995181a551854d5df929f084adf (patch) | |
| tree | 83bb937740a6667525ba0df046748ecaa829c269 /src/libnm-base/nm-base.c | |
| parent | 14b0f3a9dc9ea90d60a3b057350fd4d637dc021a (diff) | |
New upstream version 1.44.0 upstream/1.44.0
Diffstat (limited to 'src/libnm-base/nm-base.c')
| -rw-r--r-- | src/libnm-base/nm-base.c | 34 |
1 files changed, 34 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; +} |