Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openwrt/odhcp6c.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2021-01-06 23:15:49 +0300
committerHans Dedecker <dedeckeh@gmail.com>2021-01-07 23:10:21 +0300
commit2b6959dfe2095402e004b63d9aca9900c074abb6 (patch)
tree5b6e25bdbc89039b2efbf6831a020d114bfe0928
parenteac1961983b8e7a74c494feedcb878170b135072 (diff)
ra: align ifindex resolving
Use ioctl SIOCGIFINDEX to resolve ifindex similar as in init_dhcpv6 Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
-rw-r--r--src/ra.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/ra.c b/src/ra.c
index 337c0bd..32a3097 100644
--- a/src/ra.c
+++ b/src/ra.c
@@ -27,6 +27,7 @@
#include <net/if.h>
#include <arpa/inet.h>
+#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
@@ -76,6 +77,8 @@ static void ra_send_rs(int signal __attribute__((unused)));
int ra_init(const char *ifname, const struct in6_addr *ifid,
unsigned int options, unsigned int holdoff_interval)
{
+ struct ifreq ifr;
+
ra_options = options;
ra_holdoff_interval = holdoff_interval;
@@ -84,11 +87,12 @@ int ra_init(const char *ifname, const struct in6_addr *ifid,
if (sock < 0)
goto failure;
- if_index = if_nametoindex(ifname);
- if (!if_index)
+ memset(&ifr, 0, sizeof(ifr));
+ strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name) - 1);
+ if (ioctl(sock, SIOCGIFINDEX, &ifr) < 0)
goto failure;
- strncpy(if_name, ifname, sizeof(if_name) - 1);
+ if_index = ifr.ifr_ifindex;
lladdr = *ifid;
rtnl = socket(AF_NETLINK, SOCK_DGRAM | SOCK_CLOEXEC, NETLINK_ROUTE);