From 0a9228c96513628bf7a41b1e05145913d2667d7c Mon Sep 17 00:00:00 2001 From: kellyyeh <42761586+kellyyeh@users.noreply.github.com> Date: Tue, 2 Nov 2021 10:55:41 -0700 Subject: [PATCH] [201811][dhcp_relay] Fix sendto: invalid destination address error (#9138) --- src/dhcp6relay/src/relay.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/dhcp6relay/src/relay.cpp b/src/dhcp6relay/src/relay.cpp index ba22d4845b..96f97d51f4 100644 --- a/src/dhcp6relay/src/relay.cpp +++ b/src/dhcp6relay/src/relay.cpp @@ -9,7 +9,6 @@ #include "dbconnector.h" #include "configInterface.h" -#include "table.h" #include "redisclient.h" @@ -681,16 +680,16 @@ void dhcp6relay_stop() */ void loop_relay(std::vector *vlans) { std::vector sockets; - - for(std::size_t i = 0; isize(); i++) { - struct relay_config config = vlans->at(i); + + for(relay_config &vlan : *vlans) { + relay_config *config = &vlan; int filter = 0; int local_sock = 0; - const char *ifname = config.interface.c_str(); + const char *ifname = config->interface.c_str(); int index = if_nametoindex(ifname); std::string counterVlan = counter_table; - initialize_counter(counterVlan.append(config.interface)); + initialize_counter(counterVlan.append(config->interface)); filter = sock_open(index, ðer_relay_fprog); @@ -698,7 +697,7 @@ void loop_relay(std::vector *vlans) { sockets.push_back(filter); sockets.push_back(local_sock); - prepare_relay_config(&config, &local_sock, filter); + prepare_relay_config(config, &local_sock, filter); evutil_make_listen_socket_reuseable(filter); evutil_make_socket_nonblocking(filter); @@ -711,8 +710,8 @@ void loop_relay(std::vector *vlans) { syslog(LOG_ERR, "libevent: Failed to create base\n"); } - listen_event = event_new(base, filter, EV_READ|EV_PERSIST, callback, (void *)&config); - server_listen_event = event_new(base, local_sock, EV_READ|EV_PERSIST, server_callback, (void *)&config); + listen_event = event_new(base, filter, EV_READ|EV_PERSIST, callback, config); + server_listen_event = event_new(base, local_sock, EV_READ|EV_PERSIST, server_callback, config); if (listen_event == NULL || server_listen_event == NULL) { syslog(LOG_ERR, "libevent: Failed to create libevent\n"); }