Jan Janak 19 лет назад
Родитель
Сommit
6bdb84e15d
2 измененных файлов с 20 добавлено и 1 удалено
  1. 18 0
      usr_avp.c
  2. 2 1
      usr_avp.h

+ 18 - 0
usr_avp.c

@@ -624,6 +624,24 @@ inline void destroy_avp_list(avp_list_t* list)
 	*list = 0;
 }
 
+int reset_avp_list(int flags)
+{
+    int i;
+    if (flags & AVP_CLASS_URI) {
+	if (flags & AVP_TRACK_FROM) i = IDX_FROM_URI;
+	else i = IDX_TO_URI;
+    } else if (flags & AVP_CLASS_USER) {
+	if (flags & AVP_TRACK_FROM) i = IDX_FROM_USER;
+	else i = IDX_TO_USER;
+    } else if (flags & AVP_CLASS_DOMAIN) {
+	if (flags & AVP_TRACK_FROM) i = IDX_FROM_DOMAIN;
+	else i = IDX_TO_DOMAIN;
+    } else return -1;
+
+    crt_list[i] = &def_list[i];
+    destroy_avp_list(crt_list[i]);
+    return 0;
+}
 
 void reset_avps(void)
 {

+ 2 - 1
usr_avp.h

@@ -66,7 +66,6 @@
 #define AVP_FR_INV_TIMER "fr_inv_timer"  /* Value of final response invite timer */
 #define AVP_RPID         "rpid"          /* Remote-Party-ID */
 #define AVP_GFLAGS       "gflags"        /* global flags */
-#define AVP_FLAGS	 "flags"	 /* message flags */
 
 struct str_int_data {
 	str name;
@@ -173,6 +172,8 @@ avp_t *search_avp_by_index( avp_flags_t flags, avp_name_t name,
 avp_t *search_avp (avp_ident_t ident, avp_value_t* val, struct search_state* state);
 avp_t *search_next_avp(struct search_state* state, avp_value_t *val);
 
+/* Reset one avp list */
+int reset_avp_list(int flags);
 
 /* free functions */
 void reset_avps(void);