// RA PIO - RFC9096
struct ra_pio {
- struct in6_addr prefix;
- uint8_t length;
+ struct {
+ struct in6_addr prefix;
+ uint8_t length;
+ };
time_t lifetime;
};
+#define ra_pio_cmp_len offsetof(struct ra_pio, lifetime)
struct interface {
while (j < iface->pio_cnt) {
struct ra_pio *pio_b = &iface->pios[j];
- if (pio_a->length == pio_b->length &&
- !memcmp(&pio_a->prefix, &pio_b->prefix, sizeof(struct in6_addr))) {
+ if (!memcmp(pio_a, pio_b, ra_pio_cmp_len)) {
warn("rfc9096: %s: clear duplicated %s/%u",
iface->ifname,
inet_ntop(AF_INET6, &pio_a->prefix, ipv6_str, sizeof(ipv6_str)),