]> git.puffer.fish Git - mirror/frr.git/commitdiff
ISIS VRF: Added vrf_socket and new param in isisd privileges. 6635/head
authorKaushik <kaushik@niralnetworks.com>
Wed, 24 Jun 2020 12:27:14 +0000 (05:27 -0700)
committerKaushik <kaushik@niralnetworks.com>
Wed, 24 Jun 2020 12:27:14 +0000 (05:27 -0700)
1. The socket() call replaced with vrf_socket() in open_packet_socket().
2. One new isisd privileges is added in zebra_capabilities_t [].

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
isisd/isis_main.c
isisd/isis_pfpacket.c

index 7d45dd9c2ee65e0ee60785a75fb5696f1122bde5..cb5b47bbd6e6be0dd3017cc09537f675c05d3686 100644 (file)
@@ -66,7 +66,7 @@
 #define FABRICD_VTY_PORT     2618
 
 /* isisd privileges */
-zebra_capabilities_t _caps_p[] = {ZCAP_NET_RAW, ZCAP_BIND};
+zebra_capabilities_t _caps_p[] = {ZCAP_NET_RAW, ZCAP_BIND, ZCAP_SYS_ADMIN};
 
 struct zebra_privs_t isisd_privs = {
 #if defined(FRR_USER)
index 28a1488c32a8f8f36123ee73fd1e9c3c893c7a6d..82f42a86d9313811fbe67f19dc14da10b1d7a8ab 100644 (file)
@@ -32,6 +32,7 @@
 #include "stream.h"
 #include "if.h"
 #include "lib_errors.h"
+#include "vrf.h"
 
 #include "isisd/isis_constants.h"
 #include "isisd/isis_common.h"
@@ -121,8 +122,18 @@ static int open_packet_socket(struct isis_circuit *circuit)
 {
        struct sockaddr_ll s_addr;
        int fd, retval = ISIS_OK;
+       struct vrf *vrf = NULL;
+
+       vrf = vrf_lookup_by_id(circuit->interface->vrf_id);
+
+       if (vrf == NULL) {
+               zlog_warn("open_packet_socket(): failed to find vrf node");
+               return ISIS_WARNING;
+       }
+
+       fd = vrf_socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL),
+                       circuit->interface->vrf_id, vrf->name);
 
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL));
        if (fd < 0) {
                zlog_warn("open_packet_socket(): socket() failed %s",
                          safe_strerror(errno));