lib: Add LIB_ERR_NS to error subsystem

Add additional information about NameSpace errors that
may happen.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2018-06-18 08:55:06 -04:00 committed by Quentin Young
parent 4d43f68aeb
commit 674c3ca8a8
3 changed files with 17 additions and 6 deletions

View File

@ -82,6 +82,12 @@ static struct ferr_ref ferr_lib_err[] = {
.description = "FRR has detected a problem with interface data from the kernel as it deviates\nfrom what we would expect to happen via normal netlink messaging", .description = "FRR has detected a problem with interface data from the kernel as it deviates\nfrom what we would expect to happen via normal netlink messaging",
.suggestion = "Open an Issue with all relevant log files and restart FRR" .suggestion = "Open an Issue with all relevant log files and restart FRR"
}, },
{
.code = LIB_ERR_NS,
.title = "NameSpace Subsystem Error",
.description = "FRR has detected a problem with NameSpace data from the kernel as it deviates\nfrom what we would expect to happen via normal kernel messaging",
.suggestion = "Open an Issue with all relevant log files and restart FRR"
},
{ {
.code = END_FERR, .code = END_FERR,
} }

View File

@ -34,6 +34,7 @@ enum lib_ferr_refs {
LIB_ERR_VTY, LIB_ERR_VTY,
LIB_ERR_SNMP, LIB_ERR_SNMP,
LIB_ERR_INTERFACE, LIB_ERR_INTERFACE,
LIB_ERR_NS,
}; };
extern void lib_error_init(void); extern void lib_error_init(void);

View File

@ -227,8 +227,9 @@ static int ns_enable_internal(struct ns *ns, void (*func)(ns_id_t, void *))
/* Non default NS. leave */ /* Non default NS. leave */
if (ns->ns_id == NS_UNKNOWN) { if (ns->ns_id == NS_UNKNOWN) {
zlog_err("Can not enable NS %s %u: Invalid NSID", zlog_ferr(LIB_ERR_NS,
ns->name, ns->ns_id); "Can not enable NS %s %u: Invalid NSID",
ns->name, ns->ns_id);
return 0; return 0;
} }
if (func) if (func)
@ -471,8 +472,9 @@ void ns_init(void)
if (have_netns_enabled < 0) { if (have_netns_enabled < 0) {
ns_default_ns_fd = open(NS_DEFAULT_NAME, O_RDONLY); ns_default_ns_fd = open(NS_DEFAULT_NAME, O_RDONLY);
if (ns_default_ns_fd == -1) if (ns_default_ns_fd == -1)
zlog_err("NS initialization failure %d(%s)", zlog_ferr(LIB_ERR_NS,
errno, safe_strerror(errno)); "NS initialization failure %d(%s)", errno,
safe_strerror(errno));
} else { } else {
ns_default_ns_fd = -1; ns_default_ns_fd = -1;
default_ns = NULL; default_ns = NULL;
@ -493,7 +495,8 @@ void ns_init_management(ns_id_t default_ns_id, ns_id_t internal_ns)
ns_init(); ns_init();
default_ns = ns_get_created_internal(NULL, NULL, default_ns_id); default_ns = ns_get_created_internal(NULL, NULL, default_ns_id);
if (!default_ns) { if (!default_ns) {
zlog_err("%s: failed to create the default NS!", __func__); zlog_ferr(LIB_ERR_NS, "%s: failed to create the default NS!",
__func__);
exit(1); exit(1);
} }
if (have_netns()) { if (have_netns()) {
@ -510,7 +513,8 @@ void ns_init_management(ns_id_t default_ns_id, ns_id_t internal_ns)
/* Enable the default NS. */ /* Enable the default NS. */
if (!ns_enable(default_ns, NULL)) { if (!ns_enable(default_ns, NULL)) {
zlog_err("%s: failed to enable the default NS!", __func__); zlog_ferr(LIB_ERR_NS, "%s: failed to enable the default NS!",
__func__);
exit(1); exit(1);
} }
} }