diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2020-06-26 22:23:40 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-26 22:23:40 -0300 |
| commit | 28aac9c2a8c53acb040fb89df19d7c1fafb7990d (patch) | |
| tree | cb8dfeb498f9a10aaa4ccce75e9007c4ae8ac7fa /isisd/isis_pfpacket.c | |
| parent | 09ec00f95bf7215ba62aacf4c014e384013bc2ce (diff) | |
| parent | caa18d497f1f781cf50f8e963a4825aed2fbfb0f (diff) | |
Merge pull request #6635 from Niral-Networks/niral_dev_vrf_isis
ISIS VRF: Added vrf_socket and new param in isisd privileges.
Diffstat (limited to 'isisd/isis_pfpacket.c')
| -rw-r--r-- | isisd/isis_pfpacket.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/isisd/isis_pfpacket.c b/isisd/isis_pfpacket.c index 28a1488c32..82f42a86d9 100644 --- a/isisd/isis_pfpacket.c +++ b/isisd/isis_pfpacket.c @@ -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)); |
