summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlib/Vyatta/ConfigLoad.pm9
-rwxr-xr-xscripts/vyatta-load-config.pl13
2 files changed, 19 insertions, 3 deletions
diff --git a/lib/Vyatta/ConfigLoad.pm b/lib/Vyatta/ConfigLoad.pm
index a1c0b8f..09bd627 100755
--- a/lib/Vyatta/ConfigLoad.pm
+++ b/lib/Vyatta/ConfigLoad.pm
@@ -232,10 +232,13 @@ sub loadConfigHierarchy {
my $xcp = new XorpConfigParser();
$xcp->parse($load_cfg);
my $root;
+ my @root_path;
if (defined($root_node)) {
- my $tmp = [$root_node];
+ my $tmp = [split("/",$root_node)];
$root = $xcp->get_node($tmp);
- #root_path= --except last node and needs to be passed to enumerate_branch
+ my @tmp2 = split("/",$root_node);
+ @root_path = pop(@tmp2);
+ @root_path = @tmp2;
}
else {
$root = $xcp->get_node( () );
@@ -243,7 +246,7 @@ sub loadConfigHierarchy {
if (!defined($root)) {
return ();
}
- enumerate_branch($root, ( ));
+ enumerate_branch($root, @root_path);
return generateHierarchy(\@all_naked_nodes);
}
diff --git a/scripts/vyatta-load-config.pl b/scripts/vyatta-load-config.pl
index 6755015..a3cf6ef 100755
--- a/scripts/vyatta-load-config.pl
+++ b/scripts/vyatta-load-config.pl
@@ -38,6 +38,19 @@ my $load_file = $bootpath . "/config.boot";
my $url_tmp_file = $bootpath . "/config.boot.$$";
+#
+# Note: to get merge to work on arbitrary nodes
+# within the configuration multinodes need to be escaped.
+# i.e.:
+# load --merge='load-balancing/wan/interface-health\ eth0'
+#
+# will start loading of the configuration node from:
+#
+# load-balancing/wan/interface-health:eth0
+#
+# Note current loading is limited to first new
+# multinode.
+#
sub usage() {
print "Usage: $0 --merge=<root>\n";
exit 0;