diff options
Diffstat (limited to 'lib/sockunion.c')
| -rw-r--r-- | lib/sockunion.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/sockunion.c b/lib/sockunion.c index 44378b5363..bbbfbfc424 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -26,6 +26,7 @@ #include "memory.h" #include "log.h" #include "jhash.h" +#include "lib_errors.h" DEFINE_MTYPE_STATIC(LIB, SOCKUNION, "Socket union") @@ -365,14 +366,10 @@ int sockopt_mark_default(int sock, int mark, struct zebra_privs_t *cap) #ifdef SO_MARK int ret; - if (cap->change(ZPRIVS_RAISE)) - zlog_err("routing_socket: Can't raise privileges"); - - ret = setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)); - - if (cap->change(ZPRIVS_LOWER)) - zlog_err("routing_socket: Can't lower privileges"); - + frr_elevate_privs(cap) { + ret = setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, + sizeof(mark)); + } return ret; #else return 0; |
