summaryrefslogtreecommitdiff
path: root/bfdd/bfd_packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfdd/bfd_packet.c')
-rw-r--r--bfdd/bfd_packet.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c
index ed36bb742e..6da5e2cdf9 100644
--- a/bfdd/bfd_packet.c
+++ b/bfdd/bfd_packet.c
@@ -523,13 +523,14 @@ int bfd_recv_cb(struct thread *t)
bool is_mhop;
ssize_t mlen = 0;
uint8_t ttl = 0;
- vrf_id_t vrfid = VRF_DEFAULT;
+ vrf_id_t vrfid;
ifindex_t ifindex = IFINDEX_INTERNAL;
struct sockaddr_any local, peer;
uint8_t msgbuf[1516];
struct bfd_vrf_global *bvrf = THREAD_ARG(t);
vrfid = bvrf->vrf->vrf_id;
+
/* Schedule next read. */
bfd_sd_reschedule(bvrf, sd);
@@ -889,12 +890,13 @@ static void bp_bind_ip(int sd, uint16_t port)
log_fatal("bind-ip: bind: %s", strerror(errno));
}
-int bp_udp_shop(vrf_id_t vrf_id)
+int bp_udp_shop(const struct vrf *vrf)
{
int sd;
frr_with_privs(&bglobal.bfdd_privs) {
- sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
+ sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf->vrf_id,
+ vrf->name);
}
if (sd == -1)
log_fatal("udp-shop: socket: %s", strerror(errno));
@@ -904,12 +906,13 @@ int bp_udp_shop(vrf_id_t vrf_id)
return sd;
}
-int bp_udp_mhop(vrf_id_t vrf_id)
+int bp_udp_mhop(const struct vrf *vrf)
{
int sd;
frr_with_privs(&bglobal.bfdd_privs) {
- sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
+ sd = vrf_socket(AF_INET, SOCK_DGRAM, PF_UNSPEC, vrf->vrf_id,
+ vrf->name);
}
if (sd == -1)
log_fatal("udp-mhop: socket: %s", strerror(errno));
@@ -1116,12 +1119,13 @@ static void bp_bind_ipv6(int sd, uint16_t port)
log_fatal("bind-ipv6: bind: %s", strerror(errno));
}
-int bp_udp6_shop(vrf_id_t vrf_id)
+int bp_udp6_shop(const struct vrf *vrf)
{
int sd;
frr_with_privs(&bglobal.bfdd_privs) {
- sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
+ sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf->vrf_id,
+ vrf->name);
}
if (sd == -1)
log_fatal("udp6-shop: socket: %s", strerror(errno));
@@ -1132,12 +1136,13 @@ int bp_udp6_shop(vrf_id_t vrf_id)
return sd;
}
-int bp_udp6_mhop(vrf_id_t vrf_id)
+int bp_udp6_mhop(const struct vrf *vrf)
{
int sd;
frr_with_privs(&bglobal.bfdd_privs) {
- sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf_id, NULL);
+ sd = vrf_socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC, vrf->vrf_id,
+ vrf->name);
}
if (sd == -1)
log_fatal("udp6-mhop: socket: %s", strerror(errno));
@@ -1148,12 +1153,12 @@ int bp_udp6_mhop(vrf_id_t vrf_id)
return sd;
}
-int bp_echo_socket(vrf_id_t vrf_id)
+int bp_echo_socket(const struct vrf *vrf)
{
int s;
frr_with_privs(&bglobal.bfdd_privs) {
- s = vrf_socket(AF_INET, SOCK_DGRAM, 0, vrf_id, NULL);
+ s = vrf_socket(AF_INET, SOCK_DGRAM, 0, vrf->vrf_id, vrf->name);
}
if (s == -1)
log_fatal("echo-socket: socket: %s", strerror(errno));
@@ -1164,12 +1169,12 @@ int bp_echo_socket(vrf_id_t vrf_id)
return s;
}
-int bp_echov6_socket(vrf_id_t vrf_id)
+int bp_echov6_socket(const struct vrf *vrf)
{
int s;
frr_with_privs(&bglobal.bfdd_privs) {
- s = vrf_socket(AF_INET6, SOCK_DGRAM, 0, vrf_id, NULL);
+ s = vrf_socket(AF_INET6, SOCK_DGRAM, 0, vrf->vrf_id, vrf->name);
}
if (s == -1)
log_fatal("echov6-socket: socket: %s", strerror(errno));