struct in6_addr v6; //!< IPv6 address.
} addr;
uint8_t prefix; //!< Prefix length - Between 0-32 for IPv4 and 0-128 for IPv6.
- uint32_t zone_id; //!< A host may have multiple link-local interfaces
+ uint32_t scope_id; //!< A host may have multiple link-local interfaces
//!< the scope ID allows the application to specify which of
//!< those interfaces the IP applies to. A special scope_id
//!< of zero means that any interface of a given scope can
if (inet_ntop(addr->af, &addr->addr, out, outlen) == NULL) return NULL;
- if ((addr->af == AF_INET) || (addr->zone_id == 0)) return out;
+ if ((addr->af == AF_INET) || (addr->scope_id == 0)) return out;
p = out + strlen(out);
char buffer[IFNAMSIZ];
char *ifname;
- ifname = fr_ifname_from_ifindex(buffer, addr->zone_id);
+ ifname = fr_ifname_from_ifindex(buffer, addr->scope_id);
if (ifname) {
len = snprintf(p, outlen - (p - out), "%%%s", ifname);
if (is_truncated(len + (p - out), outlen)) {
}
#endif
- len = snprintf(p, outlen - (p - out), "%%%u", addr->zone_id);
+ len = snprintf(p, outlen - (p - out), "%%%u", addr->scope_id);
if (is_truncated(len + (p - out), outlen)) {
fr_strerror_printf("Address buffer too small, needed %zu bytes, have %zu bytes",
(p - out) + len, outlen);
#ifdef HAVE_STRUCT_SOCKADDR_IN6
case AF_INET6:
- if (a->zone_id < b->zone_id) return -1;
- if (a->zone_id > b->zone_id) return +1;
+ if (a->scope_id < b->scope_id) return -1;
+ if (a->scope_id > b->scope_id) return +1;
return memcmp(&a->addr.v6,
&b->addr.v6,
s6.sin6_family = AF_INET6;
s6.sin6_addr = ipaddr->addr.v6;
s6.sin6_port = htons(port);
- s6.sin6_scope_id = ipaddr->zone_id;
+ s6.sin6_scope_id = ipaddr->scope_id;
memset(sa, 0, sizeof(*sa));
memcpy(sa, &s6, sizeof(s6));
#endif
ipaddr->prefix = 128;
ipaddr->addr.v6 = s6.sin6_addr;
if (port) *port = ntohs(s6.sin6_port);
- ipaddr->zone_id = s6.sin6_scope_id;
+ ipaddr->scope_id = s6.sin6_scope_id;
#endif
} else {
* the interface.
*/
if (ipaddr->af == AF_INET6) {
- if (ipaddr->zone_id == 0) {
- ipaddr->zone_id = if_nametoindex(interface);
- if (ipaddr->zone_id == 0) {
+ if (ipaddr->scope_id == 0) {
+ ipaddr->scope_id = if_nametoindex(interface);
+ if (ipaddr->scope_id == 0) {
fr_strerror_printf("Failed finding interface %s: %s", interface, fr_syserror(errno));
return -1;
}
src_ipaddr.af = AF_INET;
src_ipaddr.addr.v4 = ip->ip_src;
src_ipaddr.prefix = 32;
- src_ipaddr.zone_id = 0;
dst_ipaddr.af = AF_INET;
+ src_ipaddr.scope_id = 0;
dst_ipaddr.addr.v4 = ip->ip_dst;
dst_ipaddr.prefix = 32;
- dst_ipaddr.zone_id = 0;
+ dst_ipaddr.scope_id = 0;
packet = fr_dhcp_packet_ok(p, data_len, src_ipaddr, src_port, dst_ipaddr, dst_port);
if (packet) {