typedef struct fr_ipaddr_t {
int af; //!< Address family.
union {
- struct in_addr ip4addr; //!< IPv4 address.
- struct in6_addr ip6addr; //!< IPv6 address.
+ struct in_addr v4; //!< IPv4 address.
+ struct in6_addr v6; //!< IPv6 address.
} ipaddr;
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
#define vp_strvalue data.datum.strvalue
#define vp_integer data.datum.integer
-#define vp_ipaddr data.datum.ipaddr.s_addr
+#define vp_ipv4addr data.datum.ipaddr.s_addr
#define vp_date data.datum.date
#define vp_filter data.datum.filter
#define vp_octets data.datum.octets
switch (addr->af) {
case AF_INET:
- addr->ipaddr.ip4addr = fr_inaddr_mask(&addr->ipaddr.ip4addr, prefix);
+ addr->ipaddr.v4 = fr_inaddr_mask(&addr->ipaddr.v4, prefix);
break;
case AF_INET6:
- addr->ipaddr.ip6addr = fr_in6addr_mask(&addr->ipaddr.ip6addr, prefix);
+ addr->ipaddr.v6 = fr_in6addr_mask(&addr->ipaddr.v6, prefix);
break;
default:
* Allow '*' as the wildcard address usually 0.0.0.0
*/
if ((value[0] == '*') && (value[1] == '\0')) {
- out->ipaddr.ip4addr.s_addr = htonl(INADDR_ANY);
+ out->ipaddr.v4.s_addr = htonl(INADDR_ANY);
/*
* Convert things which are obviously integers to IP addresses
* IP address.
*/
} else if (is_integer(value) || ((value[0] == '0') && (value[1] == 'x'))) {
- out->ipaddr.ip4addr.s_addr = htonl(strtoul(value, NULL, 0));
+ out->ipaddr.v4.s_addr = htonl(strtoul(value, NULL, 0));
} else if (!resolve) {
- if (inet_pton(AF_INET, value, &out->ipaddr.ip4addr.s_addr) <= 0) {
+ if (inet_pton(AF_INET, value, &out->ipaddr.v4.s_addr) <= 0) {
fr_strerror_printf("Failed to parse IPv4 addreess string \"%s\"", value);
return -1;
}
*
* @todo we should allow hostnames to be parsed as prefixes.
*/
- if (ip_prefix_addr_from_str(&out->ipaddr.ip4addr, buffer) <= 0) {
+ if (ip_prefix_addr_from_str(&out->ipaddr.v4, buffer) <= 0) {
fr_strerror_printf("Failed to parse IPv4 prefix string \"%s\"", value);
return -1;
}
}
if (mask_bits && (mask < 32)) {
- out->ipaddr.ip4addr = fr_inaddr_mask(&out->ipaddr.ip4addr, mask);
+ out->ipaddr.v4 = fr_inaddr_mask(&out->ipaddr.v4, mask);
}
out->prefix = (uint8_t) mask;
* Allow '*' as the wildcard address
*/
if ((value[0] == '*') && (value[1] == '\0')) {
- memset(out->ipaddr.ip6addr.s6_addr, 0, sizeof(out->ipaddr.ip6addr.s6_addr));
+ memset(out->ipaddr.v6.s6_addr, 0, sizeof(out->ipaddr.v6.s6_addr));
} else if (!resolve) {
- if (inet_pton(AF_INET6, value, out->ipaddr.ip6addr.s6_addr) <= 0) {
+ if (inet_pton(AF_INET6, value, out->ipaddr.v6.s6_addr) <= 0) {
fr_strerror_printf("Failed to parse IPv6 address string \"%s\"", value);
return -1;
}
buffer[p - value] = '\0';
if (!resolve) {
- if (inet_pton(AF_INET6, buffer, out->ipaddr.ip6addr.s6_addr) <= 0) {
+ if (inet_pton(AF_INET6, buffer, out->ipaddr.v6.s6_addr) <= 0) {
fr_strerror_printf("Failed to parse IPv6 address string \"%s\"", value);
return -1;
}
if (mask && (prefix < 128)) {
struct in6_addr addr;
- addr = fr_in6addr_mask(&out->ipaddr.ip6addr, prefix);
- memcpy(out->ipaddr.ip6addr.s6_addr, addr.s6_addr, sizeof(out->ipaddr.ip6addr.s6_addr));
+ addr = fr_in6addr_mask(&out->ipaddr.v6, prefix);
+ memcpy(out->ipaddr.v6.s6_addr, addr.s6_addr, sizeof(out->ipaddr.v6.s6_addr));
}
out->prefix = (uint8_t) prefix;
switch (a->af) {
case AF_INET:
- return memcmp(&a->ipaddr.ip4addr,
- &b->ipaddr.ip4addr,
- sizeof(a->ipaddr.ip4addr));
+ return memcmp(&a->ipaddr.v4,
+ &b->ipaddr.v4,
+ sizeof(a->ipaddr.v4));
#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;
- return memcmp(&a->ipaddr.ip6addr,
- &b->ipaddr.ip6addr,
- sizeof(a->ipaddr.ip6addr));
+ return memcmp(&a->ipaddr.v6,
+ &b->ipaddr.v6,
+ sizeof(a->ipaddr.v6));
#endif
default:
memset(&s4, 0, sizeof(s4));
s4.sin_family = AF_INET;
- s4.sin_addr = ipaddr->ipaddr.ip4addr;
+ s4.sin_addr = ipaddr->ipaddr.v4;
s4.sin_port = htons(port);
memset(sa, 0, sizeof(*sa));
memcpy(sa, &s4, sizeof(s4));
memset(&s6, 0, sizeof(s6));
s6.sin6_family = AF_INET6;
- s6.sin6_addr = ipaddr->ipaddr.ip6addr;
+ s6.sin6_addr = ipaddr->ipaddr.v6;
s6.sin6_port = htons(port);
s6.sin6_scope_id = ipaddr->zone_id;
memset(sa, 0, sizeof(*sa));
memcpy(&s4, sa, sizeof(s4));
ipaddr->af = AF_INET;
ipaddr->prefix = 32;
- ipaddr->ipaddr.ip4addr = s4.sin_addr;
+ ipaddr->ipaddr.v4 = s4.sin_addr;
if (port) *port = ntohs(s4.sin_port);
#ifdef HAVE_STRUCT_SOCKADDR_IN6
memcpy(&s6, sa, sizeof(s6));
ipaddr->af = AF_INET6;
ipaddr->prefix = 128;
- ipaddr->ipaddr.ip6addr = s6.sin6_addr;
+ ipaddr->ipaddr.v6 = s6.sin6_addr;
if (port) *port = ntohs(s6.sin6_port);
ipaddr->zone_id = s6.sin6_scope_id;
#endif
*/
if (ipaddr->af == AF_INET6) {
# ifdef IPV6_V6ONLY
- if (IN6_IS_ADDR_UNSPECIFIED(&ipaddr->ipaddr.ip6addr)) {
+ if (IN6_IS_ADDR_UNSPECIFIED(&ipaddr->ipaddr.v6)) {
int on = 1;
if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY,
*/
#ifdef IPV6_V6ONLY
- if (IN6_IS_ADDR_UNSPECIFIED(&ipaddr->ipaddr.ip6addr)) {
+ if (IN6_IS_ADDR_UNSPECIFIED(&ipaddr->ipaddr.v6)) {
int on = 1;
if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY,
{
if (ipaddr->af == AF_INET) {
- if (ipaddr->ipaddr.ip4addr.s_addr == INADDR_ANY) {
+ if (ipaddr->ipaddr.v4.s_addr == INADDR_ANY) {
return 1;
}
#ifdef HAVE_STRUCT_SOCKADDR_IN6
} else if (ipaddr->af == AF_INET6) {
- if (IN6_IS_ADDR_UNSPECIFIED(&(ipaddr->ipaddr.ip6addr))) {
+ if (IN6_IS_ADDR_UNSPECIFIED(&(ipaddr->ipaddr.v6))) {
return 1;
}
#endif
return -1;
}
- dst->datum.ipaddr.s_addr = addr.ipaddr.ip4addr.s_addr;
+ dst->datum.ipaddr.s_addr = addr.ipaddr.v4.s_addr;
}
goto finish;
if (fr_inet_pton4(&addr, in, inlen, fr_hostname_lookups, false, true) < 0) return -1;
dst->datum.ipv4prefix[1] = addr.prefix;
- memcpy(&dst->datum.ipv4prefix[2], &addr.ipaddr.ip4addr.s_addr, sizeof(dst->datum.ipv4prefix) - 2);
+ memcpy(&dst->datum.ipv4prefix[2], &addr.ipaddr.v4.s_addr, sizeof(dst->datum.ipv4prefix) - 2);
}
goto finish;
return -1;
}
- memcpy(&dst->datum.ipv6addr, addr.ipaddr.ip6addr.s6_addr, sizeof(dst->datum.ipv6addr));
+ memcpy(&dst->datum.ipv6addr, addr.ipaddr.v6.s6_addr, sizeof(dst->datum.ipv6addr));
}
goto finish;
if (fr_inet_pton6(&addr, in, inlen, fr_hostname_lookups, false, true) < 0) return -1;
dst->datum.ipv6prefix[1] = addr.prefix;
- memcpy(&dst->datum.ipv6prefix[2], addr.ipaddr.ip6addr.s6_addr, sizeof(dst->datum.ipv6prefix) - 2);
+ memcpy(&dst->datum.ipv6prefix[2], addr.ipaddr.v6.s6_addr, sizeof(dst->datum.ipv6prefix) - 2);
}
goto finish;
}
*dst_type = PW_TYPE_IPV4_ADDR;
- dst->datum.ipaddr.s_addr = ipaddr.ipaddr.ip4addr.s_addr;
+ dst->datum.ipaddr.s_addr = ipaddr.ipaddr.v4.s_addr;
ret = dict_attr_sizes[PW_TYPE_COMBO_IP_ADDR][0]; /* size of IPv4 address */
}
}
case PW_TYPE_IPV4_ADDR:
if (da->attr == PW_FREERADIUS_CLIENT_IP_ADDRESS) {
c->ipaddr.af = AF_INET;
- c->ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ c->ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
c->ipaddr.prefix = 32;
cp = cf_pair_alloc(c->cs, "ipv4addr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
} else if (da->attr == PW_FREERADIUS_CLIENT_SRC_IP_ADDRESS) {
#ifdef WITH_UDPFROMTO
RDEBUG2("src_ipaddr = %s", strvalue);
c->src_ipaddr.af = AF_INET;
- c->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ c->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
c->src_ipaddr.prefix = 32;
cp = cf_pair_alloc(c->cs, "src_ipaddr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
#else
case PW_TYPE_IPV6_ADDR:
if (da->attr == PW_FREERADIUS_CLIENT_IPV6_ADDRESS) {
c->ipaddr.af = AF_INET6;
- c->ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ c->ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
c->ipaddr.prefix = 128;
cp = cf_pair_alloc(c->cs, "ipv6addr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
} else if (da->attr == PW_FREERADIUS_CLIENT_SRC_IPV6_ADDRESS) {
#ifdef WITH_UDPFROMTO
c->src_ipaddr.af = AF_INET6;
- c->src_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ c->src_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
c->src_ipaddr.prefix = 128;
cp = cf_pair_alloc(c->cs, "src_addr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
#else
case PW_TYPE_IPV4_PREFIX:
if (da->attr == PW_FREERADIUS_CLIENT_IP_PREFIX) {
c->ipaddr.af = AF_INET;
- memcpy(&c->ipaddr.ipaddr.ip4addr, &vp->vp_ipv4prefix[2],
- sizeof(c->ipaddr.ipaddr.ip4addr.s_addr));
+ memcpy(&c->ipaddr.ipaddr.v4, &vp->vp_ipv4prefix[2],
+ sizeof(c->ipaddr.ipaddr.v4.s_addr));
fr_ipaddr_mask(&c->ipaddr, (vp->vp_ipv4prefix[1] & 0x3f));
cp = cf_pair_alloc(c->cs, "ipv4addr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
}
case PW_TYPE_IPV6_PREFIX:
if (da->attr == PW_FREERADIUS_CLIENT_IPV6_PREFIX) {
c->ipaddr.af = AF_INET6;
- memcpy(&c->ipaddr.ipaddr.ip6addr, &vp->vp_ipv6prefix[2],
- sizeof(c->ipaddr.ipaddr.ip6addr));
+ memcpy(&c->ipaddr.ipaddr.v6, &vp->vp_ipv6prefix[2],
+ sizeof(c->ipaddr.ipaddr.v6));
fr_ipaddr_mask(&c->ipaddr, vp->vp_ipv6prefix[1]);
cp = cf_pair_alloc(c->cs, "ipv6addr", strvalue, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
}
ADDSTRING(") -> (");
if ((sock->my_ipaddr.af == AF_INET) &&
- (sock->my_ipaddr.ipaddr.ip4addr.s_addr == htonl(INADDR_ANY))) {
+ (sock->my_ipaddr.ipaddr.v4.s_addr == htonl(INADDR_ANY))) {
strlcpy(buffer, "*", bufsize);
} else {
fr_inet_ntoh(&sock->my_ipaddr, buffer, bufsize);
ADDSTRING(") -> home_server (");
if ((sock->other_ipaddr.af == AF_INET) &&
- (sock->other_ipaddr.ipaddr.ip4addr.s_addr == htonl(INADDR_ANY))) {
+ (sock->other_ipaddr.ipaddr.v4.s_addr == htonl(INADDR_ANY))) {
strlcpy(buffer, "*", bufsize);
} else {
fr_inet_ntoh(&sock->other_ipaddr, buffer, bufsize);
ADDSTRING(" address ");
if ((sock->my_ipaddr.af == AF_INET) &&
- (sock->my_ipaddr.ipaddr.ip4addr.s_addr == htonl(INADDR_ANY))) {
+ (sock->my_ipaddr.ipaddr.v4.s_addr == htonl(INADDR_ANY))) {
strlcpy(buffer, "*", bufsize);
} else {
fr_inet_ntoh(&sock->my_ipaddr, buffer, bufsize);
* Try IPv4 first
*/
memset(&ipaddr, 0, sizeof(ipaddr));
- ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_NONE);
+ ipaddr.ipaddr.v4.s_addr = htonl(INADDR_NONE);
rcode = cf_pair_parse(NULL, cs, "ipaddr", FR_ITEM_POINTER(PW_TYPE_COMBO_IP_ADDR, &ipaddr), NULL, T_INVALID);
if (rcode < 0) return -1;
memset(&ipaddr, 0, sizeof(ipaddr));
ipaddr.af = AF_INET6;
ipaddr.prefix = 128;
- ipaddr.ipaddr.ip6addr = in6addr_any; /* in6addr_any binds to all addresses */
+ ipaddr.ipaddr.v6 = in6addr_any; /* in6addr_any binds to all addresses */
}
rcode = cf_pair_parse(NULL, cs, "port", FR_ITEM_POINTER(PW_TYPE_SHORT, &sock->my_port), "0", T_BARE_WORD);
break;
case PW_TYPE_IPV4_ADDR:
- ret = ntohl(vp->vp_ipaddr) - ntohl(check->vp_ipaddr);
+ ret = ntohl(vp->vp_ipv4addr) - ntohl(check->vp_ipv4addr);
break;
case PW_TYPE_IPV6_ADDR:
if (vp->da->attr == PW_PACKET_DST_IP_ADDRESS) {
dst_ipaddr.af = AF_INET;
- dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
dst_ipaddr.prefix = 32;
} else {
dst_ipaddr.af = AF_INET6;
- memcpy(&dst_ipaddr.ipaddr.ip6addr, &vp->vp_ipv6addr, sizeof(vp->vp_ipv6addr));
+ memcpy(&dst_ipaddr.ipaddr.v6, &vp->vp_ipv6addr, sizeof(vp->vp_ipv6addr));
dst_ipaddr.prefix = 128;
}
vp = fr_pair_find_by_num(coa->proxy->packet->vps, 0, PW_PACKET_DST_IP_ADDRESS, TAG_ANY);
if (vp) {
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
ipaddr.prefix = 32;
} else if ((vp = fr_pair_find_by_num(coa->proxy->packet->vps, 0, PW_PACKET_DST_IPV6_ADDRESS, TAG_ANY)) != NULL) {
ipaddr.af = AF_INET6;
- ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
ipaddr.prefix = 128;
} else if ((vp = fr_pair_find_by_num(coa->proxy->packet->vps, 0, PW_HOME_SERVER_POOL, TAG_ANY)) != NULL) {
coa->home_pool = home_pool_byname(vp->vp_strvalue,
case PW_PACKET_DST_IP_ADDRESS:
request->packet->dst_ipaddr.af = AF_INET;
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->packet->dst_ipaddr.prefix = 32;
break;
case PW_PACKET_DST_IPV6_ADDRESS:
request->packet->dst_ipaddr.af = AF_INET6;
- request->packet->dst_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->packet->dst_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->packet->dst_ipaddr.prefix = 128;
break;
case PW_PACKET_SRC_IP_ADDRESS:
request->packet->src_ipaddr.af = AF_INET;
- request->packet->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->packet->src_ipaddr.prefix = 32;
break;
case PW_PACKET_SRC_IPV6_ADDRESS:
request->packet->src_ipaddr.af = AF_INET6;
- request->packet->src_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->packet->src_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->packet->src_ipaddr.prefix = 128;
break;
*/
if (ip) {
current->src_ipaddr.af = AF_INET;
- current->src_ipaddr.ipaddr.ip4addr.s_addr = ip->ip_src.s_addr;
+ current->src_ipaddr.ipaddr.v4.s_addr = ip->ip_src.s_addr;
current->dst_ipaddr.af = AF_INET;
- current->dst_ipaddr.ipaddr.ip4addr.s_addr = ip->ip_dst.s_addr;
+ current->dst_ipaddr.ipaddr.v4.s_addr = ip->ip_dst.s_addr;
} else {
current->src_ipaddr.af = AF_INET6;
- memcpy(current->src_ipaddr.ipaddr.ip6addr.s6_addr, ip6->ip_src.s6_addr,
- sizeof(current->src_ipaddr.ipaddr.ip6addr.s6_addr));
+ memcpy(current->src_ipaddr.ipaddr.v6.s6_addr, ip6->ip_src.s6_addr,
+ sizeof(current->src_ipaddr.ipaddr.v6.s6_addr));
current->dst_ipaddr.af = AF_INET6;
- memcpy(current->dst_ipaddr.ipaddr.ip6addr.s6_addr, ip6->ip_dst.s6_addr,
- sizeof(current->dst_ipaddr.ipaddr.ip6addr.s6_addr));
+ memcpy(current->dst_ipaddr.ipaddr.v6.s6_addr, ip6->ip_dst.s6_addr,
+ sizeof(current->dst_ipaddr.ipaddr.v6.s6_addr));
}
current->src_port = ntohs(udp->src);
case HOME_POOL_CLIENT_BALANCE:
switch (request->packet->src_ipaddr.af) {
case AF_INET:
- hash = fr_hash(&request->packet->src_ipaddr.ipaddr.ip4addr,
- sizeof(request->packet->src_ipaddr.ipaddr.ip4addr));
+ hash = fr_hash(&request->packet->src_ipaddr.ipaddr.v4,
+ sizeof(request->packet->src_ipaddr.ipaddr.v4));
break;
case AF_INET6:
- hash = fr_hash(&request->packet->src_ipaddr.ipaddr.ip6addr,
- sizeof(request->packet->src_ipaddr.ipaddr.ip6addr));
+ hash = fr_hash(&request->packet->src_ipaddr.ipaddr.v6,
+ sizeof(request->packet->src_ipaddr.ipaddr.v6));
break;
default:
case HOME_POOL_CLIENT_PORT_BALANCE:
switch (request->packet->src_ipaddr.af) {
case AF_INET:
- hash = fr_hash(&request->packet->src_ipaddr.ipaddr.ip4addr,
- sizeof(request->packet->src_ipaddr.ipaddr.ip4addr));
+ hash = fr_hash(&request->packet->src_ipaddr.ipaddr.v4,
+ sizeof(request->packet->src_ipaddr.ipaddr.v4));
break;
case AF_INET6:
- hash = fr_hash(&request->packet->src_ipaddr.ipaddr.ip6addr,
- sizeof(request->packet->src_ipaddr.ipaddr.ip6addr));
+ hash = fr_hash(&request->packet->src_ipaddr.ipaddr.v6,
+ sizeof(request->packet->src_ipaddr.ipaddr.v6));
break;
default:
#define INTPAIR(n,v) PAIR(n,v,vp_integer)
-#define IPPAIR(n,v) PAIR(n,v,vp_ipaddr)
+#define IPPAIR(n,v) PAIR(n,v,vp_ipv4addr)
#define STRINGPAIR(n,v) do { \
if(!(vp = fr_pair_afrom_num(stopreq->packet,0, n))) { \
fr_ipaddr_t ipaddr;
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = nasaddr;
+ ipaddr.ipaddr.v4.s_addr = nasaddr;
/*
* Find NAS type.
*/
if (client->ipaddr.af != AF_INET) return 0;
- out->datum.ipaddr = client->ipaddr.ipaddr.ip4addr;
+ out->datum.ipaddr = client->ipaddr.ipaddr.v4;
out->length = dict_attr_sizes[PW_TYPE_IPV4_ADDR][0];
return 0;
if (server_port) {
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = server_ip->vp_ipaddr;
+ ipaddr.ipaddr.v4.s_addr = server_ip->vp_ipv4addr;
cl = listener_find_client_list(&ipaddr, server_port->vp_integer, IPPROTO_UDP);
/*
if (vp) {
memset(&ipaddr, 0, sizeof(ipaddr));
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
client = client_find(cl, &ipaddr, IPPROTO_UDP);
#ifdef WITH_TCP
if (!client) {
&request->reply->vps,
PW_FREERADIUS_STATS_CLIENT_IP_ADDRESS, VENDORPEC_FREERADIUS);
if (vp) {
- vp->vp_ipaddr = client->ipaddr.ipaddr.ip4addr.s_addr;
+ vp->vp_ipv4addr = client->ipaddr.ipaddr.v4.s_addr;
}
if (client->ipaddr.prefix != 32) {
if (!server_port) return;
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = server_ip->vp_ipaddr;
+ ipaddr.ipaddr.v4.s_addr = server_ip->vp_ipv4addr;
this = listener_find_byipaddr(&ipaddr,
server_port->vp_integer,
IPPROTO_UDP);
memset(&ipaddr, 0, sizeof(ipaddr));
#endif
ipaddr.af = AF_INET;
- ipaddr.ipaddr.ip4addr.s_addr = server_ip->vp_ipaddr;
+ ipaddr.ipaddr.v4.s_addr = server_ip->vp_ipv4addr;
home = home_server_find(&ipaddr, server_port->vp_integer,
IPPROTO_UDP);
request->packet->code = PW_CODE_ACCESS_REQUEST;
request->packet->src_ipaddr.af = AF_INET;
- request->packet->src_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ request->packet->src_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
request->packet->src_port = 18120;
request->packet->dst_ipaddr.af = AF_INET;
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
request->packet->dst_port = 1812;
/*
case PW_PACKET_DST_IP_ADDRESS:
request->packet->dst_ipaddr.af = AF_INET;
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->packet->dst_ipaddr.prefix = 32;
break;
case PW_PACKET_DST_IPV6_ADDRESS:
request->packet->dst_ipaddr.af = AF_INET6;
- request->packet->dst_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->packet->dst_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->packet->dst_ipaddr.prefix = 128;
break;
case PW_PACKET_SRC_IP_ADDRESS:
request->packet->src_ipaddr.af = AF_INET;
- request->packet->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->packet->src_ipaddr.prefix = 32;
break;
case PW_PACKET_SRC_IPV6_ADDRESS:
request->packet->src_ipaddr.af = AF_INET6;
- request->packet->src_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->packet->src_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->packet->src_ipaddr.prefix = 128;
break;
request->packet->code = PW_CODE_ACCESS_REQUEST;
request->packet->src_ipaddr.af = AF_INET;
- request->packet->src_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ request->packet->src_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
request->packet->src_port = 18120;
request->packet->dst_ipaddr.af = AF_INET;
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
request->packet->dst_port = 1812;
/*
case PW_PACKET_SRC_IP_ADDRESS:
if (packet->src_ipaddr.af == AF_INET) {
virtual = fr_pair_afrom_da(ctx, vpt->tmpl_da);
- virtual->vp_ipaddr = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ virtual->vp_ipv4addr = packet->src_ipaddr.ipaddr.v4.s_addr;
vp = virtual;
}
break;
case PW_PACKET_DST_IP_ADDRESS:
if (packet->dst_ipaddr.af == AF_INET) {
virtual = fr_pair_afrom_da(ctx, vpt->tmpl_da);
- virtual->vp_ipaddr = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ virtual->vp_ipv4addr = packet->dst_ipaddr.ipaddr.v4.s_addr;
vp = virtual;
}
break;
if (packet->src_ipaddr.af == AF_INET6) {
virtual = fr_pair_afrom_da(ctx, vpt->tmpl_da);
memcpy(&virtual->vp_ipv6addr,
- &packet->src_ipaddr.ipaddr.ip6addr,
- sizeof(packet->src_ipaddr.ipaddr.ip6addr));
+ &packet->src_ipaddr.ipaddr.v6,
+ sizeof(packet->src_ipaddr.ipaddr.v6));
vp = virtual;
}
break;
if (packet->dst_ipaddr.af == AF_INET6) {
virtual = fr_pair_afrom_da(ctx, vpt->tmpl_da);
memcpy(&virtual->vp_ipv6addr,
- &packet->dst_ipaddr.ipaddr.ip6addr,
- sizeof(packet->dst_ipaddr.ipaddr.ip6addr));
+ &packet->dst_ipaddr.ipaddr.v6,
+ sizeof(packet->dst_ipaddr.ipaddr.v6));
vp = virtual;
}
break;
* is bigendian and will convert it for us.
*/
case PW_TYPE_IPV4_ADDR:
- return snprintf(*out, outlen, "%u", htonl(vp->vp_ipaddr));
+ return snprintf(*out, outlen, "%u", htonl(vp->vp_ipv4addr));
case PW_TYPE_IPV4_PREFIX:
return snprintf(*out, outlen, "%u", htonl((*(uint32_t *)(vp->vp_ipv4prefix + 2))));
client = &sock->client;
memset(client, 0, sizeof(*client));
client->ipaddr.af = AF_INET;
- client->ipaddr.ipaddr.ip4addr.s_addr = INADDR_NONE;
+ client->ipaddr.ipaddr.v4.s_addr = INADDR_NONE;
client->ipaddr.prefix = 0;
client->longname = client->shortname = sock->lsock.interface;
client->secret = client->shortname;
* Try IPv4 first
*/
memset(ipaddr, 0, sizeof(*ipaddr));
- ipaddr->ipaddr.ip4addr.s_addr = htonl(INADDR_NONE);
+ ipaddr->ipaddr.v4.s_addr = htonl(INADDR_NONE);
rcode = cf_pair_parse(NULL, cs, "ipaddr", FR_ITEM_POINTER(PW_TYPE_IPV4_ADDR, ipaddr), NULL, T_INVALID);
if (rcode < 0) return -1;
FORWARD;
if ((sock->my_ipaddr.af == AF_INET) &&
- (sock->my_ipaddr.ipaddr.ip4addr.s_addr == htonl(INADDR_ANY))) {
+ (sock->my_ipaddr.ipaddr.v4.s_addr == htonl(INADDR_ANY))) {
strlcpy(buffer, "*", bufsize);
} else {
fr_inet_ntoh(&sock->my_ipaddr, buffer, bufsize);
memset(packet, 0, sizeof(*packet));
packet->sockfd = -1;
packet->src_ipaddr.af = AF_INET;
- packet->src_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_NONE);
+ packet->src_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_NONE);
/*
* If everything's OK, this is a waste of memory.
vp = fr_pair_find_by_num(packet->vps, 0, PW_PACKET_SRC_IP_ADDRESS, TAG_ANY);
if (vp) {
packet->src_ipaddr.af = AF_INET;
- packet->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ packet->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
packet->src_ipaddr.prefix = 32;
} else {
vp = fr_pair_find_by_num(packet->vps, 0, PW_PACKET_SRC_IPV6_ADDRESS, TAG_ANY);
if (vp) {
packet->src_ipaddr.af = AF_INET6;
- memcpy(&packet->src_ipaddr.ipaddr.ip6addr,
+ memcpy(&packet->src_ipaddr.ipaddr.v6,
&vp->vp_ipv6addr, sizeof(vp->vp_ipv6addr));
packet->src_ipaddr.prefix = 128;
}
vp = fr_pair_find_by_num(packet->vps, 0, PW_PACKET_DST_IP_ADDRESS, TAG_ANY);
if (vp) {
packet->dst_ipaddr.af = AF_INET;
- packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
packet->dst_ipaddr.prefix = 32;
} else {
vp = fr_pair_find_by_num(packet->vps, 0, PW_PACKET_DST_IPV6_ADDRESS, TAG_ANY);
if (vp) {
packet->dst_ipaddr.af = AF_INET6;
- memcpy(&packet->dst_ipaddr.ipaddr.ip6addr,
+ memcpy(&packet->dst_ipaddr.ipaddr.v6,
&vp->vp_ipv6addr, sizeof(vp->vp_ipv6addr));
packet->dst_ipaddr.prefix = 128;
}
packet->dst_port = 1024 + ((data->counter >> 16) & 0xff);
packet->dst_ipaddr.af = AF_INET;
- packet->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl((INADDR_LOOPBACK & ~0xffffff) | ((data->counter >> 24) & 0xff));
+ packet->dst_ipaddr.ipaddr.v4.s_addr = htonl((INADDR_LOOPBACK & ~0xffffff) | ((data->counter >> 24) & 0xff));
/*
* Create / update accounting attributes.
client = &data->detail_client;
memset(client, 0, sizeof(*client));
client->ipaddr.af = AF_INET;
- client->ipaddr.ipaddr.ip4addr.s_addr = INADDR_NONE;
+ client->ipaddr.ipaddr.v4.s_addr = INADDR_NONE;
client->ipaddr.prefix = 0;
client->longname = client->shortname = data->filename;
client->secret = client->shortname;
src_port = ntohs(udp->src);
src_ipaddr.af = AF_INET;
- src_ipaddr.ipaddr.ip4addr = ip->ip_src;
+ src_ipaddr.ipaddr.v4 = ip->ip_src;
src_ipaddr.prefix = 32;
src_ipaddr.zone_id = 0;
dst_ipaddr.af = AF_INET;
- dst_ipaddr.ipaddr.ip4addr = ip->ip_dst;
+ dst_ipaddr.ipaddr.v4 = ip->ip_dst;
dst_ipaddr.prefix = 32;
dst_ipaddr.zone_id = 0;
ip_hdr->ip_p = 17;
ip_hdr->ip_sum = 0; /* Filled later */
- ip_hdr->ip_src.s_addr = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
- ip_hdr->ip_dst.s_addr = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ ip_hdr->ip_src.s_addr = packet->src_ipaddr.ipaddr.v4.s_addr;
+ ip_hdr->ip_dst.s_addr = packet->dst_ipaddr.ipaddr.v4.s_addr;
/* IP header checksum */
ip_hdr->ip_sum = fr_ip_header_checksum((uint8_t const *)ip_hdr, 5);
/* UDP checksum is done here */
udp_hdr->checksum = fr_udp_checksum((uint8_t const *)udp_hdr, ntohs(udp_hdr->len), udp_hdr->checksum,
- packet->src_ipaddr.ipaddr.ip4addr,
- packet->dst_ipaddr.ipaddr.ip4addr);
+ packet->src_ipaddr.ipaddr.v4,
+ packet->dst_ipaddr.ipaddr.v4);
ret = pcap_inject(pcap->handle, dhcp_packet, (end - dhcp_packet + packet->data_len));
if (ret < 0) {
/*
* Keep value in Network Order!
*/
- memcpy(&vp->vp_ipaddr, p, 4);
+ memcpy(&vp->vp_ipv4addr, p, 4);
vp->vp_length = 4;
p += 4;
break;
/*
* Keep value in Network Order!
*/
- memcpy(&vp->vp_ipaddr, p, 16);
+ memcpy(&vp->vp_ipv4addr, p, 16);
vp->vp_length = 16;
p += 16;
break;
break;
case PW_TYPE_IPV4_ADDR:
- memcpy(&vp->vp_ipaddr, p, 4);
+ memcpy(&vp->vp_ipv4addr, p, 4);
vp->vp_length = 4;
break;
break;
case PW_TYPE_IPV4_ADDR:
- memcpy(p, &vp->vp_ipaddr, 4);
+ memcpy(p, &vp->vp_ipv4addr, 4);
p += 4;
break;
/* DHCP-Client-IP-Address */
if ((vp = fr_pair_find_by_num(packet->vps, DHCP_MAGIC_VENDOR, 263, TAG_ANY))) {
- memcpy(p, &vp->vp_ipaddr, 4);
+ memcpy(p, &vp->vp_ipv4addr, 4);
}
p += 4;
/* DHCP-Your-IP-address */
if ((vp = fr_pair_find_by_num(packet->vps, DHCP_MAGIC_VENDOR, 264, TAG_ANY))) {
- lvalue = vp->vp_ipaddr;
+ lvalue = vp->vp_ipv4addr;
} else {
lvalue = htonl(INADDR_ANY);
}
/* DHCP-Server-IP-Address */
vp = fr_pair_find_by_num(packet->vps, DHCP_MAGIC_VENDOR, 265, TAG_ANY);
if (vp) {
- lvalue = vp->vp_ipaddr;
+ lvalue = vp->vp_ipv4addr;
} else {
lvalue = htonl(INADDR_ANY);
}
* DHCP-Gateway-IP-Address
*/
if ((vp = fr_pair_find_by_num(packet->vps, DHCP_MAGIC_VENDOR, 266, TAG_ANY))) {
- lvalue = vp->vp_ipaddr;
+ lvalue = vp->vp_ipv4addr;
} else {
lvalue = htonl(INADDR_ANY);
}
memset(&req, 0, sizeof(req));
sin = (struct sockaddr_in *) &req.arp_pa;
sin->sin_family = AF_INET;
- sin->sin_addr.s_addr = ip->vp_ipaddr;
+ sin->sin_addr.s_addr = ip->vp_ipv4addr;
strlcpy(req.arp_dev, interface, sizeof(req.arp_dev));
ip_hdr->ip_sum = 0; /* Filled later */
/* saddr: Packet-Src-IP-Address (default: 0.0.0.0). */
- ip_hdr->ip_src.s_addr = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ ip_hdr->ip_src.s_addr = packet->src_ipaddr.ipaddr.v4.s_addr;
/* daddr: packet destination IP addr (should be 255.255.255.255 for broadcast). */
- ip_hdr->ip_dst.s_addr = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ ip_hdr->ip_dst.s_addr = packet->dst_ipaddr.ipaddr.v4.s_addr;
/* IP header checksum */
ip_hdr->ip_sum = fr_ip_header_checksum((uint8_t const *)ip_hdr, 5);
/* UDP checksum is done here */
udp_hdr->checksum = fr_udp_checksum((uint8_t const *)(dhcp_packet + ETH_HDR_SIZE + IP_HDR_SIZE),
ntohs(udp_hdr->len), udp_hdr->checksum,
- packet->src_ipaddr.ipaddr.ip4addr, packet->dst_ipaddr.ipaddr.ip4addr);
+ packet->src_ipaddr.ipaddr.v4, packet->dst_ipaddr.ipaddr.v4);
return sendto(sockfd, dhcp_packet, (ETH_HDR_SIZE + IP_HDR_SIZE + UDP_HDR_SIZE + packet->data_len),
0, (struct sockaddr *) link_layer, sizeof(struct sockaddr_ll));
packet->dst_port = udp_dst_port;
packet->src_ipaddr.af = AF_INET;
- packet->src_ipaddr.ipaddr.ip4addr.s_addr = ip_hdr->ip_src.s_addr;
+ packet->src_ipaddr.ipaddr.v4.s_addr = ip_hdr->ip_src.s_addr;
packet->dst_ipaddr.af = AF_INET;
- packet->dst_ipaddr.ipaddr.ip4addr.s_addr = ip_hdr->ip_dst.s_addr;
+ packet->dst_ipaddr.ipaddr.v4.s_addr = ip_hdr->ip_dst.s_addr;
return packet;
}
case PW_PACKET_DST_IP_ADDRESS:
request->dst_ipaddr.af = AF_INET;
- request->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->dst_ipaddr.prefix = 32;
break;
case PW_PACKET_DST_IPV6_ADDRESS:
request->dst_ipaddr.af = AF_INET6;
- request->dst_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->dst_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->dst_ipaddr.prefix = 128;
break;
case PW_PACKET_SRC_IP_ADDRESS:
request->src_ipaddr.af = AF_INET;
- request->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->src_ipaddr.prefix = 32;
break;
case PW_PACKET_SRC_IPV6_ADDRESS:
request->src_ipaddr.af = AF_INET6;
- request->src_ipaddr.ipaddr.ip6addr = vp->vp_ipv6addr;
+ request->src_ipaddr.ipaddr.v6 = vp->vp_ipv6addr;
request->src_ipaddr.prefix = 128;
break;
if (vp1 && vp2) {
nb_offer ++;
offer_list = talloc_realloc(request_p, offer_list, dc_offer_t, nb_offer);
- offer_list[nb_offer - 1].server_addr = vp1->vp_ipaddr;
- offer_list[nb_offer - 1].offered_addr = vp2->vp_ipaddr;
+ offer_list[nb_offer - 1].server_addr = vp1->vp_ipv4addr;
+ offer_list[nb_offer - 1].offered_addr = vp2->vp_ipv4addr;
}
}
}
exit(1);
}
- if (server_ipaddr.ipaddr.ip4addr.s_addr == 0xFFFFFFFF) {
+ if (server_ipaddr.ipaddr.v4.s_addr == 0xFFFFFFFF) {
ERROR("Using interface: %s (index: %d) in raw packet mode", iface, iface_ind);
raw_mode = true;
}
* It's invalid to have giaddr=0 AND a relay option
*/
giaddr = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 266, TAG_ANY); /* DHCP-Gateway-IP-Address */
- if (giaddr && (giaddr->vp_ipaddr == htonl(INADDR_ANY)) &&
+ if (giaddr && (giaddr->vp_ipv4addr == htonl(INADDR_ANY)) &&
fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 82, TAG_ANY)) { /* DHCP-Relay-Agent-Information */
RDEBUG2("Received packet with giaddr = 0 and containing relay option: Discarding packet");
return 1;
*/
/* set SRC ipaddr/port to the listener ipaddr/port */
request->packet->src_ipaddr.af = AF_INET;
- request->packet->src_ipaddr.ipaddr.ip4addr.s_addr = sock->lsock.my_ipaddr.ipaddr.ip4addr.s_addr;
+ request->packet->src_ipaddr.ipaddr.v4.s_addr = sock->lsock.my_ipaddr.ipaddr.v4.s_addr;
request->packet->src_port = sock->lsock.my_port;
vp = fr_pair_find_by_num(request->control, DHCP_MAGIC_VENDOR, 270, TAG_ANY); /* DHCP-Relay-To-IP-Address */
/* set DEST ipaddr/port to the next server ipaddr/port */
request->packet->dst_ipaddr.af = AF_INET;
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->packet->dst_port = sock->lsock.my_port;
/*
giaddr = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 266, TAG_ANY); /* DHCP-Gateway-IP-Address */
/* --with-udpfromto is needed just for the following test */
- if (!giaddr || giaddr->vp_ipaddr != request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr) {
+ if (!giaddr || giaddr->vp_ipv4addr != request->packet->dst_ipaddr.ipaddr.v4.s_addr) {
RDEBUG2("Packet received from server was not for us (was for 0x%x). Discarding packet",
- ntohl(request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr));
+ ntohl(request->packet->dst_ipaddr.ipaddr.v4.s_addr));
return 1;
}
/*
* We're a relay, and send the reply to giaddr.
*/
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = giaddr->vp_ipaddr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = giaddr->vp_ipv4addr;
request->reply->dst_port = request->packet->dst_port; /* server port */
if ((request->packet->code == PW_DHCP_NAK) ||
((vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 262, TAG_ANY)) /* DHCP-Flags */ &&
(vp->vp_integer & 0x8000) &&
((vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 263, TAG_ANY)) /* DHCP-Client-IP-Address */ &&
- (vp->vp_ipaddr == htonl(INADDR_ANY))))) {
+ (vp->vp_ipv4addr == htonl(INADDR_ANY))))) {
/*
* RFC 2131, page 23
*
* - Broadcast flag is set up and ciaddr == NULL
*/
RDEBUG2("Response will be broadcast");
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_BROADCAST);
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_BROADCAST);
} else {
/*
* RFC 2131, page 23
* otherwise to yiaddr
*/
if ((vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 263, TAG_ANY)) /* DHCP-Client-IP-Address */ &&
- (vp->vp_ipaddr != htonl(INADDR_ANY))) {
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ (vp->vp_ipv4addr != htonl(INADDR_ANY))) {
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
} else {
vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 264, TAG_ANY); /* DHCP-Your-IP-Address */
if (!vp) {
}
RDEBUG2("Response will be unicast to &DHCP-Your-IP-Address");
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
/*
* When sending a DHCP_OFFER, make sure our ARP table
* to send the reply.
*/
vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 266, TAG_ANY); /* DHCP-Gateway-IP-Address */
- if (vp && (vp->vp_ipaddr != htonl(INADDR_ANY))) {
+ if (vp && (vp->vp_ipv4addr != htonl(INADDR_ANY))) {
VALUE_PAIR *relay;
/* DHCP-Relay-IP-Address */
relay = radius_pair_create(request->reply, &request->reply->vps,
272, DHCP_MAGIC_VENDOR);
- if (relay) relay->vp_ipaddr = vp->vp_ipaddr;
+ if (relay) relay->vp_ipv4addr = vp->vp_ipv4addr;
}
vp = fr_pair_find_by_num(request->packet->vps, DHCP_MAGIC_VENDOR, 53, TAG_ANY); /* DHCP-Message-Type */
vp = fr_pair_find_by_num(request->reply->vps, 0, PW_PACKET_SRC_IP_ADDRESS, TAG_ANY);
if (vp) {
request->reply->if_index = 0; /* Must be 0, we don't know the outbound if_index */
- request->reply->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
/*
* The request was unicast (via a relay)
*/
- } else if (request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr != htonl(INADDR_BROADCAST) &&
- request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr != htonl(INADDR_ANY)) {
- request->reply->src_ipaddr.ipaddr.ip4addr.s_addr = request->packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ } else if (request->packet->dst_ipaddr.ipaddr.v4.s_addr != htonl(INADDR_BROADCAST) &&
+ request->packet->dst_ipaddr.ipaddr.v4.s_addr != htonl(INADDR_ANY)) {
+ request->reply->src_ipaddr.ipaddr.v4.s_addr = request->packet->dst_ipaddr.ipaddr.v4.s_addr;
request->reply->if_index = request->packet->if_index;
/*
* The listener was bound to an IP address, or we determined
* the address automatically, as it was the only address bound
* to the interface, and we bound to the interface.
*/
- } else if (sock->src_ipaddr.ipaddr.ip4addr.s_addr != htonl(INADDR_ANY)) {
- request->reply->src_ipaddr.ipaddr.ip4addr.s_addr = sock->src_ipaddr.ipaddr.ip4addr.s_addr;
+ } else if (sock->src_ipaddr.ipaddr.v4.s_addr != htonl(INADDR_ANY)) {
+ request->reply->src_ipaddr.ipaddr.v4.s_addr = sock->src_ipaddr.ipaddr.v4.s_addr;
#ifdef WITH_IFINDEX_IPADDR_RESOLUTION
/*
* We built with udpfromto and have the if_index of the receiving
RPEDEBUG("Failed determining src_ipaddr from if_index");
return RLM_MODULE_FAIL;
}
- request->reply->src_ipaddr.ipaddr.ip4addr.s_addr = primary.ipaddr.ip4addr.s_addr;
+ request->reply->src_ipaddr.ipaddr.v4.s_addr = primary.ipaddr.v4.s_addr;
#endif
/*
* There's a Server-Identification attribute
*/
} else if ((vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 54, TAG_ANY))) {
- request->reply->src_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->src_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
} else {
REDEBUG("Unable to determine correct src_ipaddr for response");
return RLM_MODULE_FAIL;
* public IP, but the gateway a private one.
*/
vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 272, TAG_ANY); /* DHCP-Relay-IP-Address */
- if (vp && (vp->vp_ipaddr != ntohl(INADDR_ANY))) {
+ if (vp && (vp->vp_ipv4addr != ntohl(INADDR_ANY))) {
RDEBUG2("Reply will be unicast to giaddr from original packet");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->reply->dst_port = request->packet->dst_port;
vp = fr_pair_find_by_num(request->reply->vps, 0, PW_PACKET_DST_PORT, TAG_ANY);
* not the client port.
*/
vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 266, TAG_ANY); /* DHCP-Gateway-IP-Address */
- if (vp && (vp->vp_ipaddr != htonl(INADDR_ANY))) {
+ if (vp && (vp->vp_ipv4addr != htonl(INADDR_ANY))) {
RDEBUG2("Reply will be unicast to giaddr");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
request->reply->dst_port = request->packet->dst_port;
return RLM_MODULE_OK;
}
((vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 262, TAG_ANY)) && /* DHCP-Flags */
(vp->vp_integer & 0x8000) &&
((vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 263, TAG_ANY)) && /* DHCP-Client-IP-Address */
- (vp->vp_ipaddr == htonl(INADDR_ANY))))) {
+ (vp->vp_ipv4addr == htonl(INADDR_ANY))))) {
/*
* RFC 2131, page 23
*
* - Broadcast flag is set up and ciaddr == NULL
*/
RDEBUG2("Reply will be broadcast");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_BROADCAST);
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_BROADCAST);
return RLM_MODULE_OK;
}
* Unicast to ciaddr if present, otherwise to yiaddr.
*/
if ((vp = fr_pair_find_by_num(request->reply->vps, DHCP_MAGIC_VENDOR, 263, TAG_ANY)) && /* DHCP-Client-IP-Address */
- (vp->vp_ipaddr != htonl(INADDR_ANY))) {
+ (vp->vp_ipv4addr != htonl(INADDR_ANY))) {
RDEBUG2("Reply will be sent unicast to &DHCP-Client-IP-Address");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
return RLM_MODULE_OK;
}
if (sock->lsock.broadcast && !sock->src_interface) {
WARN("You MUST set \"interface\" if you have \"broadcast = yes\"");
RDEBUG2("Reply will be broadcast as no interface was defined");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_BROADCAST);
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_BROADCAST);
return RLM_MODULE_OK;
}
RDEBUG2("Reply will be unicast to &DHCP-Your-IP-Address");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
/*
* When sending a DHCP_OFFER, make sure our ARP table
}
}
#else
- if (request->packet->src_ipaddr.ipaddr.ip4addr.s_addr != ntohl(INADDR_NONE)) {
+ if (request->packet->src_ipaddr.ipaddr.v4.s_addr != ntohl(INADDR_NONE)) {
RDEBUG2("Reply will be unicast to the unicast source IP address");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = request->packet->src_ipaddr.ipaddr.v4.s_addr;
} else {
RDEBUG2("Reply will be broadcast as this system does not support ARP updates");
- request->reply->dst_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_BROADCAST);
+ request->reply->dst_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_BROADCAST);
}
#endif
cp = cf_pair_find(cs, "src_ipaddr");
if (cp) {
memset(&sock->src_ipaddr, 0, sizeof(sock->src_ipaddr));
- sock->src_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_NONE);
+ sock->src_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_NONE);
rcode = cf_pair_parse(sock, cs, "src_ipaddr",
FR_ITEM_POINTER(PW_TYPE_IPV4_ADDR, &sock->src_ipaddr), NULL, T_INVALID);
if (rcode < 0) return -1;
WARN("Will continue, but source address must be set within the DHCP virtual server");
goto src_addr_is_bound_addr;
}
- inet_ntop(sock->src_ipaddr.af, &sock->src_ipaddr.ipaddr.ip4addr.s_addr, buffer, sizeof(buffer));
+ inet_ntop(sock->src_ipaddr.af, &sock->src_ipaddr.ipaddr.v4.s_addr, buffer, sizeof(buffer));
rad_assert(sock->src_ipaddr.af == AF_INET);
} else {
src_addr_is_bound_addr:
* This lets %{config:} work as expected, if we want to set
* DHCP-DHCP-Server-Identifier.
*/
- inet_ntop(sock->src_ipaddr.af, &sock->src_ipaddr.ipaddr.ip4addr.s_addr, buffer, sizeof(buffer));
+ inet_ntop(sock->src_ipaddr.af, &sock->src_ipaddr.ipaddr.v4.s_addr, buffer, sizeof(buffer));
DEBUG2("\tsrc_ipaddr = \"%s\"", buffer);
cp = cf_pair_alloc(cs, "src_ipaddr", buffer, T_OP_SET, T_BARE_WORD, T_BARE_WORD);
if (!cp) return -1;
client = &sock->dhcp_client;
memset(client, 0, sizeof(*client));
client->ipaddr.af = AF_INET;
- client->ipaddr.ipaddr.ip4addr.s_addr = ntohl(INADDR_NONE);
+ client->ipaddr.ipaddr.v4.s_addr = ntohl(INADDR_NONE);
client->ipaddr.prefix = 0;
client->longname = client->shortname = "dhcp";
client->secret = client->shortname;
case PW_TYPE_IPV4_ADDR:
if (attr_len == 4) {
- memcpy(&vp->vp_ipaddr, ptr, 4);
+ memcpy(&vp->vp_ipv4addr, ptr, 4);
vp->vp_length = 4;
break;
}
/* Data */
switch (vp->vp_type) {
case PW_TYPE_IPV4_ADDR:
- memcpy(out, &vp->vp_ipaddr, 4);
+ memcpy(out, &vp->vp_ipv4addr, 4);
break;
case PW_TYPE_ETHERNET:
/* get client ip address for MPP detection below */
if ((vp = fr_pair_find_by_num(request->packet->vps, 0, PW_FRAMED_IP_ADDRESS, TAG_ANY)) != NULL) {
- client_ip_addr = vp->vp_ipaddr;
+ client_ip_addr = vp->vp_ipv4addr;
}
/* get calling station id for MPP detection below */
switch (packet->src_ipaddr.af) {
case AF_INET:
src_vp.da = fr_dict_attr_by_num(NULL, 0, PW_PACKET_SRC_IP_ADDRESS);
- src_vp.vp_ipaddr = packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ src_vp.vp_ipv4addr = packet->src_ipaddr.ipaddr.v4.s_addr;
dst_vp.da = fr_dict_attr_by_num(NULL, 0, PW_PACKET_DST_IP_ADDRESS);
- dst_vp.vp_ipaddr = packet->dst_ipaddr.ipaddr.ip4addr.s_addr;
+ dst_vp.vp_ipv4addr = packet->dst_ipaddr.ipaddr.v4.s_addr;
break;
case AF_INET6:
src_vp.da = fr_dict_attr_by_num(NULL, 0, PW_PACKET_SRC_IPV6_ADDRESS);
- memcpy(&src_vp.vp_ipv6addr, &packet->src_ipaddr.ipaddr.ip6addr,
- sizeof(packet->src_ipaddr.ipaddr.ip6addr));
+ memcpy(&src_vp.vp_ipv6addr, &packet->src_ipaddr.ipaddr.v6,
+ sizeof(packet->src_ipaddr.ipaddr.v6));
dst_vp.da = fr_dict_attr_by_num(NULL, 0, PW_PACKET_DST_IPV6_ADDRESS);
- memcpy(&dst_vp.vp_ipv6addr, &packet->dst_ipaddr.ipaddr.ip6addr,
- sizeof(packet->dst_ipaddr.ipaddr.ip6addr));
+ memcpy(&dst_vp.vp_ipv6addr, &packet->dst_ipaddr.ipaddr.v6,
+ sizeof(packet->dst_ipaddr.ipaddr.v6));
break;
default:
break;
case PW_TYPE_IPV4_ADDR:
- memcpy(p, &vp->vp_ipaddr, 4); /* network order */
+ memcpy(p, &vp->vp_ipv4addr, 4); /* network order */
length = 4;
break;
case PW_TYPE_IPV4_ADDR:
case PW_TYPE_COMBO_IP_ADDR:
- vp->vp_ipaddr = (uint32_t) lua_tointeger(L, -1);
+ vp->vp_ipv4addr = (uint32_t) lua_tointeger(L, -1);
vp->vp_length = 4;
break;
nas = fr_pair_find_by_num(request->packet->vps, 0, PW_NAS_IP_ADDRESS, TAG_ANY);
if (!nas) {
nas = radius_pair_create(request->packet, &request->packet->vps, PW_NAS_IP_ADDRESS, 0);
- nas->vp_ipaddr = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ nas->vp_ipv4addr = request->packet->src_ipaddr.ipaddr.v4.s_addr;
}
break;
if (!vp->da->vendor) switch (vp->da->attr) {
case PW_LOGIN_IP_HOST:
case PW_FRAMED_IP_ADDRESS:
- ut.framed_address = vp->vp_ipaddr;
+ ut.framed_address = vp->vp_ipv4addr;
break;
case PW_FRAMED_PROTOCOL:
break;
case PW_NAS_IP_ADDRESS:
- ut.nas_address = vp->vp_ipaddr;
+ ut.nas_address = vp->vp_ipv4addr;
break;
case PW_NAS_PORT:
* originator's IP address.
*/
if (ut.nas_address == htonl(INADDR_NONE)) {
- ut.nas_address = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ ut.nas_address = request->packet->src_ipaddr.ipaddr.v4.s_addr;
nas = request->client->shortname;
- } else if (request->packet->src_ipaddr.ipaddr.ip4addr.s_addr == ut.nas_address) { /* might be a client, might not be. */
+ } else if (request->packet->src_ipaddr.ipaddr.v4.s_addr == ut.nas_address) { /* might be a client, might not be. */
nas = request->client->shortname;
/*
* Setup some stuff, like for MPP detection.
*/
if ((vp = fr_pair_find_by_num(request->packet->vps, 0, PW_FRAMED_IP_ADDRESS, TAG_ANY)) != NULL) {
- ipno = vp->vp_ipaddr;
+ ipno = vp->vp_ipv4addr;
}
if ((vp = fr_pair_find_by_num(request->packet->vps, 0, PW_CALLING_STATION_ID, TAG_ANY)) != NULL) {
my_ipaddr.af = AF_INET;
my_ipaddr.prefix = 32;
- my_ipaddr.ipaddr.ip4addr.s_addr = vp->vp_ipaddr;
+ my_ipaddr.ipaddr.v4.s_addr = vp->vp_ipv4addr;
/*
* Loop over the home accounting servers for this
lua_update_digest,
key_prefix, key_prefix_len,
(unsigned int)now.tv_sec, expires,
- htonl(ip->ipaddr.ip4addr.s_addr),
+ htonl(ip->ipaddr.v4.s_addr),
device_id, device_id_len,
gateway_id, gateway_id_len);
} else {
lua_release_digest,
key_prefix, key_prefix_len,
(unsigned int)now.tv_sec,
- htonl(ip->ipaddr.ip4addr.s_addr),
+ htonl(ip->ipaddr.v4.s_addr),
device_id, device_id_len);
} else {
char ip_buff[FR_IPADDR_PREFIX_STRLEN];
rad_assert((prefix > 0) && (prefix <= 128));
/* Don't be tempted to cast */
- memcpy(&ip_curr, ipaddr->ipaddr.ip6addr.s6_addr, sizeof(ip_curr));
- memcpy(&ip_end, end->ipaddr.ip6addr.s6_addr, sizeof(ip_curr));
+ memcpy(&ip_curr, ipaddr->ipaddr.v6.s6_addr, sizeof(ip_curr));
+ memcpy(&ip_end, end->ipaddr.v6.s6_addr, sizeof(ip_curr));
ip_curr = ntohlll(ip_curr);
ip_end = ntohlll(ip_end);
/* Increment the prefix */
ip_curr = uint128_add(ip_curr, uint128_lshift(uint128_new(0, 1), (128 - prefix)));
ip_curr = htonlll(ip_curr);
- memcpy(&ipaddr->ipaddr.ip6addr.s6_addr, &ip_curr, sizeof(ipaddr->ipaddr.ip6addr.s6_addr));
+ memcpy(&ipaddr->ipaddr.v6.s6_addr, &ip_curr, sizeof(ipaddr->ipaddr.v6.s6_addr));
return true;
}
rad_assert((prefix > 0) && (prefix <= 32));
- ip_curr = ntohl(ipaddr->ipaddr.ip4addr.s_addr);
- ip_end = ntohl(end->ipaddr.ip4addr.s_addr);
+ ip_curr = ntohl(ipaddr->ipaddr.v4.s_addr);
+ ip_end = ntohl(end->ipaddr.v4.s_addr);
/* We're done */
if (ip_curr == ip_end) return false;
/* Increment the prefix */
ip_curr += 1 << (32 - prefix);
- ipaddr->ipaddr.ip4addr.s_addr = htonl(ip_curr);
+ ipaddr->ipaddr.v4.s_addr = htonl(ip_curr);
return true;
}
}
if (start.af == AF_INET6) {
uint128_t start_int, end_int;
- memcpy(&start_int, start.ipaddr.ip6addr.s6_addr, sizeof(start_int));
- memcpy(&end_int, end.ipaddr.ip6addr.s6_addr, sizeof(end_int));
+ memcpy(&start_int, start.ipaddr.v6.s6_addr, sizeof(start_int));
+ memcpy(&end_int, end.ipaddr.v6.s6_addr, sizeof(end_int));
if (uint128_gt(ntohlll(start_int), ntohlll(end_int))) {
ERROR("End address must be greater than or equal to start address");
return -1;
* IPv4 addresses
*/
} else {
- if (ntohl((uint32_t)(start.ipaddr.ip4addr.s_addr)) >
- ntohl((uint32_t)(end.ipaddr.ip4addr.s_addr))) {
+ if (ntohl((uint32_t)(start.ipaddr.v4.s_addr)) >
+ ntohl((uint32_t)(end.ipaddr.v4.s_addr))) {
ERROR("End address must be greater than or equal to start address");
return -1;
}
if (!rad_cond_assert((prefix > 0) && (prefix <= 128))) return -1;
/* Don't be tempted to cast */
- memcpy(&ip, start.ipaddr.ip6addr.s6_addr, sizeof(ip));
+ memcpy(&ip, start.ipaddr.v6.s6_addr, sizeof(ip));
ip = ntohlll(ip);
/* Generate a mask that covers the prefix bits, and sets them high */
/* Decrement by one */
if (ex_broadcast) ip = uint128_sub(ip, uint128_new(0, 1));
- memcpy(&end.ipaddr.ip6addr.s6_addr, &ip, sizeof(end.ipaddr.ip6addr.s6_addr));
+ memcpy(&end.ipaddr.v6.s6_addr, &ip, sizeof(end.ipaddr.v6.s6_addr));
} else {
uint32_t ip;
/* cond assert to satisfy clang scan */
if (!rad_cond_assert((prefix > 0) && (prefix <= 32))) return -1;
- ip = ntohl(start.ipaddr.ip4addr.s_addr);
+ ip = ntohl(start.ipaddr.v4.s_addr);
/* Generate a mask that covers the prefix bits and sets them high */
ip |= uint32_gen_mask(prefix - start.prefix) << (32 - prefix);
/* Decrement by one */
if (ex_broadcast) ip--;
- end.ipaddr.ip4addr.s_addr = htonl(ip);
+ end.ipaddr.v4.s_addr = htonl(ip);
}
*start_out = start;
request->simul_count = 0;
if ((vp = fr_pair_find_by_num(request->packet->vps, 0, PW_FRAMED_IP_ADDRESS, TAG_ANY)) != NULL) {
- ipno = vp->vp_ipaddr;
+ ipno = vp->vp_ipv4addr;
}
if ((vp = fr_pair_find_by_num(request->packet->vps, 0, PW_CALLING_STATION_ID, TAG_ANY)) != NULL) {
/* if no NAS IP address, assign 0 */
vp = fr_pair_find_by_num(request->packet->vps, 0, PW_NAS_IP_ADDRESS, TAG_ANY);
if (vp) {
- nasip = ntohl(vp->vp_ipaddr);
+ nasip = ntohl(vp->vp_ipv4addr);
}
else {
nasip = 0;
/* add IP address to reply packet */
vp = radius_pair_create(request->reply, &request->reply->vps, PW_FRAMED_IP_ADDRESS, 0);
- vp->vp_ipaddr = ip.s_addr;
+ vp->vp_ipv4addr = ip.s_addr;
RDEBUG2("Returning %s", inet_ntoa(ip));
return RLM_MODULE_OK;
return RLM_MODULE_FAIL;
}
- framedip = ntohl(vp->vp_ipaddr);
+ framedip = ntohl(vp->vp_ipv4addr);
if (!nvp_query(inst, sqlsock,
"UPDATE `%s`.`ips` "
return RLM_MODULE_FAIL;
}
- nasip.s_addr = vp->vp_ipaddr;
+ nasip.s_addr = vp->vp_ipv4addr;
strlcpy(nasipstr, inet_ntoa(nasip), sizeof(nasipstr));
if (!nvp_query(inst, sqlsock,
case PW_LOGIN_IP_HOST:
case PW_FRAMED_IP_ADDRESS:
- framed_address = vp->vp_ipaddr;
+ framed_address = vp->vp_ipv4addr;
break;
#ifdef USER_PROCESS
case PW_FRAMED_PROTOCOL:
break;
#endif
case PW_NAS_IP_ADDRESS:
- nas_address = vp->vp_ipaddr;
+ nas_address = vp->vp_ipv4addr;
break;
case PW_NAS_PORT:
break;
case PW_ACCT_DELAY_TIME:
- delay = vp->vp_ipaddr;
+ delay = vp->vp_ipv4addr;
break;
}
}
* originator's IP address.
*/
if (nas_address == 0) {
- nas_address = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
+ nas_address = request->packet->src_ipaddr.ipaddr.v4.s_addr;
}
s = request->client->shortname;
if (!s || s[0] == 0) s = uue(&(nas_address));
HMAC_Init_ex(hmac, mip_rk, rk_len, EVP_sha1(), NULL);
HMAC_Update(hmac, (uint8_t const *) "PMIP4 MN HA", 11);
- HMAC_Update(hmac, (uint8_t const *) &ip->vp_ipaddr, 4);
+ HMAC_Update(hmac, (uint8_t const *) &ip->vp_ipv4addr, 4);
HMAC_Update(hmac, (uint8_t const *) &mn_nai->vp_strvalue, mn_nai->vp_length);
HMAC_Final(hmac, &mip_rk_1[0], &rk1_len);
HMAC_Init_ex(hmac, mip_rk, rk_len, EVP_sha1(), NULL);
HMAC_Update(hmac, (uint8_t const *) "CMIP4 MN HA", 11);
- HMAC_Update(hmac, (uint8_t const *) &ip->vp_ipaddr, 4);
+ HMAC_Update(hmac, (uint8_t const *) &ip->vp_ipv4addr, 4);
HMAC_Update(hmac, (uint8_t const *) &mn_nai->vp_strvalue, mn_nai->vp_length);
HMAC_Final(hmac, &mip_rk_1[0], &rk1_len);
break;
case PW_TYPE_IPV4_ADDR:
- memcpy(&vp->vp_ipaddr, p, 4);
+ memcpy(&vp->vp_ipv4addr, p, 4);
break;
case PW_TYPE_IFID:
* destination is not link local. Ignore it.
*/
if (src_any && (ps->src_ipaddr.af == AF_INET) &&
- (((ps->src_ipaddr.ipaddr.ip4addr.s_addr >> 24) & 0xff) == 127) &&
- (((request->dst_ipaddr.ipaddr.ip4addr.s_addr >> 24) & 0xff) != 127)) continue;
+ (((ps->src_ipaddr.ipaddr.v4.s_addr >> 24) & 0xff) == 127) &&
+ (((request->dst_ipaddr.ipaddr.v4.s_addr >> 24) & 0xff) != 127)) continue;
/*
* We're sourcing from *, and they asked for a
memset(&my_ipaddr, 0, sizeof(my_ipaddr));
my_ipaddr.af = AF_INET;
- my_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ my_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
my_port = 1812;
while ((c = getopt(argc, argv, "c:hi:qs:w:x")) != EOF) switch (c) {
memset(&my_ipaddr, 0, sizeof(my_ipaddr));
my_ipaddr.af = AF_INET;
- my_ipaddr.ipaddr.ip4addr.s_addr = htonl(INADDR_LOOPBACK);
+ my_ipaddr.ipaddr.v4.s_addr = htonl(INADDR_LOOPBACK);
my_port = 1812;
while ((c = getopt(argc, argv, "i:n:s:w:x")) != EOF) switch (c) {