Module: kamailio Branch: master Commit: 399980d955fc1e285c22e4c050a6b2b30923ff1f URL: https://github.com/kamailio/kamailio/commit/399980d955fc1e285c22e4c050a6b2b30923ff1f
Author: Emmanuel BUU <[email protected]> Committer: Victor Seva <[email protected]> Date: 2026-06-02T10:48:42+02:00 acc_radius: add support for RADIUS vendor-specific attributes Ported vendor attribute support: the attribute/value load macro in misc_radius/radius.h now also resolves the vendor id, and acc_radius passes it to rc_avpair_add(). --- Modified: src/modules/acc_radius/acc_radius_mod.c Modified: src/modules/misc_radius/radius.h --- Diff: https://github.com/kamailio/kamailio/commit/399980d955fc1e285c22e4c050a6b2b30923ff1f.diff Patch: https://github.com/kamailio/kamailio/commit/399980d955fc1e285c22e4c050a6b2b30923ff1f.patch --- diff --git a/src/modules/acc_radius/acc_radius_mod.c b/src/modules/acc_radius/acc_radius_mod.c index d8f5e20875a..f475c1f7609 100644 --- a/src/modules/acc_radius/acc_radius_mod.c +++ b/src/modules/acc_radius/acc_radius_mod.c @@ -318,12 +318,13 @@ static inline uint32_t rad_status(struct sip_msg *req, int code) return rd_vals[RV_STATUS_FAILED].v; } -#define ADD_RAD_AVPAIR(_attr, _val, _len) \ - do { \ - if(!rc_avpair_add(rh, &send, rd_attrs[_attr].v, _val, _len, 0)) { \ - LM_ERR("failed to add %s, %d\n", rd_attrs[_attr].n, _attr); \ - goto error; \ - } \ +#define ADD_RAD_AVPAIR(_attr, _val, _len) \ + do { \ + if(!rc_avpair_add(rh, &send, rd_attrs[_attr].v, _val, _len, \ + rd_attrs[_attr].vendor)) { \ + LM_ERR("failed to add %s, %d\n", rd_attrs[_attr].n, _attr); \ + goto error; \ + } \ } while(0) int acc_radius_send_request(struct sip_msg *req, acc_info_t *inf) diff --git a/src/modules/misc_radius/radius.h b/src/modules/misc_radius/radius.h index 79184ccf387..7f75e9068dd 100644 --- a/src/modules/misc_radius/radius.h +++ b/src/modules/misc_radius/radius.h @@ -47,6 +47,9 @@ #ifndef VENDOR #define VENDOR(x) (((x) >> 16) & 0xffff) #endif +#ifndef ATTRID +#define ATTRID(x) ((x) & 0xffff) +#endif #endif @@ -55,6 +58,7 @@ struct attr const char *n; int v; unsigned int t; /* type of attribute */ + unsigned vendor; }; struct val @@ -124,8 +128,9 @@ struct val fn, at[i].n); \ return e1; \ } \ - at[i].v = da->value; \ + at[i].v = ATTRID(da->value); \ at[i].t = da->type; \ + at[i].vendor = VENDOR(da->value); \ } \ for(i = 0; i < nr_vl; i++) { \ if(vl[i].n == NULL) \ _______________________________________________ Kamailio - Development Mailing List -- [email protected] To unsubscribe send an email to [email protected] Important: keep the mailing list in the recipients, do not reply only to the sender!
