2
0
Эх сурвалжийг харах

core: added km_parse_avp_spec()

- K compatible avp spec parser
Daniel-Constantin Mierla 16 жил өмнө
parent
commit
34b688d7ec
2 өөрчлөгдсөн 19 нэмэгдсэн , 0 устгасан
  1. 18 0
      usr_avp.c
  2. 1 0
      usr_avp.h

+ 18 - 0
usr_avp.c

@@ -1031,6 +1031,24 @@ void free_avp_ident(avp_ident_t* attr)
 	}
 	}
 }
 }
 
 
+int km_parse_avp_spec( str *name, int *type, int_str *avp_name)
+{
+	char *p;
+	int index = 0;
+
+	if (name==0 || name->s==0 || name->len==0)
+		return -1;
+
+	p = (char*)memchr((void*)name->s, ':', name->len);
+	if (p==NULL) {
+		/* it's an avp alias */
+		return lookup_avp_galias( name, type, avp_name);
+	} else {
+		return parse_avp_name( name, type, avp_name, &index);
+	}
+}
+
+
 int parse_avp_spec( str *name, int *type, int_str *avp_name, int *index)
 int parse_avp_spec( str *name, int *type, int_str *avp_name, int *index)
 {
 {
 	str alias;
 	str alias;

+ 1 - 0
usr_avp.h

@@ -216,6 +216,7 @@ int add_avp_galias(str *alias, int type, int_str avp_name);
 int parse_avp_ident( str *name, avp_ident_t* attr);
 int parse_avp_ident( str *name, avp_ident_t* attr);
 int parse_avp_name( str *name, int *type, int_str *avp_name, int *index);
 int parse_avp_name( str *name, int *type, int_str *avp_name, int *index);
 int parse_avp_spec( str *name, int *type, int_str *avp_name, int *index);
 int parse_avp_spec( str *name, int *type, int_str *avp_name, int *index);
+int km_parse_avp_spec( str *name, int *type, int_str *avp_name);
 void free_avp_name( avp_flags_t *type, int_str *avp_name);
 void free_avp_name( avp_flags_t *type, int_str *avp_name);
 /* Free an ident obtained with parse_avp_ident() */
 /* Free an ident obtained with parse_avp_ident() */
 void free_avp_ident(avp_ident_t* attr);
 void free_avp_ident(avp_ident_t* attr);