Module: sip-router Branch: master Commit: 89bd52a84d5e0d75572caff61346d0c3750c868a URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=89bd52a8...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Mon Sep 30 15:47:30 2013 +0200
core: helper functions to get xavp child nodes
- one function to get the $xavp(rootname=>childname) in code - wrappers for child node, child node with int value and child node with str value
---
xavp.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ xavp.h | 4 ++++ 2 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/xavp.c b/xavp.c index ceb405d..5f51731 100644 --- a/xavp.c +++ b/xavp.c @@ -787,4 +787,53 @@ sr_xavp_t *xavp_extract(str *name, sr_xavp_t **list) } return NULL; } + +/** + * return child node of an xavp + * - $xavp(rname=>cname) + */ +sr_xavp_t* xavp_get_child(str *rname, str *cname) +{ + sr_xavp_t *ravp=NULL; + + ravp = xavp_get(rname, NULL); + if(ravp==NULL || ravp->val.type!=SR_XTYPE_XAVP) + return NULL; + + return xavp_get(cname, ravp->val.v.xavp); +} + + +/** + * return child node of an xavp if it has int value + * - $xavp(rname=>cname) + */ +sr_xavp_t* xavp_get_child_with_ival(str *rname, str *cname) +{ + sr_xavp_t *vavp=NULL; + + vavp = xavp_get_child(rname, cname); + + if(vavp==NULL || vavp->val.type!=SR_XTYPE_INT) + return NULL; + + return vavp; +} + + +/** + * return child node of an xavp if it has string value + * - $xavp(rname=>cname) + */ +sr_xavp_t* xavp_get_child_with_sval(str *rname, str *cname) +{ + sr_xavp_t *vavp=NULL; + + vavp = xavp_get_child(rname, cname); + + if(vavp==NULL || vavp->val.type!=SR_XTYPE_STR) + return NULL; + + return vavp; +} #endif diff --git a/xavp.h b/xavp.h index 7d5d517..8332069 100644 --- a/xavp.h +++ b/xavp.h @@ -104,6 +104,10 @@ sr_xavp_t *xavp_extract(str *name, sr_xavp_t **list); void xavp_print_list(sr_xavp_t **head);
sr_xavp_t *xavp_clone_level_nodata(sr_xavp_t *xold); + +sr_xavp_t* xavp_get_child(str *rname, str *cname); +sr_xavp_t* xavp_get_child_with_ival(str *rname, str *cname); +sr_xavp_t* xavp_get_child_with_sval(str *rname, str *cname); #endif
#endif