- size_t len = sizeof(rs);
-
- struct ifreq ifr;
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name));
- if (!ioctl(sock, SIOCGIFHWADDR, &ifr)
- && memcmp(rs.lladdr.data, ifr.ifr_hwaddr.sa_data, 6))
- memcpy(rs.lladdr.data, ifr.ifr_hwaddr.sa_data, 6);
+ const struct icmpv6_opt llnull = {ND_OPT_SOURCE_LINKADDR, 1, {0}};
+ size_t len;
+
+ if ((rs_attempt % 2 == 0) && memcmp(&rs.lladdr, &llnull, sizeof(llnull)))
+ len = sizeof(rs);