bool ret = false;
switch (vendor) {
- case RADIUS_VENDOR_ID_MICROSOFT:
+ case VENDOR_ID_MICROSOFT:
switch (attrid) {
- case RADIUS_VENDOR_ATTR_MS_MPPE_SEND_KEY:
- case RADIUS_VENDOR_ATTR_MS_MPPE_RECV_KEY:
+ case VENDOR_ATTR_MS_MPPE_SEND_KEY:
+ case VENDOR_ATTR_MS_MPPE_RECV_KEY:
ret = true;
break;
default:
break;
}
- case RADIUS_VENDOR_ID_GSS_EAP:
+ case VENDOR_ID_UKERNA:
ret = true;
break;
default:
for (vp = m_avps; vp != NULL; vp = vp->next) {
gss_buffer_desc attribute;
-#ifndef RADIUS_STRING_ATTRS
char attrid[64];
-#endif
if (isHiddenAttributeP(ATTRID(vp->attribute), VENDOR(vp->attribute)))
continue;
if (alreadyAddedAttributeP(seen, vp))
continue;
-#ifdef RADIUS_STRING_ATTRS
- attribute.value = (void *)vp->name;
- attribute.length = strlen(vp->name);
-#else
snprintf(attrid, sizeof(attrid), "%s%d",
(char *)radiusUrnPrefix.value, vp->attribute);
attribute.value = attrid;
attribute.length = strlen(attrid);
-#endif /* RADIUS_STRING_ATTRS */
if (!addAttribute(this, &attribute, data))
return false;
duplicateBuffer(*attr, &strAttr);
s = (char *)strAttr.value;
- if (attr->length >= radiusUrnPrefix.length &&
- memcmp(s, radiusUrnPrefix.value, radiusUrnPrefix.length) == 0) {
- s += radiusUrnPrefix.length;
+ if (attr->length < radiusUrnPrefix.length ||
+ memcmp(s, radiusUrnPrefix.value, radiusUrnPrefix.length) != 0)
+ return false;
+
+ s += radiusUrnPrefix.length;
+
+ if (isdigit(*s)) {
attrid = strtoul(s, NULL, 10);
} else {
d = rc_dict_findattr(m_rh, (char *)s);
assert(remain == 0);
}
+
+time_t
+gss_eap_radius_attr_provider::getExpiryTime(void) const
+{
+ VALUE_PAIR *vp;
+
+ vp = rc_avpair_get(m_avps, PW_SESSION_TIMEOUT, 0);
+ if (vp == NULL || vp->lvalue == 0)
+ return 0;
+
+ return time(NULL) + vp->lvalue;
+}