Module: kamailio Branch: master Commit: e997473fd2dea1056b601ab76693e071f3480866 URL: https://github.com/kamailio/kamailio/commit/e997473fd2dea1056b601ab76693e071...
Author: Morten Tryfoss morten@tryfoss.no Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2023-11-13T11:25:42+01:00
cdp: Support for diameter routing agent (DRA) / relay
If an endpoint responds with a CEA indicating support for relaying (application-id 0xffffffff), let this endpoint be used for any application.
---
Modified: src/modules/cdp/diameter.h Modified: src/modules/cdp/routing.c
---
Diff: https://github.com/kamailio/kamailio/commit/e997473fd2dea1056b601ab76693e071... Patch: https://github.com/kamailio/kamailio/commit/e997473fd2dea1056b601ab76693e071...
---
diff --git a/src/modules/cdp/diameter.h b/src/modules/cdp/diameter.h index 1e69dd2be62..b84f01b4787 100644 --- a/src/modules/cdp/diameter.h +++ b/src/modules/cdp/diameter.h @@ -87,6 +87,8 @@ #define to_32x_len(_len_) ((_len_) + (((_len_)&3) ? 4 - ((_len_)&3) : 0))
+#define RELAY_APP_ID 0xffffffff + /* AAA TYPES */
#define AAA_NO_VENDOR_ID 0 diff --git a/src/modules/cdp/routing.c b/src/modules/cdp/routing.c index 82b6b15eda0..53a660960bb 100644 --- a/src/modules/cdp/routing.c +++ b/src/modules/cdp/routing.c @@ -98,7 +98,8 @@ peer *get_first_connected_route( cdp_session ->hash); /*V1.1 - As we were...no call seems to pass cdp_session unlocked */ if(p && !p->disabled && (p->state == I_Open || p->state == R_Open) - && peer_handles_application(p, app_id, vendor_id)) { + && (peer_handles_application(p, app_id, vendor_id) + || peer_handles_application(p, RELAY_APP_ID, 0))) { p->last_selected = time(NULL); LM_DBG("Found a sticky peer [%.*s] for this session - " "re-using\n", @@ -121,7 +122,8 @@ peer *get_first_connected_route( (p->state == I_Open || p->state == R_Open) ? "opened" : "closed"); if(p && !p->disabled && (p->state == I_Open || p->state == R_Open) - && peer_handles_application(p, app_id, vendor_id)) { + && (peer_handles_application(p, app_id, vendor_id) + || peer_handles_application(p, RELAY_APP_ID, 0))) { LM_DBG("The peer %.*s matches - will forward there\n", i->fqdn.len, i->fqdn.s); if(peer_count != 0) { //check the metric