summaryrefslogtreecommitdiff
path: root/ripd/ripd.c
diff options
context:
space:
mode:
Diffstat (limited to 'ripd/ripd.c')
-rw-r--r--ripd/ripd.c43
1 files changed, 20 insertions, 23 deletions
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 8032cf2ec5..02ead6fde2 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -40,9 +40,11 @@
#include "md5.h"
#include "keychain.h"
#include "privs.h"
+#include "lib_errors.h"
#include "ripd/ripd.h"
#include "ripd/rip_debug.h"
+#include "ripd/rip_errors.h"
DEFINE_QOBJ_TYPE(rip)
@@ -1056,9 +1058,9 @@ static void rip_auth_md5_set(struct stream *s, struct rip_interface *ri,
/* Check packet length. */
if (len < (RIP_HEADER_SIZE + RIP_RTE_SIZE)) {
- zlog_err(
- "rip_auth_md5_set(): packet length %ld is less than minimum length.",
- len);
+ flog_err(RIP_ERR_PACKET,
+ "rip_auth_md5_set(): packet length %ld is less than minimum length.",
+ len);
return;
}
@@ -1339,7 +1341,8 @@ static int rip_create_socket(void)
/* Make datagram socket. */
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0) {
- zlog_err("Cannot create UDP socket: %s", safe_strerror(errno));
+ flog_err_sys(LIB_ERR_SOCKET, "Cannot create UDP socket: %s",
+ safe_strerror(errno));
exit(1);
}
@@ -1354,27 +1357,20 @@ static int rip_create_socket(void)
setsockopt_ipv4_tos(sock, IPTOS_PREC_INTERNETCONTROL);
#endif
- if (ripd_privs.change(ZPRIVS_RAISE))
- zlog_err("rip_create_socket: could not raise privs");
- setsockopt_so_recvbuf(sock, RIP_UDP_RCV_BUF);
- if ((ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr))) < 0)
-
- {
- int save_errno = errno;
- if (ripd_privs.change(ZPRIVS_LOWER))
- zlog_err("rip_create_socket: could not lower privs");
-
- zlog_err("%s: Can't bind socket %d to %s port %d: %s", __func__,
- sock, inet_ntoa(addr.sin_addr),
- (int)ntohs(addr.sin_port), safe_strerror(save_errno));
-
- close(sock);
- return ret;
+ frr_elevate_privs(&ripd_privs) {
+ setsockopt_so_recvbuf(sock, RIP_UDP_RCV_BUF);
+ if ((ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr)))
+ < 0) {
+ zlog_err("%s: Can't bind socket %d to %s port %d: %s",
+ __func__, sock, inet_ntoa(addr.sin_addr),
+ (int)ntohs(addr.sin_port),
+ safe_strerror(errno));
+
+ close(sock);
+ return ret;
+ }
}
- if (ripd_privs.change(ZPRIVS_LOWER))
- zlog_err("rip_create_socket: could not lower privs");
-
return sock;
}
@@ -2812,6 +2808,7 @@ DEFUN_NOSH (router_rip,
return CMD_WARNING_CONFIG_FAILED;
}
}
+
VTY_PUSH_CONTEXT(RIP_NODE, rip);
return CMD_SUCCESS;