diff options
Diffstat (limited to 'src/vppinfra/devicetree.c')
-rw-r--r-- | src/vppinfra/devicetree.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/vppinfra/devicetree.c b/src/vppinfra/devicetree.c index b725d5a0aed..df5a24f198e 100644 --- a/src/vppinfra/devicetree.c +++ b/src/vppinfra/devicetree.c @@ -192,9 +192,16 @@ done: } #endif -clib_dt_node_t * -clib_dt_get_child_node (clib_dt_node_t *n, char *name) +__clib_export clib_dt_node_t * +clib_dt_get_child_node (clib_dt_node_t *n, char *fmt, ...) { + u8 *s; + va_list va; + va_start (va, fmt); + s = va_format (0, fmt, &va); + va_end (va); + vec_add1 (s, 0); + vec_foreach_pointer (cn, n->child_nodes) { u8 *p = cn->path + vec_len (cn->path) - 1; @@ -206,15 +213,17 @@ clib_dt_get_child_node (clib_dt_node_t *n, char *name) if (p[-1] != '/') continue; - while (p[i] == name[i] && name[i] != 0) + while (p[i] == s[i] && s[i] != 0) i++; - if (name[i] != 0) + if (s[i] != 0) continue; + vec_free (s); return cn; } + vec_free (s); return 0; } |