/* * Generate AVPs from the database result */ static int generate_avps(VALUE_PAIR* received) { str name_str, val_str; int_str name, val; VALUE_PAIR *vp; vp = received; while ((vp = rc_avpair_get(vp, attrs[A_SIP_AVP].v, 0))) { attr_name_value(vp, &name_str, &val_str); name.s = name_str; val.s = val_str; if (add_avp(AVP_NAME_STR | AVP_VAL_STR, name, val) < 0) { LM_ERR("failed to create a new AVP\n"); } else { LM_DBG("AVP '%.*s'='%.*s' has been added\n", name_str.len, ZSW(name_str.s), val_str.len, ZSW(val_str.s)); } vp = vp->next; } return 0; }
/* * Generate AVPs from the database result */ static int generate_avps(VALUE_PAIR* received) { int_str name, val; VALUE_PAIR *vp; vp = rc_avpair_get(received, ATTRID(attrs[A_SER_UID].v), VENDOR(attrs[A_SER_UID].v)); if (vp == NULL) { WARN("RADIUS server did not send SER-UID attribute in digest authentication reply\n"); return -1; } val.s.len = vp->lvalue; val.s.s = vp->strvalue; name.s.s = "uid"; name.s.len = 3; if (add_avp(AVP_TRACK_FROM | AVP_CLASS_USER | AVP_NAME_STR | AVP_VAL_STR, name, val) < 0) { ERR("Unable to create UID attribute\n"); return -1; } vp = received; while ((vp = rc_avpair_get(vp, ATTRID(attrs[A_SER_ATTR].v), VENDOR(attrs[A_SER_ATTR].v)))) { attr_name_value(&name.s, &val.s, vp); if (name.s.len == 0) { ERR("Missing attribute name\n"); return -1; } if (add_avp(AVP_TRACK_FROM | AVP_CLASS_USER | AVP_NAME_STR | AVP_VAL_STR, name, val) < 0) { LOG(L_ERR, "generate_avps: Unable to create a new AVP\n"); return -1; } else { DBG("generate_avps: AVP '%.*s'='%.*s' has been added\n", name.s.len, ZSW(name.s.s), val.s.len, ZSW(val.s.s)); } vp = vp->next; } return 0; }
/* * Generate AVPs from the database result */ static int generate_avps(unsigned int flags, VALUE_PAIR* received) { int_str name, val; VALUE_PAIR *vp; vp = received; while ((vp = rc_avpair_get(vp, ATTRID(attrs[A_SER_ATTR].v), VENDOR(attrs[A_SER_ATTR].v)))) { attr_name_value(&name.s, &val.s, vp); if (name.s.len == 0) { ERR("Missing attribute name\n"); return -1; } if (add_avp(flags | AVP_NAME_STR | AVP_VAL_STR, name, val) < 0) { ERR("Unable to create a new SER attribute\n"); return -1; } vp = vp->next; } return 0; }