#define PW_ARAP_CHALLENGE_RESPONSE 84
#define PW_NAS_PORT_ID_STRING 87
#define PW_FRAMED_POOL 88
+#define PW_NAS_IPV6_ADDRESS 95
#define PW_DIGEST_RESPONSE 206
#define PW_DIGEST_ATTRIBUTES 207
{
VALUE_PAIR *nas;
- if (request->packet->src_ipaddr.af == AF_INET) {
+ switch (request->packet->src_ipaddr.af) {
+ case AF_INET:
nas = pairfind(request->packet->vps, PW_NAS_IP_ADDRESS);
if (!nas) {
nas = paircreate(PW_NAS_IP_ADDRESS, PW_TYPE_IPADDR);
nas->lvalue = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
pairadd(&request->packet->vps, nas);
}
- } else rad_assert(0 == 1); /* AF_INET6 */
+ break;
+
+ case AF_INET6:
+ nas = pairfind(request->packet->vps, PW_NAS_IPV6_ADDRESS);
+ if (!nas) {
+ nas = paircreate(PW_NAS_IPV6_ADDRESS, PW_TYPE_IPV6ADDR);
+ if (!nas) {
+ radlog(L_ERR, "No memory");
+ return -1;
+ }
+
+ memcpy(nas->strvalue,
+ &request->packet->src_ipaddr.ipaddr,
+ sizeof(request->packet->src_ipaddr.ipaddr));
+ pairadd(&request->packet->vps, nas);
+ }
+ break;
+
+ default:
+ radlog(L_ERR, "Unknown address family for packet");
+ return -1;
+ }
+
/*
* Add in a Client-IP-Address, to tell the user
*/
nas = paircreate(PW_CLIENT_IP_ADDRESS, PW_TYPE_IPADDR);
if (!nas) {
- radlog(L_ERR, "No memory");
- return -1;
+ radlog(L_ERR, "No memory");
+ return -1;
}
nas->lvalue = request->packet->src_ipaddr.ipaddr.ip4addr.s_addr;
ip_ntoh(&request->packet->src_ipaddr,