[sr-dev] git:master:2585002a: ims_registrar_scscf: add-on for third-party registration

Henning Westerholt hw at skalatan.de
Tue Apr 9 21:36:24 CEST 2019


Module: kamailio
Branch: master
Commit: 2585002aea41d2629bf8607f199c6ef0e4146394
URL: https://github.com/kamailio/kamailio/commit/2585002aea41d2629bf8607f199c6ef0e4146394

Author: Christoph Valentin <Christoph.Valentin at kapsch.net>
Committer: Henning Westerholt <hw at skalatan.de>
Date: 2019-04-09T21:34:23+02:00

ims_registrar_scscf: add-on for third-party registration

- The feature is a add-on to third party registration in S-CSCF
- related to the the change in ims_isc module

---

Modified: src/modules/ims_registrar_scscf/userdata_parser.c

---

Diff:  https://github.com/kamailio/kamailio/commit/2585002aea41d2629bf8607f199c6ef0e4146394.diff
Patch: https://github.com/kamailio/kamailio/commit/2585002aea41d2629bf8607f199c6ef0e4146394.patch

---

diff --git a/src/modules/ims_registrar_scscf/userdata_parser.c b/src/modules/ims_registrar_scscf/userdata_parser.c
index f8992ee761..4880f0289c 100644
--- a/src/modules/ims_registrar_scscf/userdata_parser.c
+++ b/src/modules/ims_registrar_scscf/userdata_parser.c
@@ -202,6 +202,35 @@ static inline void space_trim_dup(str *dest, char *src)
 	memcpy(dest->s,src+i,dest->len);
 }
 
+/**
+ *      Parse a Application Server Extension.
+ * @param doc - the XML document
+ * @param node - the current node
+ * @param as - structure to fill
+ * @returns 1 on success, 0 on failure
+ */
+static int parse_application_server_extension(xmlDocPtr doc,xmlNodePtr node,ims_application_server *as)
+{
+        xmlNodePtr child;
+
+        for(child=node->children ; child ; child=child->next)
+                if (child->type==XML_ELEMENT_NODE)
+                        switch (child->name[0]) {
+                                case 'I':case 'i':      {//IncludeRegisterRequest / IncludeRegisterResponse
+                                        switch (child->name[17]) {
+                                                case 'Q':case 'q':  //IncludeRegisterRequest
+                                                        as->include_register_request = 1;
+                                                        break;
+                                                case 'S':case 's':  //IncludeRegisterResponse
+                                                        as->include_register_response = 1;
+                                                        break;
+                                        }
+                                        break;
+                                }
+                        }
+        return 1;
+}
+
 /**
  *	Parse a Application Server.
  * @param doc - the XML document
@@ -216,6 +245,8 @@ static int parse_application_server(xmlDocPtr doc,xmlNodePtr node,ims_applicatio
 	as->server_name.s=NULL;as->server_name.len=0;
 	as->default_handling=IFC_NO_DEFAULT_HANDLING;
 	as->service_info.s=NULL;as->service_info.len=0;
+	as->include_register_request = 0;
+	as->include_register_response = 0;
 
 	for(child=node->children ; child ; child=child->next)
 		if (child->type==XML_ELEMENT_NODE)
@@ -240,11 +271,13 @@ static int parse_application_server(xmlDocPtr doc,xmlNodePtr node,ims_applicatio
 					as->default_handling=ifc_tDefaultHandling2char(x);
 					xmlFree(x);
 					break;
+				case 'E':case 'e': //Extension
+					parse_application_server_extension(doc,child,as);
+					break;
 			}
 	return 1;
 }
 
-
 /**
  *	Parse SPT for SIP Header.
  * @param doc - the XML document




More information about the sr-dev mailing list