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!

Reply via email to