|
Packit Service |
b23acc |
// SPDX-License-Identifier: GPL-2.0+
|
|
Packit Service |
b23acc |
/*
|
|
Packit Service |
b23acc |
* Copyright (C) 2008 - 2017 Red Hat, Inc.
|
|
Packit Service |
b23acc |
*/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#include "nm-default.h"
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#include "nms-ifcfg-rh-utils.h"
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#include <stdlib.h>
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#include "nm-core-internal.h"
|
|
Packit Service |
b23acc |
#include "NetworkManagerUtils.h"
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#include "nms-ifcfg-rh-common.h"
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*****************************************************************************/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_parse_unhandled_spec (const char *unhandled_spec,
|
|
Packit Service |
b23acc |
const char **out_unmanaged_spec,
|
|
Packit Service |
b23acc |
const char **out_unrecognized_spec)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
if (unhandled_spec) {
|
|
Packit Service |
b23acc |
if (NM_STR_HAS_PREFIX (unhandled_spec, "unmanaged:")) {
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unmanaged_spec, &unhandled_spec[NM_STRLEN ("unmanaged:")]);
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unrecognized_spec, NULL);
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (NM_STR_HAS_PREFIX (unhandled_spec, "unrecognized:")) {
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unmanaged_spec, NULL);
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unrecognized_spec, &unhandled_spec[NM_STRLEN ("unrecognized:")]);
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unmanaged_spec, NULL);
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_unrecognized_spec, NULL);
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*****************************************************************************/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*
|
|
Packit Service |
b23acc |
* Check ';[a-fA-F0-9]{8}' file suffix used for temporary files by rpm when
|
|
Packit Service |
b23acc |
* installing packages.
|
|
Packit Service |
b23acc |
*
|
|
Packit Service |
b23acc |
* Implementation taken from upstart.
|
|
Packit Service |
b23acc |
*/
|
|
Packit Service |
b23acc |
static gboolean
|
|
Packit Service |
b23acc |
check_rpm_temp_suffix (const char *path)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
const char *ptr;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (path != NULL, FALSE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Matches *;[a-fA-F0-9]{8}; used by rpm */
|
|
Packit Service |
b23acc |
ptr = strrchr (path, ';');
|
|
Packit Service |
b23acc |
if ( ptr
|
|
Packit Service |
b23acc |
&& strspn (ptr + 1, "abcdefABCDEF0123456789") == 8
|
|
Packit Service |
b23acc |
&& !ptr[9])
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
static gboolean
|
|
Packit Service |
b23acc |
check_suffix (const char *base, const char *tag)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
int len, tag_len;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (base != NULL, TRUE);
|
|
Packit Service |
b23acc |
g_return_val_if_fail (tag != NULL, TRUE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
len = strlen (base);
|
|
Packit Service |
b23acc |
tag_len = strlen (tag);
|
|
Packit Service |
b23acc |
if ((len > tag_len) && !g_ascii_strcasecmp (base + len - tag_len, tag))
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
utils_should_ignore_file (const char *filename, gboolean only_ifcfg)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gs_free char *base = NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (filename != NULL, TRUE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
base = g_path_get_basename (filename);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Only handle ifcfg, keys, and routes files */
|
|
Packit Service |
b23acc |
if (strncmp (base, IFCFG_TAG, strlen (IFCFG_TAG)) != 0) {
|
|
Packit Service |
b23acc |
if (only_ifcfg)
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
else if ( strncmp (base, KEYS_TAG, strlen (KEYS_TAG)) != 0
|
|
Packit Service |
b23acc |
&& strncmp (base, ROUTE_TAG, strlen (ROUTE_TAG)) != 0
|
|
Packit Service |
b23acc |
&& strncmp (base, ROUTE6_TAG, strlen (ROUTE6_TAG)) != 0)
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* But not those that have certain suffixes */
|
|
Packit Service |
b23acc |
if ( check_suffix (base, BAK_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, TILDE_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, ORIG_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, REJ_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, RPMNEW_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, AUGNEW_TAG)
|
|
Packit Service |
b23acc |
|| check_suffix (base, AUGTMP_TAG)
|
|
Packit Service |
b23acc |
|| check_rpm_temp_suffix (base))
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_cert_path (const char *parent, const char *suffix, const char *extension)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gs_free char *dir = NULL;
|
|
Packit Service |
b23acc |
const char *name;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (parent, NULL);
|
|
Packit Service |
b23acc |
g_return_val_if_fail (suffix, NULL);
|
|
Packit Service |
b23acc |
g_return_val_if_fail (extension, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
name = utils_get_ifcfg_name (parent, FALSE);
|
|
Packit Service |
b23acc |
g_return_val_if_fail (name, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
dir = g_path_get_dirname (parent);
|
|
Packit Service |
b23acc |
return g_strdup_printf ("%s/%s-%s.%s", dir, name, suffix, extension);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const char *
|
|
Packit Service |
b23acc |
utils_get_ifcfg_name (const char *file, gboolean only_ifcfg)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
const char *name;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (file != NULL, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
name = strrchr (file, '/');
|
|
Packit Service |
b23acc |
if (!name)
|
|
Packit Service |
b23acc |
name = file;
|
|
Packit Service |
b23acc |
else
|
|
Packit Service |
b23acc |
name++;
|
|
Packit Service |
b23acc |
if (!*name)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#define MATCH_TAG_AND_RETURN(name, TAG) \
|
|
Packit Service |
b23acc |
G_STMT_START { \
|
|
Packit Service |
b23acc |
if (strncmp (name, TAG, NM_STRLEN (TAG)) == 0) { \
|
|
Packit Service |
b23acc |
name += NM_STRLEN (TAG); \
|
|
Packit Service |
b23acc |
if (name[0] == '\0') \
|
|
Packit Service |
b23acc |
return NULL; \
|
|
Packit Service |
b23acc |
else \
|
|
Packit Service |
b23acc |
return name; \
|
|
Packit Service |
b23acc |
} \
|
|
Packit Service |
b23acc |
} G_STMT_END
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Do not detect alias files and return 'eth0:0' instead of 'eth0'.
|
|
Packit Service |
b23acc |
* Unfortunately, we cannot be sure that our files don't contain colons,
|
|
Packit Service |
b23acc |
* so we cannot reject files with colons.
|
|
Packit Service |
b23acc |
*
|
|
Packit Service |
b23acc |
* Instead, you must not call utils_get_ifcfg_name() with an alias file
|
|
Packit Service |
b23acc |
* or files that are ignored. */
|
|
Packit Service |
b23acc |
MATCH_TAG_AND_RETURN (name, IFCFG_TAG);
|
|
Packit Service |
b23acc |
if (!only_ifcfg) {
|
|
Packit Service |
b23acc |
MATCH_TAG_AND_RETURN (name, KEYS_TAG);
|
|
Packit Service |
b23acc |
MATCH_TAG_AND_RETURN (name, ROUTE_TAG);
|
|
Packit Service |
b23acc |
MATCH_TAG_AND_RETURN (name, ROUTE6_TAG);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Used to get any ifcfg/extra file path from any other ifcfg/extra path
|
|
Packit Service |
b23acc |
* in the form <tag><name>.
|
|
Packit Service |
b23acc |
*/
|
|
Packit Service |
b23acc |
static char *
|
|
Packit Service |
b23acc |
utils_get_extra_path (const char *parent, const char *tag)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
char *item_path = NULL, *dirname;
|
|
Packit Service |
b23acc |
const char *name;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (parent != NULL, NULL);
|
|
Packit Service |
b23acc |
g_return_val_if_fail (tag != NULL, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
dirname = g_path_get_dirname (parent);
|
|
Packit Service |
b23acc |
if (!dirname)
|
|
Packit Service |
b23acc |
g_return_val_if_reached (NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
name = utils_get_ifcfg_name (parent, FALSE);
|
|
Packit Service |
b23acc |
if (name) {
|
|
Packit Service |
b23acc |
if (!strcmp (dirname, "."))
|
|
Packit Service |
b23acc |
item_path = g_strdup_printf ("%s%s", tag, name);
|
|
Packit Service |
b23acc |
else
|
|
Packit Service |
b23acc |
item_path = g_strdup_printf ("%s/%s%s", dirname, tag, name);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
g_free (dirname);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return item_path;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_get_ifcfg_path (const char *parent)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_path (parent, IFCFG_TAG);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_get_keys_path (const char *parent)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_path (parent, KEYS_TAG);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_get_route_path (const char *parent)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_path (parent, ROUTE_TAG);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_get_route6_path (const char *parent)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_path (parent, ROUTE6_TAG);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
shvarFile *
|
|
Packit Service |
b23acc |
utils_get_extra_ifcfg (const char *parent, const char *tag, gboolean should_create)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
shvarFile *ifcfg = NULL;
|
|
Packit Service |
b23acc |
char *path;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
path = utils_get_extra_path (parent, tag);
|
|
Packit Service |
b23acc |
if (!path)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (should_create && !g_file_test (path, G_FILE_TEST_EXISTS))
|
|
Packit Service |
b23acc |
ifcfg = svCreateFile (path);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (!ifcfg)
|
|
Packit Service |
b23acc |
ifcfg = svOpenFile (path, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_free (path);
|
|
Packit Service |
b23acc |
return ifcfg;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
shvarFile *
|
|
Packit Service |
b23acc |
utils_get_keys_ifcfg (const char *parent, gboolean should_create)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_ifcfg (parent, KEYS_TAG, should_create);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
shvarFile *
|
|
Packit Service |
b23acc |
utils_get_route_ifcfg (const char *parent, gboolean should_create)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
return utils_get_extra_ifcfg (parent, ROUTE_TAG, should_create);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Finds out if route file has new or older format
|
|
Packit Service |
b23acc |
* Returns TRUE - new syntax (ADDRESS<n>=a.b.c.d ...), error opening file or empty
|
|
Packit Service |
b23acc |
* FALSE - older syntax, i.e. argument to 'ip route add' (1.2.3.0/24 via 11.22.33.44)
|
|
Packit Service |
b23acc |
*/
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
utils_has_route_file_new_syntax (const char *filename)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gs_free char *contents_data = NULL;
|
|
Packit Service |
b23acc |
gsize len;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (filename != NULL, TRUE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (!g_file_get_contents (filename, &contents_data, &len, NULL))
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return utils_has_route_file_new_syntax_content (contents_data, len);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
utils_has_route_file_new_syntax_content (const char *contents,
|
|
Packit Service |
b23acc |
gsize len)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
if (len <= 0)
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
while (TRUE) {
|
|
Packit Service |
b23acc |
const char *line = contents;
|
|
Packit Service |
b23acc |
char *eol;
|
|
Packit Service |
b23acc |
gboolean found = FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* matches regex "^[[:space:]]*ADDRESS[0-9]+=" */
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
eol = (char *) strchr (contents, '\n');
|
|
Packit Service |
b23acc |
if (eol) {
|
|
Packit Service |
b23acc |
eol[0] = '\0';
|
|
Packit Service |
b23acc |
contents = &eol[1];
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
line = nm_str_skip_leading_spaces (line);
|
|
Packit Service |
b23acc |
if (NM_STR_HAS_PREFIX (line, "ADDRESS")) {
|
|
Packit Service |
b23acc |
line += NM_STRLEN ("ADDRESS");
|
|
Packit Service |
b23acc |
if (g_ascii_isdigit (line[0])) {
|
|
Packit Service |
b23acc |
while (g_ascii_isdigit ((++line)[0])) {
|
|
Packit Service |
b23acc |
/* pass */
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (line[0] == '=')
|
|
Packit Service |
b23acc |
found = TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (eol) {
|
|
Packit Service |
b23acc |
/* restore the line ending. We don't want to mangle the content from
|
|
Packit Service |
b23acc |
* POV of the caller. */
|
|
Packit Service |
b23acc |
eol[0] = '\n';
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (found)
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
if (!eol)
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
utils_has_complex_routes (const char *filename, int addr_family)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
g_return_val_if_fail (filename, TRUE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (NM_IN_SET (addr_family, AF_UNSPEC, AF_INET)) {
|
|
Packit Service |
b23acc |
gs_free char *rules = utils_get_extra_path (filename, RULE_TAG);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (g_file_test (rules, G_FILE_TEST_EXISTS))
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (NM_IN_SET (addr_family, AF_UNSPEC, AF_INET6)) {
|
|
Packit Service |
b23acc |
gs_free char *rules = utils_get_extra_path (filename, RULE6_TAG);
|
|
Packit Service |
b23acc |
if (g_file_test (rules, G_FILE_TEST_EXISTS))
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Find out if the 'alias' file name might be an alias file for 'ifcfg' file name,
|
|
Packit Service |
b23acc |
* or any alias when 'ifcfg' is NULL. Does not check that it's actually a valid
|
|
Packit Service |
b23acc |
* alias name; that happens in reader.c
|
|
Packit Service |
b23acc |
*/
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
utils_is_ifcfg_alias_file (const char *alias, const char *ifcfg)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
g_return_val_if_fail (alias != NULL, FALSE);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (strncmp (alias, IFCFG_TAG, strlen (IFCFG_TAG)))
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (ifcfg) {
|
|
Packit Service |
b23acc |
size_t len = strlen (ifcfg);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return (strncmp (alias, ifcfg, len) == 0 && alias[len] == ':');
|
|
Packit Service |
b23acc |
} else {
|
|
Packit Service |
b23acc |
return (strchr (alias, ':') != NULL);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
char *
|
|
Packit Service |
b23acc |
utils_detect_ifcfg_path (const char *path, gboolean only_ifcfg)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
const char *base;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
g_return_val_if_fail (path != NULL, NULL);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (utils_should_ignore_file (path, only_ifcfg))
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
base = strrchr (path, '/');
|
|
Packit Service |
b23acc |
if (!base)
|
|
Packit Service |
b23acc |
base = path;
|
|
Packit Service |
b23acc |
else
|
|
Packit Service |
b23acc |
base += 1;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (NM_STR_HAS_PREFIX (base, IFCFG_TAG)) {
|
|
Packit Service |
b23acc |
if (base[NM_STRLEN (IFCFG_TAG)] == '\0')
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
if (utils_is_ifcfg_alias_file (base, NULL)) {
|
|
Packit Service |
b23acc |
gs_free char *ifcfg = NULL;
|
|
Packit Service |
b23acc |
char *ptr;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
ifcfg = g_strdup (path);
|
|
Packit Service |
b23acc |
ptr = strrchr (ifcfg, ':');
|
|
Packit Service |
b23acc |
if ( ptr
|
|
Packit Service |
b23acc |
&& ptr > ifcfg
|
|
Packit Service |
b23acc |
&& !strchr (ptr, '/')) {
|
|
Packit Service |
b23acc |
*ptr = '\0';
|
|
Packit Service |
b23acc |
if (g_file_test (ifcfg, G_FILE_TEST_EXISTS)) {
|
|
Packit Service |
b23acc |
/* the file has a colon, so it is probably an alias.
|
|
Packit Service |
b23acc |
* To be ~more~ certain that this is an alias file,
|
|
Packit Service |
b23acc |
* check whether a corresponding base file exists. */
|
|
Packit Service |
b23acc |
if (only_ifcfg)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
return g_steal_pointer (&ifcfg);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
return g_strdup (path);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (only_ifcfg)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
return utils_get_ifcfg_path (path);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
void
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_user_key_encode (const char *key, GString *str_buffer)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gsize i;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
nm_assert (key);
|
|
Packit Service |
b23acc |
nm_assert (str_buffer);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
for (i = 0; key[i]; i++) {
|
|
Packit Service |
b23acc |
char ch = key[i];
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* we encode the key in only upper case letters, digits, and underscore.
|
|
Packit Service |
b23acc |
* As we expect lower-case letters to be more common, we encode lower-case
|
|
Packit Service |
b23acc |
* letters as upper case, and upper-case letters with a leading underscore. */
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (ch >= '0' && ch <= '9') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch);
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch >= 'a' && ch <= 'z') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch - 'a' + 'A');
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch == '.') {
|
|
Packit Service |
b23acc |
g_string_append (str_buffer, "__");
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch >= 'A' && ch <= 'Z') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, '_');
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch);
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
g_string_append_printf (str_buffer, "_%03o", (unsigned) ch);
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_user_key_decode (const char *name, GString *str_buffer)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gsize i;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
nm_assert (name);
|
|
Packit Service |
b23acc |
nm_assert (str_buffer);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (!name[0])
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
for (i = 0; name[i]; ) {
|
|
Packit Service |
b23acc |
char ch = name[i];
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (ch >= '0' && ch <= '9') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch);
|
|
Packit Service |
b23acc |
i++;
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch >= 'A' && ch <= 'Z') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch - 'A' + 'a');
|
|
Packit Service |
b23acc |
i++;
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (ch == '_') {
|
|
Packit Service |
b23acc |
ch = name[i + 1];
|
|
Packit Service |
b23acc |
if (ch == '_') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, '.');
|
|
Packit Service |
b23acc |
i += 2;
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch >= 'A' && ch <= 'Z') {
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch);
|
|
Packit Service |
b23acc |
i += 2;
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
if (ch >= '0' && ch <= '7') {
|
|
Packit Service |
b23acc |
char ch2, ch3;
|
|
Packit Service |
b23acc |
unsigned v;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
ch2 = name[i + 2];
|
|
Packit Service |
b23acc |
if (!(ch2 >= '0' && ch2 <= '7'))
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
ch3 = name[i + 3];
|
|
Packit Service |
b23acc |
if (!(ch3 >= '0' && ch3 <= '7'))
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#define OCTAL_VALUE(ch) ((unsigned) ((ch) - '0'))
|
|
Packit Service |
b23acc |
v = (OCTAL_VALUE (ch) << 6) +
|
|
Packit Service |
b23acc |
(OCTAL_VALUE (ch2) << 3) +
|
|
Packit Service |
b23acc |
OCTAL_VALUE (ch3);
|
|
Packit Service |
b23acc |
if ( v > 0xFF
|
|
Packit Service |
b23acc |
|| v == 0)
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
ch = (char) v;
|
|
Packit Service |
b23acc |
if ( (ch >= 'A' && ch <= 'Z')
|
|
Packit Service |
b23acc |
|| (ch >= '0' && ch <= '9')
|
|
Packit Service |
b23acc |
|| (ch == '.')
|
|
Packit Service |
b23acc |
|| (ch >= 'a' && ch <= 'z')) {
|
|
Packit Service |
b23acc |
/* such characters are not expected to be encoded via
|
|
Packit Service |
b23acc |
* octal representation. The encoding is invalid. */
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
g_string_append_c (str_buffer, ch);
|
|
Packit Service |
b23acc |
i += 4;
|
|
Packit Service |
b23acc |
continue;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*****************************************************************************/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const char *const _nm_ethtool_ifcfg_names[] = {
|
|
Packit Service |
b23acc |
#define ETHT_NAME(eid, ename) [eid] = ""ename""
|
|
Packit Service |
b23acc |
/* indexed by NMEthtoolID */
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX, "adaptive-rx"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX, "adaptive-tx"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_FRAMES, "rx-frames"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH, "rx-frames-high"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ, "rx-frames-irq"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW, "rx-frames-low"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH, "pkt-rate-high"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW, "pkt-rate-low"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_USECS, "rx-usecs"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH, "rx-usecs-high"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ, "rx-usecs-irq"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW, "rx-usecs-low"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL, "sample-interval"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS, "stats-block-usecs"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_FRAMES, "tx-frames"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH, "tx-frames-high"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ, "tx-frames-irq"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW, "tx-frames-low"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_USECS, "tx-usecs"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH, "tx-usecs-high"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ, "tx-usecs-irq"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW, "tx-usecs-low"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_ESP_HW_OFFLOAD, "esp-hw-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_ESP_TX_CSUM_HW_OFFLOAD, "esp-tx-csum-hw-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_FCOE_MTU, "fcoe-mtu"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_GRO, "gro"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_GSO, "gso"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_HIGHDMA, "highdma"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_HW_TC_OFFLOAD, "hw-tc-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_L2_FWD_OFFLOAD, "l2-fwd-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_LOOPBACK, "loopback"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_LRO, "lro"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_NTUPLE, "ntuple"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX, "rx"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RXHASH, "rxhash"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RXVLAN, "rxvlan"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_ALL, "rx-all"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_FCS, "rx-fcs"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_GRO_HW, "rx-gro-hw"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD, "rx-udp_tunnel-port-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_VLAN_FILTER, "rx-vlan-filter"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_FILTER, "rx-vlan-stag-filter"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_HW_PARSE, "rx-vlan-stag-hw-parse"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_SG, "sg"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TLS_HW_RECORD, "tls-hw-record"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TLS_HW_TX_OFFLOAD, "tls-hw-tx-offload"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TSO, "tso"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX, "tx"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TXVLAN, "txvlan"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_FCOE_CRC, "tx-checksum-fcoe-crc"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV4, "tx-checksum-ipv4"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV6, "tx-checksum-ipv6"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IP_GENERIC, "tx-checksum-ip-generic"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_SCTP, "tx-checksum-sctp"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_ESP_SEGMENTATION, "tx-esp-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_FCOE_SEGMENTATION, "tx-fcoe-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_GRE_CSUM_SEGMENTATION, "tx-gre-csum-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_GRE_SEGMENTATION, "tx-gre-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_GSO_PARTIAL, "tx-gso-partial"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_GSO_ROBUST, "tx-gso-robust"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_IPXIP4_SEGMENTATION, "tx-ipxip4-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_IPXIP6_SEGMENTATION, "tx-ipxip6-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_NOCACHE_COPY, "tx-nocache-copy"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER, "tx-scatter-gather"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER_FRAGLIST, "tx-scatter-gather-fraglist"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_SCTP_SEGMENTATION, "tx-sctp-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_TCP6_SEGMENTATION, "tx-tcp6-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_TCP_ECN_SEGMENTATION, "tx-tcp-ecn-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_TCP_MANGLEID_SEGMENTATION, "tx-tcp-mangleid-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_TCP_SEGMENTATION, "tx-tcp-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_UDP_SEGMENTATION, "tx-udp-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION, "tx-udp_tnl-csum-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_SEGMENTATION, "tx-udp_tnl-segmentation"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_FEATURE_TX_VLAN_STAG_HW_INSERT, "tx-vlan-stag-hw-insert"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_RING_RX, "rx"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_RING_RX_JUMBO, "rx-jumbo"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_RING_RX_MINI, "rx-mini"),
|
|
Packit Service |
b23acc |
ETHT_NAME (NM_ETHTOOL_ID_RING_TX, "tx"),
|
|
Packit Service |
b23acc |
};
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
static
|
|
Packit Service |
b23acc |
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (
|
|
Packit Service |
b23acc |
_get_ethtoolid_coalesce_by_name,
|
|
Packit Service |
b23acc |
NMEthtoolID,
|
|
Packit Service |
b23acc |
{ nm_assert (name); },
|
|
Packit Service |
b23acc |
{ return NM_ETHTOOL_ID_UNKNOWN; },
|
|
Packit Service |
b23acc |
{ "adaptive-rx", NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX },
|
|
Packit Service |
b23acc |
{ "adaptive-tx", NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX },
|
|
Packit Service |
b23acc |
{ "pkt-rate-high", NM_ETHTOOL_ID_COALESCE_PKT_RATE_HIGH },
|
|
Packit Service |
b23acc |
{ "pkt-rate-low", NM_ETHTOOL_ID_COALESCE_PKT_RATE_LOW },
|
|
Packit Service |
b23acc |
{ "rx-frames", NM_ETHTOOL_ID_COALESCE_RX_FRAMES },
|
|
Packit Service |
b23acc |
{ "rx-frames-high", NM_ETHTOOL_ID_COALESCE_RX_FRAMES_HIGH },
|
|
Packit Service |
b23acc |
{ "rx-frames-irq", NM_ETHTOOL_ID_COALESCE_RX_FRAMES_IRQ },
|
|
Packit Service |
b23acc |
{ "rx-frames-low", NM_ETHTOOL_ID_COALESCE_RX_FRAMES_LOW },
|
|
Packit Service |
b23acc |
{ "rx-usecs", NM_ETHTOOL_ID_COALESCE_RX_USECS },
|
|
Packit Service |
b23acc |
{ "rx-usecs-high", NM_ETHTOOL_ID_COALESCE_RX_USECS_HIGH },
|
|
Packit Service |
b23acc |
{ "rx-usecs-irq", NM_ETHTOOL_ID_COALESCE_RX_USECS_IRQ },
|
|
Packit Service |
b23acc |
{ "rx-usecs-low", NM_ETHTOOL_ID_COALESCE_RX_USECS_LOW },
|
|
Packit Service |
b23acc |
{ "sample-interval", NM_ETHTOOL_ID_COALESCE_SAMPLE_INTERVAL },
|
|
Packit Service |
b23acc |
{ "stats-block-usecs", NM_ETHTOOL_ID_COALESCE_STATS_BLOCK_USECS },
|
|
Packit Service |
b23acc |
{ "tx-frames", NM_ETHTOOL_ID_COALESCE_TX_FRAMES },
|
|
Packit Service |
b23acc |
{ "tx-frames-high", NM_ETHTOOL_ID_COALESCE_TX_FRAMES_HIGH },
|
|
Packit Service |
b23acc |
{ "tx-frames-irq", NM_ETHTOOL_ID_COALESCE_TX_FRAMES_IRQ },
|
|
Packit Service |
b23acc |
{ "tx-frames-low", NM_ETHTOOL_ID_COALESCE_TX_FRAMES_LOW },
|
|
Packit Service |
b23acc |
{ "tx-usecs", NM_ETHTOOL_ID_COALESCE_TX_USECS },
|
|
Packit Service |
b23acc |
{ "tx-usecs-high", NM_ETHTOOL_ID_COALESCE_TX_USECS_HIGH },
|
|
Packit Service |
b23acc |
{ "tx-usecs-irq", NM_ETHTOOL_ID_COALESCE_TX_USECS_IRQ },
|
|
Packit Service |
b23acc |
{ "tx-usecs-low", NM_ETHTOOL_ID_COALESCE_TX_USECS_LOW },
|
|
Packit Service |
b23acc |
);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
static
|
|
Packit Service |
b23acc |
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (
|
|
Packit Service |
b23acc |
_get_ethtoolid_feature_by_name,
|
|
Packit Service |
b23acc |
NMEthtoolID,
|
|
Packit Service |
b23acc |
{ nm_assert (name); },
|
|
Packit Service |
b23acc |
{ return NM_ETHTOOL_ID_UNKNOWN; },
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Map the names from kernel/ethtool/ifcfg to NMEthtoolID. Note that ethtool utility has built-in
|
|
Packit Service |
b23acc |
* features and NetworkManager's API follows the naming of these built-in features, whenever
|
|
Packit Service |
b23acc |
* they exist.
|
|
Packit Service |
b23acc |
* For example, NM's "ethtool.feature-ntuple" corresponds to ethtool utility's "ntuple"
|
|
Packit Service |
b23acc |
* feature. However the underlying kernel feature is called "rx-ntuple-filter" (as reported
|
|
Packit Service |
b23acc |
* for ETH_SS_FEATURES).
|
|
Packit Service |
b23acc |
*
|
|
Packit Service |
b23acc |
* With ethtool utility, whose command line we attempt to parse here, the user can also
|
|
Packit Service |
b23acc |
* specify the name of the underlying kernel feature directly. So, check whether that is
|
|
Packit Service |
b23acc |
* the case and if yes, map them to the corresponding NetworkManager's features.
|
|
Packit Service |
b23acc |
*
|
|
Packit Service |
b23acc |
* That is why there are duplicate IDs in this list. */
|
|
Packit Service |
b23acc |
{ "esp-hw-offload", NM_ETHTOOL_ID_FEATURE_ESP_HW_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "esp-tx-csum-hw-offload", NM_ETHTOOL_ID_FEATURE_ESP_TX_CSUM_HW_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "fcoe-mtu", NM_ETHTOOL_ID_FEATURE_FCOE_MTU },
|
|
Packit Service |
b23acc |
{ "gro", NM_ETHTOOL_ID_FEATURE_GRO },
|
|
Packit Service |
b23acc |
{ "gso", NM_ETHTOOL_ID_FEATURE_GSO },
|
|
Packit Service |
b23acc |
{ "highdma", NM_ETHTOOL_ID_FEATURE_HIGHDMA },
|
|
Packit Service |
b23acc |
{ "hw-tc-offload", NM_ETHTOOL_ID_FEATURE_HW_TC_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "l2-fwd-offload", NM_ETHTOOL_ID_FEATURE_L2_FWD_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "loopback", NM_ETHTOOL_ID_FEATURE_LOOPBACK },
|
|
Packit Service |
b23acc |
{ "lro", NM_ETHTOOL_ID_FEATURE_LRO },
|
|
Packit Service |
b23acc |
{ "ntuple", NM_ETHTOOL_ID_FEATURE_NTUPLE },
|
|
Packit Service |
b23acc |
{ "rx", NM_ETHTOOL_ID_FEATURE_RX },
|
|
Packit Service |
b23acc |
{ "rx-all", NM_ETHTOOL_ID_FEATURE_RX_ALL },
|
|
Packit Service |
b23acc |
{ "rx-checksum", NM_ETHTOOL_ID_FEATURE_RX }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-fcs", NM_ETHTOOL_ID_FEATURE_RX_FCS },
|
|
Packit Service |
b23acc |
{ "rx-gro", NM_ETHTOOL_ID_FEATURE_GRO }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-gro-hw", NM_ETHTOOL_ID_FEATURE_RX_GRO_HW },
|
|
Packit Service |
b23acc |
{ "rx-hashing", NM_ETHTOOL_ID_FEATURE_RXHASH }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-lro", NM_ETHTOOL_ID_FEATURE_LRO }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-ntuple-filter", NM_ETHTOOL_ID_FEATURE_NTUPLE }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-udp_tunnel-port-offload", NM_ETHTOOL_ID_FEATURE_RX_UDP_TUNNEL_PORT_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "rx-vlan-filter", NM_ETHTOOL_ID_FEATURE_RX_VLAN_FILTER },
|
|
Packit Service |
b23acc |
{ "rx-vlan-hw-parse", NM_ETHTOOL_ID_FEATURE_RXVLAN }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "rx-vlan-stag-filter", NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_FILTER },
|
|
Packit Service |
b23acc |
{ "rx-vlan-stag-hw-parse", NM_ETHTOOL_ID_FEATURE_RX_VLAN_STAG_HW_PARSE },
|
|
Packit Service |
b23acc |
{ "rxhash", NM_ETHTOOL_ID_FEATURE_RXHASH },
|
|
Packit Service |
b23acc |
{ "rxvlan", NM_ETHTOOL_ID_FEATURE_RXVLAN },
|
|
Packit Service |
b23acc |
{ "sg", NM_ETHTOOL_ID_FEATURE_SG },
|
|
Packit Service |
b23acc |
{ "tls-hw-record", NM_ETHTOOL_ID_FEATURE_TLS_HW_RECORD },
|
|
Packit Service |
b23acc |
{ "tls-hw-tx-offload", NM_ETHTOOL_ID_FEATURE_TLS_HW_TX_OFFLOAD },
|
|
Packit Service |
b23acc |
{ "tso", NM_ETHTOOL_ID_FEATURE_TSO },
|
|
Packit Service |
b23acc |
{ "tx", NM_ETHTOOL_ID_FEATURE_TX },
|
|
Packit Service |
b23acc |
{ "tx-checksum-fcoe-crc", NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_FCOE_CRC },
|
|
Packit Service |
b23acc |
{ "tx-checksum-ip-generic", NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IP_GENERIC },
|
|
Packit Service |
b23acc |
{ "tx-checksum-ipv4", NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV4 },
|
|
Packit Service |
b23acc |
{ "tx-checksum-ipv6", NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_IPV6 },
|
|
Packit Service |
b23acc |
{ "tx-checksum-sctp", NM_ETHTOOL_ID_FEATURE_TX_CHECKSUM_SCTP },
|
|
Packit Service |
b23acc |
{ "tx-esp-segmentation", NM_ETHTOOL_ID_FEATURE_TX_ESP_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-fcoe-segmentation", NM_ETHTOOL_ID_FEATURE_TX_FCOE_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-generic-segmentation", NM_ETHTOOL_ID_FEATURE_GSO }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "tx-gre-csum-segmentation", NM_ETHTOOL_ID_FEATURE_TX_GRE_CSUM_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-gre-segmentation", NM_ETHTOOL_ID_FEATURE_TX_GRE_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-gso-partial", NM_ETHTOOL_ID_FEATURE_TX_GSO_PARTIAL },
|
|
Packit Service |
b23acc |
{ "tx-gso-robust", NM_ETHTOOL_ID_FEATURE_TX_GSO_ROBUST },
|
|
Packit Service |
b23acc |
{ "tx-ipxip4-segmentation", NM_ETHTOOL_ID_FEATURE_TX_IPXIP4_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-ipxip6-segmentation", NM_ETHTOOL_ID_FEATURE_TX_IPXIP6_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-nocache-copy", NM_ETHTOOL_ID_FEATURE_TX_NOCACHE_COPY },
|
|
Packit Service |
b23acc |
{ "tx-scatter-gather", NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER },
|
|
Packit Service |
b23acc |
{ "tx-scatter-gather-fraglist", NM_ETHTOOL_ID_FEATURE_TX_SCATTER_GATHER_FRAGLIST },
|
|
Packit Service |
b23acc |
{ "tx-sctp-segmentation", NM_ETHTOOL_ID_FEATURE_TX_SCTP_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-tcp-ecn-segmentation", NM_ETHTOOL_ID_FEATURE_TX_TCP_ECN_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-tcp-mangleid-segmentation", NM_ETHTOOL_ID_FEATURE_TX_TCP_MANGLEID_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-tcp-segmentation", NM_ETHTOOL_ID_FEATURE_TX_TCP_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-tcp6-segmentation", NM_ETHTOOL_ID_FEATURE_TX_TCP6_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-udp-segmentation", NM_ETHTOOL_ID_FEATURE_TX_UDP_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-udp_tnl-csum-segmentation", NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_CSUM_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-udp_tnl-segmentation", NM_ETHTOOL_ID_FEATURE_TX_UDP_TNL_SEGMENTATION },
|
|
Packit Service |
b23acc |
{ "tx-vlan-hw-insert", NM_ETHTOOL_ID_FEATURE_TXVLAN }, // kernel-only name
|
|
Packit Service |
b23acc |
{ "tx-vlan-stag-hw-insert", NM_ETHTOOL_ID_FEATURE_TX_VLAN_STAG_HW_INSERT },
|
|
Packit Service |
b23acc |
{ "txvlan", NM_ETHTOOL_ID_FEATURE_TXVLAN },
|
|
Packit Service |
b23acc |
);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
static
|
|
Packit Service |
b23acc |
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE (
|
|
Packit Service |
b23acc |
_get_ethtoolid_ring_by_name,
|
|
Packit Service |
b23acc |
NMEthtoolID,
|
|
Packit Service |
b23acc |
{ nm_assert (name); },
|
|
Packit Service |
b23acc |
{ return NM_ETHTOOL_ID_UNKNOWN; },
|
|
Packit Service |
b23acc |
{ "rx", NM_ETHTOOL_ID_RING_RX },
|
|
Packit Service |
b23acc |
{ "rx-jumbo", NM_ETHTOOL_ID_RING_RX_JUMBO },
|
|
Packit Service |
b23acc |
{ "rx-mini", NM_ETHTOOL_ID_RING_RX_MINI },
|
|
Packit Service |
b23acc |
{ "tx", NM_ETHTOOL_ID_RING_TX },
|
|
Packit Service |
b23acc |
);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const NMEthtoolData *
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_get_ethtool_by_name (const char *name,
|
|
Packit Service |
b23acc |
NMEthtoolType ethtool_type)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
NMEthtoolID id;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
switch (ethtool_type) {
|
|
Packit Service |
b23acc |
case NM_ETHTOOL_TYPE_COALESCE:
|
|
Packit Service |
b23acc |
id = _get_ethtoolid_coalesce_by_name (name);
|
|
Packit Service |
b23acc |
break;
|
|
Packit Service |
b23acc |
case NM_ETHTOOL_TYPE_FEATURE:
|
|
Packit Service |
b23acc |
id = _get_ethtoolid_feature_by_name (name);
|
|
Packit Service |
b23acc |
break;
|
|
Packit Service |
b23acc |
case NM_ETHTOOL_TYPE_RING:
|
|
Packit Service |
b23acc |
id = _get_ethtoolid_ring_by_name (name);
|
|
Packit Service |
b23acc |
break;
|
|
Packit Service |
b23acc |
default:
|
|
Packit Service |
b23acc |
nm_assert_not_reached();
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (id == NM_ETHTOOL_ID_UNKNOWN)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
nm_assert (_NM_INT_NOT_NEGATIVE (id));
|
|
Packit Service |
b23acc |
nm_assert (id < G_N_ELEMENTS (nm_ethtool_data));
|
|
Packit Service |
b23acc |
nm_assert (nm_ethtool_data[id]);
|
|
Packit Service |
b23acc |
nm_assert (nm_ethtool_data[id]->id == id);
|
|
Packit Service |
b23acc |
return nm_ethtool_data[id];
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*****************************************************************************/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
gboolean
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_is_numbered_tag_impl (const char *key,
|
|
Packit Service |
b23acc |
const char *tag,
|
|
Packit Service |
b23acc |
gsize tag_len,
|
|
Packit Service |
b23acc |
gint64 *out_idx)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gint64 idx;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
nm_assert (key);
|
|
Packit Service |
b23acc |
nm_assert (tag);
|
|
Packit Service |
b23acc |
nm_assert (tag_len == strlen (tag));
|
|
Packit Service |
b23acc |
nm_assert (tag_len > 0);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (strncmp (key, tag, tag_len) != 0)
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
key += tag_len;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (key[0] == '\0') {
|
|
Packit Service |
b23acc |
/* The key has no number suffix. We treat this also as a numbered
|
|
Packit Service |
b23acc |
* tag, and it is for certain tags like "IPADDR", but not so much
|
|
Packit Service |
b23acc |
* for others like "ROUTING_RULE_". The caller may want to handle
|
|
Packit Service |
b23acc |
* this case specially. */
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_idx, -1);
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (!NM_STRCHAR_ALL (key, ch, g_ascii_isdigit (ch)))
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
idx = _nm_utils_ascii_str_to_int64 (key, 10, 0, G_MAXINT64, -1);
|
|
Packit Service |
b23acc |
if (idx == -1)
|
|
Packit Service |
b23acc |
return FALSE;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_idx, idx);
|
|
Packit Service |
b23acc |
return TRUE;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/*****************************************************************************/
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
#define _KEY_TYPE(key, flags) { .key_name = ""key"", .key_flags = ((NMS_IFCFG_KEY_TYPE_WELL_KNOWN) | (flags)), }
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const NMSIfcfgKeyTypeInfo nms_ifcfg_well_known_keys[] = {
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ACD_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ADDRESS", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ARPING_WAIT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("AUTH_RETRIES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("AUTOCONNECT_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("AUTOCONNECT_RETRIES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("AUTOCONNECT_SLAVES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BAND", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BONDING_MASTER", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BONDING_OPTS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BOOTPROTO", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGE_MACADDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGE_PORT_VLANS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGE_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGE_VLANS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BRIDGING_OPTS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BROWSER_ONLY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("BSSID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CHANNEL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CIPHER_GROUP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CIPHER_PAIRWISE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CONNECTED_MODE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CONNECTION_METERED", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("CTCPROT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DCB", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FCOE_ADVERTISE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FCOE_ENABLE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FCOE_MODE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DCB_APP_FCOE_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FCOE_WILLING, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FIP_ADVERTISE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FIP_ENABLE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DCB_APP_FIP_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_FIP_WILLING, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_ISCSI_ADVERTISE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_ISCSI_ENABLE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DCB_APP_ISCSI_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_APP_ISCSI_WILLING, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PFC_ADVERTISE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PFC_ENABLE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PFC_UP, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PFC_WILLING, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_ADVERTISE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_ENABLE, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_ID, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_PCT, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_STRICT, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_UP2TC, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_UPPCT, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE (KEY_DCB_PG_WILLING, NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DEFAULTKEY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DEFROUTE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DELAY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DEVICE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DEVICETYPE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DEVTIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6C", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6_DUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6_HOSTNAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6_HOSTNAME_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6_IAID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPV6_SEND_HOSTNAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_CLIENT_ID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_FQDN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_HOSTNAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_HOSTNAME_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_IAID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCP_SEND_HOSTNAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPv6_DUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DHCPv6_IAID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DNS", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("DOMAIN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ESSID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ETHTOOL_OPTS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ETHTOOL_WAKE_ON_LAN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("FILS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("FILTER", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("GATEWAY", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("GATEWAYDEV", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("GATEWAY_PING_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("GENERATE_MAC_ADDRESS_MASK", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("GVRP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("HWADDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("HWADDR_BLACKLIST", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_ALTSUBJECT_MATCHES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_ANON_IDENTITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_AUTH_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CA_CERT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CA_CERT_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CA_CERT_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CA_PATH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CLIENT_CERT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CLIENT_CERT_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_CLIENT_CERT_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_DOMAIN_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_DOMAIN_SUFFIX_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_EAP_METHODS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_FAST_PROVISIONING", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_IDENTITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_AUTH_METHODS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CA_CERT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CA_CERT_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CA_CERT_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CLIENT_CERT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CLIENT_CERT_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_CLIENT_CERT_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_PRIVATE_KEY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_OPTIONAL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PAC_FILE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PASSWORD_RAW", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PASSWORD_RAW_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PEAP_FORCE_NEW_LABEL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PEAP_VERSION", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE1_AUTH_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE2_ALTSUBJECT_MATCHES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE2_CA_PATH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE2_DOMAIN_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE2_DOMAIN_SUFFIX_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PHASE2_SUBJECT_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PIN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PIN_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PRIVATE_KEY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PRIVATE_KEY_PASSWORD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_PRIVATE_KEY_PASSWORD_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_SUBJECT_MATCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IEEE_8021X_SYSTEM_CA_CERTS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPADDR", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV4_DHCP_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV4_DNS_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV4_FAILURE_FATAL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV4_ROUTE_METRIC", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV4_ROUTE_TABLE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6ADDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6ADDR_SECONDARIES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6FORWARDING", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6INIT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6TUNNELIPV4", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_ADDR_GEN_MODE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_AUTOCONF", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DEFAULTDEV", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DEFAULTGW", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DEFROUTE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DHCP_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DISABLED", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DNS_PRIORITY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_DOMAIN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_FAILURE_FATAL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_PEERDNS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_PEERROUTES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_PRIVACY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_PRIVACY_PREFER_PUBLIC_IP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_RA_TIMEOUT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_RES_OPTIONS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_ROUTE_METRIC", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_ROUTE_TABLE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("IPV6_TOKEN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("KEY", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("KEY_MGMT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("KEY_PASSPHRASE", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("KEY_TYPE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("LLDP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("LLMNR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MACADDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MAC_ADDRESS_RANDOMIZATION", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MASTER", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MASTER_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MATCH_DRIVER", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MATCH_INTERFACE_NAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MATCH_KERNEL_COMMAND_LINE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MATCH_PATH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MDNS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("METRIC", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MODE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MTU", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MUD_URL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MULTI_CONNECT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("MVRP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("NAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("NETMASK", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("NETTYPE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("NM_CONTROLLED", NMS_IFCFG_KEY_TYPE_IS_PLAIN | NMS_IFCFG_KEY_TYPE_KEEP_WHEN_DIRTY ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("NM_USER_", NMS_IFCFG_KEY_TYPE_IS_PREFIX ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ONBOOT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("OPTIONS", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("OVS_PORT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("OVS_PORT_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PAC_SCRIPT", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PAC_URL", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PEERDNS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PEERROUTES", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PHYSDEV", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PKEY", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PKEY_ID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PMF", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PORTNAME", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("POWERSAVE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PREFIX", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("PROXY_METHOD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("QDISC", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("REORDER_HDR", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("RES_OPTIONS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ROUTING_RULE6_", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ROUTING_RULE_", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SEARCH", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SECONDARY_UUIDS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SECURITYMODE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SLAVE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SRIOV_AUTOPROBE_DRIVERS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SRIOV_TOTAL_VFS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SRIOV_VF", NMS_IFCFG_KEY_TYPE_IS_NUMBERED ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SSID_HIDDEN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("STABLE_ID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("STP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("SUBCHANNELS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("TEAM_CONFIG", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("TEAM_MASTER", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("TEAM_MASTER_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("TEAM_PORT_CONFIG", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("TYPE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("USERS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VLAN", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VLAN_EGRESS_PRIORITY_MAP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VLAN_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VLAN_ID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VLAN_INGRESS_PRIORITY_MAP", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VRF", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("VRF_UUID", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WEP_KEY_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WPA_ALLOW_WPA", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WPA_ALLOW_WPA2", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WPA_PSK", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WPA_PSK_FLAGS", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("WPS_METHOD", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
_KEY_TYPE ("ZONE", NMS_IFCFG_KEY_TYPE_IS_PLAIN ),
|
|
Packit Service |
b23acc |
};
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const NMSIfcfgKeyTypeInfo *
|
|
Packit Service |
b23acc |
nms_ifcfg_well_known_key_find_info (const char *key, gssize *out_idx)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
gssize idx;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
G_STATIC_ASSERT (G_STRUCT_OFFSET (NMSIfcfgKeyTypeInfo, key_name) == 0);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
idx = nm_utils_array_find_binary_search (nms_ifcfg_well_known_keys,
|
|
Packit Service |
b23acc |
sizeof (nms_ifcfg_well_known_keys[0]),
|
|
Packit Service |
b23acc |
G_N_ELEMENTS (nms_ifcfg_well_known_keys),
|
|
Packit Service |
b23acc |
&key,
|
|
Packit Service |
b23acc |
nm_strcmp_p_with_data,
|
|
Packit Service |
b23acc |
NULL);
|
|
Packit Service |
b23acc |
NM_SET_OUT (out_idx, idx);
|
|
Packit Service |
b23acc |
if (idx < 0)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
return &nms_ifcfg_well_known_keys[idx];
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
const NMSIfcfgKeyTypeInfo *
|
|
Packit Service |
b23acc |
nms_ifcfg_rh_utils_is_well_known_key (const char *key)
|
|
Packit Service |
b23acc |
{
|
|
Packit Service |
b23acc |
const NMSIfcfgKeyTypeInfo *ti;
|
|
Packit Service |
b23acc |
gssize idx;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
nm_assert (key);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
ti = nms_ifcfg_well_known_key_find_info (key, &idx);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (ti) {
|
|
Packit Service |
b23acc |
if (NM_FLAGS_ANY (ti->key_flags, NMS_IFCFG_KEY_TYPE_IS_PLAIN
|
|
Packit Service |
b23acc |
| NMS_IFCFG_KEY_TYPE_IS_NUMBERED)) {
|
|
Packit Service |
b23acc |
/* These tags are valid on full match.
|
|
Packit Service |
b23acc |
*
|
|
Packit Service |
b23acc |
* Note that numbered tags we also treat as valid if they have no
|
|
Packit Service |
b23acc |
* suffix. That is correct for "IPADDR", but less so for "ROUTING_RULE_". */
|
|
Packit Service |
b23acc |
return ti;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
nm_assert (NM_FLAGS_HAS (ti->key_flags, NMS_IFCFG_KEY_TYPE_IS_PREFIX));
|
|
Packit Service |
b23acc |
/* a prefix tag needs some extra suffix afterwards to be valid. */
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
/* Not found. Maybe it's a numbered/prefixed key? With idx we got the index where
|
|
Packit Service |
b23acc |
* we should insert the key. Since the numbered/prefixed keys share a prefix, we can
|
|
Packit Service |
b23acc |
* find the possible prefix at the index before the insert position. */
|
|
Packit Service |
b23acc |
idx = ~idx;
|
|
Packit Service |
b23acc |
if (idx == 0)
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
ti = &nms_ifcfg_well_known_keys[idx - 1];
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (NM_FLAGS_HAS (ti->key_flags, NMS_IFCFG_KEY_TYPE_IS_NUMBERED)) {
|
|
Packit Service |
b23acc |
if (nms_ifcfg_rh_utils_is_numbered_tag (key, ti->key_name, NULL))
|
|
Packit Service |
b23acc |
return ti;
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if (NM_FLAGS_HAS (ti->key_flags, NMS_IFCFG_KEY_TYPE_IS_PREFIX)) {
|
|
Packit Service |
b23acc |
gsize l = strlen (ti->key_name);
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
if ( strncmp (key, ti->key_name, l) == 0
|
|
Packit Service |
b23acc |
&& key[l] != '\0')
|
|
Packit Service |
b23acc |
return ti;
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|
|
Packit Service |
b23acc |
|
|
Packit Service |
b23acc |
return NULL;
|
|
Packit Service |
b23acc |
}
|