|
@@ -76,3 +76,29 @@ int parse_diversion_header(struct sip_msg *msg)
|
|
|
error:
|
|
|
return -1;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Get the value of a given diversion parameter
|
|
|
+ */
|
|
|
+str *get_diversion_param(struct sip_msg *msg, str* name)
|
|
|
+{
|
|
|
+ struct to_param *params;
|
|
|
+
|
|
|
+ if (parse_diversion_header(msg) < 0) {
|
|
|
+ ERR("could not get diversion parameter\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ params = ((struct to_body*)(msg->diversion->parsed))->param_lst;
|
|
|
+
|
|
|
+ while (params) {
|
|
|
+ if ((params->name.len == name->len) &&
|
|
|
+ (strncmp(params->name.s, name->s, name->len) == 0)) {
|
|
|
+ return ¶ms->value;
|
|
|
+ }
|
|
|
+ params = params->next;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|