]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_dlpi.c
Merge pull request #5625 from qlyoung/fix-zapi-ipset-name-nullterm
[mirror_frr.git] / isisd / isis_dlpi.c
index 455a2ca3aaa525bd2dd0267b7266fa149ad1dc1f..ea16f4af7f75395d6df38e13f73ff883f495fc99 100644 (file)
@@ -38,7 +38,6 @@
 #include "if.h"
 #include "lib_errors.h"
 
-#include "isisd/dict.h"
 #include "isisd/isis_constants.h"
 #include "isisd/isis_common.h"
 #include "isisd/isis_circuit.h"
@@ -55,10 +54,13 @@ static t_uscalar_t dlpi_ctl[1024]; /* DLPI control messages */
  * ISO 10589 - 8.4.8
  */
 
-uint8_t ALL_L1_ISS[6] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x14};
-uint8_t ALL_L2_ISS[6] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x15};
-uint8_t ALL_ISS[6] = {0x09, 0x00, 0x2B, 0x00, 0x00, 0x05};
-uint8_t ALL_ESS[6] = {0x09, 0x00, 0x2B, 0x00, 0x00, 0x04};
+static const uint8_t ALL_L1_ISS[6] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x14};
+static const uint8_t ALL_L2_ISS[6] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x15};
+static const uint8_t ALL_ISS[6] = {0x09, 0x00, 0x2B, 0x00, 0x00, 0x05};
+#if 0
+/* missing support for ES-IS on Solaris */
+static const uint8_t ALL_ESS[6] = {0x09, 0x00, 0x2B, 0x00, 0x00, 0x04};
+#endif
 
 static uint8_t sock_buff[8192];
 
@@ -444,7 +446,7 @@ static int open_dlpi_dev(struct isis_circuit *circuit)
                struct strioctl sioc;
 
                pfil.Pf_Priority = 0;
-               pfil.Pf_FilterLen = sizeof(pf_filter) / sizeof(unsigned short);
+               pfil.Pf_FilterLen = array_size(pf_filter);
                memcpy(pfil.Pf_Filter, pf_filter, sizeof(pf_filter));
                /* pfmod does not support transparent ioctls */
                sioc.ic_cmd = PFIOCSETF;
@@ -468,31 +470,26 @@ int isis_sock_init(struct isis_circuit *circuit)
 {
        int retval = ISIS_OK;
 
-       if (isisd_privs.change(ZPRIVS_RAISE))
-               zlog_ferr(LIB_ERR_PRIVILEGE, "%s: could not raise privs, %s",
-                         __func__, safe_strerror(errno));
+       frr_with_privs(&isisd_privs) {
 
-       retval = open_dlpi_dev(circuit);
+               retval = open_dlpi_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 (circuit->circ_type == CIRCUIT_T_BROADCAST) {
-               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 (circuit->circ_type == CIRCUIT_T_BROADCAST) {
+                       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_ferr(LIB_ERR_PRIVILEGE, "%s: could not lower privs, %s",
-                         __func__, safe_strerror(errno));
-
        return retval;
 }