From: Igor Maravic <[email protected]>
Fixed searching for parent's children, so now children, that aren't multi-value
nodes,
of some parent could be accessed.
Syntax for accessing parent's children is:
parent.child1.child2.@
Please note that child1 can't be multi-value node!
---
xorp/rtrmgr/template_tree_node.cc | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/xorp/rtrmgr/template_tree_node.cc
b/xorp/rtrmgr/template_tree_node.cc
index c44afa9..bd99d2d 100644
--- a/xorp/rtrmgr/template_tree_node.cc
+++ b/xorp/rtrmgr/template_tree_node.cc
@@ -1024,6 +1024,29 @@ TemplateTreeNode::find_varname_node(const string&
varname)
return find_child_varname_node(var_parts, type());
}
+ if (var_parts.back() == "@" && var_parts.size() > 2) {
+ /**
+ * If we entered here, we want to find children
+ * of some of our parents
+ */
+ TTNodeType _type = (_parent && _parent->segname() == "@") ?
_parent->type() : NODE_VOID;
+ list<string> parent_node_parts;
+
+ parent_node_parts.push_back(var_parts.front());
+ parent_node_parts.push_back(var_parts.back());
+
+ var_parts.pop_front();
+ var_parts.pop_back();
+ var_parts.push_front("@");
+
+ TemplateTreeNode* parent = find_parent_varname_node(parent_node_parts,
_type);
+
+ if (parent) {
+ return parent->find_child_varname_node(var_parts, parent->type());
+ }
+ return NULL;
+ }
+
if (var_parts.size() > 1) {
TTNodeType _type = (_parent && _parent->segname() == "@") ?
_parent->type() : NODE_VOID;
// It's a parent node, or a child of a parent node
--
1.7.5.4
_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers