diff options
Diffstat (limited to 'zebra/ipforward_proc.c')
| -rw-r--r-- | zebra/ipforward_proc.c | 85 |
1 files changed, 33 insertions, 52 deletions
diff --git a/zebra/ipforward_proc.c b/zebra/ipforward_proc.c index f823ec4384..3a766b1ea9 100644 --- a/zebra/ipforward_proc.c +++ b/zebra/ipforward_proc.c @@ -25,6 +25,7 @@ #include "log.h" #include "privs.h" +#include "lib_errors.h" #include "zebra/ipforward.h" @@ -76,24 +77,19 @@ int ipforward_on(void) { FILE *fp; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges, %s", safe_strerror(errno)); + frr_elevate_privs(&zserv_privs) { - fp = fopen(proc_ipv4_forwarding, "w"); + fp = fopen(proc_ipv4_forwarding, "w"); - if (fp == NULL) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", - safe_strerror(errno)); - return -1; - } + if (fp == NULL) { + return -1; + } - fprintf(fp, "1\n"); + fprintf(fp, "1\n"); - fclose(fp); + fclose(fp); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", safe_strerror(errno)); + } return ipforward(); } @@ -102,24 +98,19 @@ int ipforward_off(void) { FILE *fp; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges, %s", safe_strerror(errno)); + frr_elevate_privs(&zserv_privs) { - fp = fopen(proc_ipv4_forwarding, "w"); + fp = fopen(proc_ipv4_forwarding, "w"); - if (fp == NULL) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", - safe_strerror(errno)); - return -1; - } + if (fp == NULL) { + return -1; + } - fprintf(fp, "0\n"); + fprintf(fp, "0\n"); - fclose(fp); + fclose(fp); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", safe_strerror(errno)); + } return ipforward(); } @@ -153,24 +144,19 @@ int ipforward_ipv6_on(void) { FILE *fp; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges, %s", safe_strerror(errno)); + frr_elevate_privs(&zserv_privs) { - fp = fopen(proc_ipv6_forwarding, "w"); + fp = fopen(proc_ipv6_forwarding, "w"); - if (fp == NULL) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", - safe_strerror(errno)); - return -1; - } + if (fp == NULL) { + return -1; + } - fprintf(fp, "1\n"); + fprintf(fp, "1\n"); - fclose(fp); + fclose(fp); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", safe_strerror(errno)); + } return ipforward_ipv6(); } @@ -180,24 +166,19 @@ int ipforward_ipv6_off(void) { FILE *fp; - if (zserv_privs.change(ZPRIVS_RAISE)) - zlog_err("Can't raise privileges, %s", safe_strerror(errno)); + frr_elevate_privs(&zserv_privs) { - fp = fopen(proc_ipv6_forwarding, "w"); + fp = fopen(proc_ipv6_forwarding, "w"); - if (fp == NULL) { - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", - safe_strerror(errno)); - return -1; - } + if (fp == NULL) { + return -1; + } - fprintf(fp, "0\n"); + fprintf(fp, "0\n"); - fclose(fp); + fclose(fp); - if (zserv_privs.change(ZPRIVS_LOWER)) - zlog_err("Can't lower privileges, %s", safe_strerror(errno)); + } return ipforward_ipv6(); } |
