From e05506b8ddc2a84cb24bf377303ccecacdeac653 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 19 Jul 2022 13:57:56 -0400 Subject: [PATCH] zebra: Add some more data to rtadv socket failures The creation of the rtadv socket can fail but there is very very little data associated with this event to let the operator know something has gone terribly wrong. Please note if this socket fails to create or fails the setsockopt's rtadv is basically just really really messed up. I am not sure what can be done here. Signed-off-by: Donald Sharp --- zebra/rtadv.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/zebra/rtadv.c b/zebra/rtadv.c index 5d4ed1e424..bf959980be 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -830,39 +830,51 @@ static int rtadv_make_socket(ns_id_t ns_id) int sock = -1; int ret = 0; struct icmp6_filter filter; + int error; frr_with_privs(&zserv_privs) { sock = ns_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6, ns_id); - + /* + * with privs might set errno too if it fails save + * to the side + */ + error = errno; } if (sock < 0) { + zlog_warn("RTADV socket for ns: %u failure to create: %s(%u)", + ns_id, safe_strerror(error), error); return -1; } ret = setsockopt_ipv6_pktinfo(sock, 1); if (ret < 0) { + zlog_warn("RTADV failure to set Packet Information"); close(sock); return ret; } ret = setsockopt_ipv6_multicast_loop(sock, 0); if (ret < 0) { + zlog_warn("RTADV failure to set multicast Loop detection"); close(sock); return ret; } ret = setsockopt_ipv6_unicast_hops(sock, 255); if (ret < 0) { + zlog_warn("RTADV failure to set maximum unicast hops"); close(sock); return ret; } ret = setsockopt_ipv6_multicast_hops(sock, 255); if (ret < 0) { + zlog_warn("RTADV failure to set maximum multicast hops"); close(sock); return ret; } ret = setsockopt_ipv6_hoplimit(sock, 1); if (ret < 0) { + zlog_warn("RTADV failure to set maximum incoming hop limit"); close(sock); return ret; } -- 2.39.5