summaryrefslogtreecommitdiff
path: root/lib/log.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-04-05 20:52:32 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-04-05 20:52:32 -0400
commit97133f79155933685f6f839072d9d92a804a37dd (patch)
tree025729327a795c89aba46888af8b0ad897b9eca5 /lib/log.c
parent2118601d5cf9335cd316cd53ebd74a399264c653 (diff)
parentbc7268d524eaac8d4a29ed843f01ac1bc5e8d4f2 (diff)
Merge remote-tracking branch 'origin/master' into EIGRP
Diffstat (limited to 'lib/log.c')
-rw-r--r--lib/log.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/log.c b/lib/log.c
index c86eb61af3..4460efca6e 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -734,6 +734,17 @@ openzlog (const char *progname, const char *protoname, u_short instance,
openlog (progname, syslog_flags, zl->facility);
zlog_default = zl;
+
+#ifdef HAVE_GLIBC_BACKTRACE
+ /* work around backtrace() using lazily resolved dynamically linked
+ * symbols, which will otherwise cause funny breakage in the SEGV handler.
+ * (particularly, the dynamic linker can call malloc(), which uses locks
+ * in programs linked with -pthread, thus can deadlock.) */
+ void *bt[4];
+ backtrace (bt, array_size(bt));
+ free (backtrace_symbols (bt, 0));
+ backtrace_symbols_fd (bt, 0, 0);
+#endif
}
void
@@ -964,6 +975,9 @@ static const struct zebra_desc_table command_types[] = {
DESC_ENTRY (ZEBRA_IPV6_NEXTHOP_ADD),
DESC_ENTRY (ZEBRA_IPV6_NEXTHOP_DELETE),
DESC_ENTRY (ZEBRA_IPMR_ROUTE_STATS),
+ DESC_ENTRY (ZEBRA_LABEL_MANAGER_CONNECT),
+ DESC_ENTRY (ZEBRA_GET_LABEL_CHUNK),
+ DESC_ENTRY (ZEBRA_RELEASE_LABEL_CHUNK),
};
#undef DESC_ENTRY
@@ -1058,7 +1072,7 @@ proto_redistnum(int afi, const char *s)
return ZEBRA_ROUTE_VNC;
else if (strmatch (s, "vnc-direct"))
return ZEBRA_ROUTE_VNC_DIRECT;
- else if (strncmp (s, "n", 1) == 0)
+ else if (strmatch (s, "nhrp"))
return ZEBRA_ROUTE_NHRP;
}
if (afi == AFI_IP6)
@@ -1083,7 +1097,7 @@ proto_redistnum(int afi, const char *s)
return ZEBRA_ROUTE_VNC;
else if (strmatch (s, "vnc-direct"))
return ZEBRA_ROUTE_VNC_DIRECT;
- else if (strncmp (s, "n", 1) == 0)
+ else if (strmatch (s, "nhrp"))
return ZEBRA_ROUTE_NHRP;
}
return -1;