diff options
Diffstat (limited to 'isisd/isis_bpf.c')
| -rw-r--r-- | isisd/isis_bpf.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/isisd/isis_bpf.c b/isisd/isis_bpf.c index 2cc2fefd9a..d05dba33ee 100644 --- a/isisd/isis_bpf.c +++ b/isisd/isis_bpf.c @@ -32,6 +32,7 @@ #include "network.h" #include "stream.h" #include "if.h" +#include "lib_errors.h" #include "isisd/dict.h" #include "isisd/isis_constants.h" @@ -186,31 +187,26 @@ int isis_sock_init(struct isis_circuit *circuit) { int retval = ISIS_OK; - if (isisd_privs.change(ZPRIVS_RAISE)) - zlog_err("%s: could not raise privs, %s", __func__, - safe_strerror(errno)); + frr_elevate_privs(&isisd_privs) { - retval = open_bpf_dev(circuit); + retval = open_bpf_dev(circuit); - if (retval != ISIS_OK) { - zlog_warn("%s: could not initialize the socket", __func__); - goto end; - } + if (retval != ISIS_OK) { + zlog_warn("%s: could not initialize the socket", + __func__); + break; + } - if (if_is_broadcast(circuit->interface)) { - circuit->tx = isis_send_pdu_bcast; - circuit->rx = isis_recv_pdu_bcast; - } else { - zlog_warn("isis_sock_init(): unknown circuit type"); - retval = ISIS_WARNING; - goto end; + if (if_is_broadcast(circuit->interface)) { + circuit->tx = isis_send_pdu_bcast; + circuit->rx = isis_recv_pdu_bcast; + } else { + zlog_warn("isis_sock_init(): unknown circuit type"); + retval = ISIS_WARNING; + break; + } } -end: - if (isisd_privs.change(ZPRIVS_LOWER)) - zlog_err("%s: could not lower privs, %s", __func__, - safe_strerror(errno)); - return retval; } |
