You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
6.0 KiB
193 lines
6.0 KiB
From 79658533561990d93a74fd25b4d1b26c01182a8e Mon Sep 17 00:00:00 2001
|
|
From: Aaron Conole <aconole@redhat.com>
|
|
Date: Mon, 20 Sep 2021 16:27:56 -0400
|
|
Subject: [PATCH 8/8] Revert "Use interface index instead of name in libconfig"
|
|
|
|
This reverts commit e272d34f45bc15d52424228f824c1ad96932867e.
|
|
|
|
During production, it was found that the ifindex can be unstable.
|
|
See discussion at https://github.com/intel/openlldp/pull/3
|
|
|
|
Signed-off-by: Aaron Conole <aconole@redhat.com>
|
|
(cherry picked from commit 2c7dd5e4a0db201a850f8037b957acbd14950297)
|
|
---
|
|
config.c | 35 ++++++++---------------------------
|
|
include/config.h | 3 ---
|
|
lldp_dcbx_cfg.c | 24 +++++++-----------------
|
|
3 files changed, 15 insertions(+), 47 deletions(-)
|
|
|
|
diff --git a/config.c b/config.c
|
|
index 41b5045..7e969b9 100644
|
|
--- a/config.c
|
|
+++ b/config.c
|
|
@@ -55,21 +55,6 @@
|
|
|
|
config_t lldpad_cfg;
|
|
|
|
-/*
|
|
- * config_ifkey - Generates a config key
|
|
- *
|
|
- * Given an interface name this functions generates
|
|
- * a key (based on interface's index) suitable
|
|
- * to pass to libconfig.
|
|
- *
|
|
- */
|
|
-void config_ifkey(const char *name, char *ifkey) {
|
|
- int index = if_nametoindex(name);
|
|
-
|
|
- if(index)
|
|
- sprintf(ifkey, "if%d", index);
|
|
-}
|
|
-
|
|
/*
|
|
* init_cfg - initialze the global lldpad_cfg via config_init
|
|
*
|
|
@@ -466,15 +451,14 @@ static int lookup_config_value(char *path, union cfg_get v, int type)
|
|
int get_config_setting(const char *ifname, int agenttype, char *path,
|
|
union cfg_get v, int type)
|
|
{
|
|
- char p[1024], ifkey[IFNAMSIZ];
|
|
+ char p[1024];
|
|
int rval = CONFIG_FALSE;
|
|
const char *section = agent_type2section(agenttype);
|
|
|
|
/* look for setting in section->ifname area first */
|
|
if (ifname) {
|
|
- config_ifkey(ifname, ifkey);
|
|
snprintf(p, sizeof(p), "%s.%s.%s",
|
|
- section, ifkey, path);
|
|
+ section, ifname, path);
|
|
rval = lookup_config_value(p, v, type);
|
|
}
|
|
|
|
@@ -491,16 +475,15 @@ int get_config_setting(const char *ifname, int agenttype, char *path,
|
|
int remove_config_setting(const char *ifname, int agenttype, char *parent,
|
|
char *name)
|
|
{
|
|
- char p[1024], ifkey[IFNAMSIZ];
|
|
+ char p[1024];
|
|
int rval = CONFIG_FALSE;
|
|
config_setting_t *setting = NULL;
|
|
const char *section = agent_type2section(agenttype);
|
|
|
|
/* look for setting in section->ifname area first */
|
|
- if (ifname) {
|
|
- config_ifkey(ifname, ifkey);
|
|
+ if (ifname) {
|
|
snprintf(p, sizeof(p), "%s.%s.%s",
|
|
- section, ifkey, parent);
|
|
+ section, ifname, parent);
|
|
setting = config_lookup(&lldpad_cfg, p);
|
|
}
|
|
|
|
@@ -587,17 +570,15 @@ int set_config_setting(const char *ifname, int agenttype, char *path,
|
|
union cfg_set v, int type)
|
|
{
|
|
config_setting_t *setting = NULL;
|
|
- char p[1024], ifkey[IFNAMSIZ];
|
|
+ char p[1024];
|
|
int rval = cmd_success;
|
|
const char *section = agent_type2section(agenttype);
|
|
|
|
LLDPAD_DBG("%s(%i): \n", __func__, __LINE__);
|
|
|
|
- if (strlen(ifname)){
|
|
- config_ifkey(ifname, ifkey);
|
|
+ if (strlen(ifname))
|
|
snprintf(p, sizeof(p), "%s.%s.%s",
|
|
- section, ifkey, path);
|
|
- }
|
|
+ section, ifname, path);
|
|
else
|
|
snprintf(p, sizeof(p), "%s.%s.%s",
|
|
section, LLDP_COMMON, path);
|
|
diff --git a/include/config.h b/include/config.h
|
|
index 3abf8e8..61cb5da 100644
|
|
--- a/include/config.h
|
|
+++ b/include/config.h
|
|
@@ -111,7 +111,4 @@ void destroy_cfg(void);
|
|
int check_cfg_file(void);
|
|
int check_for_old_file_format(void);
|
|
void init_ports(void);
|
|
-
|
|
-void config_ifkey(const char *name, char *ifkey);
|
|
-
|
|
#endif /* _CONFIG_H_ */
|
|
diff --git a/lldp_dcbx_cfg.c b/lldp_dcbx_cfg.c
|
|
index 40cabb2..ab9cc35 100644
|
|
--- a/lldp_dcbx_cfg.c
|
|
+++ b/lldp_dcbx_cfg.c
|
|
@@ -99,15 +99,12 @@ static config_setting_t *construct_new_setting(char *device_name)
|
|
config_setting_t *tmp2_setting = NULL;
|
|
char abuf[32];
|
|
int i;
|
|
- char device_name_sanitized[IFNAMSIZ];
|
|
|
|
dcbx_setting = config_lookup(&lldpad_cfg, DCBX_SETTING);
|
|
if (!dcbx_setting)
|
|
return NULL;
|
|
|
|
- config_ifkey(device_name, device_name_sanitized);
|
|
-
|
|
- eth_setting = config_setting_add(dcbx_setting, device_name_sanitized,
|
|
+ eth_setting = config_setting_add(dcbx_setting, device_name,
|
|
CONFIG_TYPE_GROUP);
|
|
if (!eth_setting)
|
|
goto set_error;
|
|
@@ -374,13 +371,11 @@ static int _set_persistent(char *device_name, int dcb_enable,
|
|
config_setting_t *setting_value = NULL;
|
|
char abuf[2*DCB_MAX_TLV_LENGTH + 1];
|
|
int result, i;
|
|
- char device_name_sanitized[IFNAMSIZ];
|
|
|
|
dcbx_setting = config_lookup(&lldpad_cfg, DCBX_SETTING);
|
|
- config_ifkey(device_name, device_name_sanitized);
|
|
if (dcbx_setting)
|
|
eth_settings = config_setting_get_member(dcbx_setting,
|
|
- device_name_sanitized);
|
|
+ device_name);
|
|
|
|
/* init the internal data store for device_name */
|
|
if (NULL == eth_settings) {
|
|
@@ -787,15 +782,13 @@ int get_persistent(char *device_name, full_dcb_attribs *attribs)
|
|
int result = cmd_failed, i;
|
|
int results[MAX_USER_PRIORITIES];
|
|
int len;
|
|
- char abuf[32], device_name_sanitized[IFNAMSIZ];
|
|
+ char abuf[32];
|
|
|
|
memset(attribs, 0, sizeof(*attribs));
|
|
dcbx_setting = config_lookup(&lldpad_cfg, DCBX_SETTING);
|
|
-
|
|
- config_ifkey(device_name, device_name_sanitized);
|
|
if (dcbx_setting)
|
|
- eth_settings = config_setting_get_member(dcbx_setting,
|
|
- device_name_sanitized);
|
|
+ eth_settings = config_setting_get_member(dcbx_setting,
|
|
+ device_name);
|
|
|
|
/* init the internal data store for device_name */
|
|
result = get_default_persistent(device_name, attribs);
|
|
@@ -1074,16 +1067,13 @@ int get_dcb_enable_state(char *ifname, int *result)
|
|
int rc = EINVAL;
|
|
config_setting_t *settings = NULL;
|
|
char path[sizeof(DCBX_SETTING) + IFNAMSIZ + 16];
|
|
- char ifkey[IFNAMSIZ];
|
|
-
|
|
- config_ifkey(ifname, ifkey);
|
|
|
|
memset(path, 0, sizeof(path));
|
|
- snprintf(path, sizeof(path), "%s.%s.dcb_enable", DCBX_SETTING, ifkey);
|
|
+ snprintf(path, sizeof(path), "%s.%s.dcb_enable", DCBX_SETTING, ifname);
|
|
settings = config_lookup(&lldpad_cfg, path);
|
|
if (!settings) {
|
|
LLDPAD_INFO("### %s:%s:failed on %s\n", __func__, ifname, path);
|
|
- snprintf(path, sizeof(path), "%s.dcb_enable", ifkey);
|
|
+ snprintf(path, sizeof(path), "%s.dcb_enable", ifname);
|
|
settings = config_lookup(&lldpad_cfg, path);
|
|
if (!settings) {
|
|
LLDPAD_INFO("### %s:%s:failed again %s\n", __func__, ifname, path);
|
|
--
|
|
2.31.1
|
|
|