summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xvtysh/extract.pl.in29
1 files changed, 29 insertions, 0 deletions
diff --git a/vtysh/extract.pl.in b/vtysh/extract.pl.in
index aa90be4a..73860070 100755
--- a/vtysh/extract.pl.in
+++ b/vtysh/extract.pl.in
@@ -60,6 +60,8 @@ $ignore{'"terminal monitor"'} = "ignore";
$ignore{'"terminal no monitor"'} = "ignore";
$ignore{'"show history"'} = "ignore";
+my $cli_stomp = 0;
+
foreach (@ARGV) {
$file = $_;
@@ -136,6 +138,12 @@ foreach (@ARGV) {
$defun_body = join (", ", @defun_array);
# $cmd -> $str hash for lookup
+ if (exists($cmd2str{$cmd})) {
+ warn "Duplicate CLI Function: $cmd\n";
+ warn "\tFrom cli: $cmd2str{$cmd} to New cli: $str\n";
+ warn "\tOriginal Protocol: $cmd2proto{$cmd} to New Protocol: $protocol\n";
+ $cli_stomp++;
+ }
$cmd2str{$cmd} = $str;
$cmd2defun{$cmd} = $defun_body;
$cmd2proto{$cmd} = $protocol;
@@ -169,6 +177,27 @@ foreach (@ARGV) {
}
}
+my $bad_cli_stomps = 78;
+# Currently we have $bad_cli_stomps. This was determined by
+# running this script and counting up the collisions from what
+# was returned.
+#
+# When we have cli commands that map to the same function name, we
+# can introduce subtle bugs due to code not being called when
+# we think it is.
+#
+# If extract.pl fails with a error message and you've been
+# modifying the cli, then go back and fix your code to
+# not have cli command function collisions.
+#
+# If you've removed a cli overwrite, you can safely subtract
+# one from $bad_cli_stomps. If you've added to the problem
+# please fix your code before submittal
+if ($cli_stomp != $bad_cli_stomps) {
+ warn "Expected $bad_cli_stomps command line stomps, but got $cli_stomp instead\n";
+ exit $cli_stomp;
+}
+
# Check finaly alive $cmd;
foreach (keys %odefun) {
my ($node, $str) = (split (/,/));