Quellcode durchsuchen

core: helper functions to get/set msg env lists

(cherry picked from commit 54a330bb707fb6b4943ba26356891696681a02e7)
Daniel-Constantin Mierla vor 3 Monaten
Ursprung
Commit
d39f318b36
2 geänderte Dateien mit 52 neuen und 0 gelöschten Zeilen
  1. 33 0
      src/core/srapi.c
  2. 19 0
      src/core/srapi.h

+ 33 - 0
src/core/srapi.c

@@ -19,7 +19,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+
 #include "dprint.h"
+#include "route.h"
 
 #include "srapi.h"
 
@@ -69,3 +71,34 @@ sr_cfgenv_t *sr_cfgenv_get(void)
 {
 	return &_sr_cfgenv;
 }
+
+/**
+ *
+ */
+void ksr_msg_env_push(ksr_msg_env_t *menv)
+{
+	menv->route_type = get_route_type();
+
+	/* make available the avp list from transaction */
+	menv->avps_uri_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI, NULL);
+	menv->avps_uri_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI, NULL);
+	menv->avps_user_from = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER, NULL);
+	menv->avps_user_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, NULL);
+	menv->avps_domain_from =
+			set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, NULL);
+	menv->avps_domain_to = set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, NULL);
+	menv->xavps = xavp_set_list(NULL);
+	menv->xavus = xavu_set_list(NULL);
+	menv->xavis = xavi_set_list(NULL);
+
+	return;
+}
+
+/**
+ *
+ */
+void ksr_msg_env_pop(ksr_msg_env_t *menv)
+{
+	set_route_type(menv->route_type);
+	return;
+}

+ 19 - 0
src/core/srapi.h

@@ -20,6 +20,8 @@
 #define __SRAPI_H__
 
 #include "str.h"
+#include "usr_avp.h"
+#include "xavp.h"
 #include "parser/msg_parser.h"
 
 typedef void (*sr_generate_callid_f)(str *);
@@ -39,4 +41,21 @@ typedef struct sr_cfgenv
 void sr_cfgenv_init(void);
 sr_cfgenv_t *sr_cfgenv_get(void);
 
+typedef struct ksr_msg_env
+{
+	int route_type;
+	avp_list_t *avps_user_from;
+	avp_list_t *avps_user_to;
+	avp_list_t *avps_domain_from;
+	avp_list_t *avps_domain_to;
+	avp_list_t *avps_uri_from;
+	avp_list_t *avps_uri_to;
+	sr_xavp_t **xavps;
+	sr_xavp_t **xavus;
+	sr_xavp_t **xavis;
+} ksr_msg_env_t;
+
+void ksr_msg_env_push(ksr_msg_env_t *menv);
+void ksr_msg_env_pop(ksr_msg_env_t *menv);
+
 #endif