+ /**\r
+ * Run the command specified by the arguments.\r
+ *\r
+ * @param args The command line arguments.\r
+ * @return true if the command was valid and succeeded\r
+ */\r
+ public boolean runCommand(String[] args) {\r
+ String cmd = args[0].trim().toLowerCase();\r
+ if (cmd.equals("add")) {\r
+ if (args.length > 2) {\r
+ if (args[1].startsWith("in") && args.length >= 6) {\r
+ return addIngress(args);\r
+ }\r
+ if (args[1].startsWith("eg") && args.length == 4) {\r
+ return addEgress(args);\r
+ }\r
+ if (args[1].startsWith("ne") && args.length == 5) {\r
+ return addRoute(args);\r
+ }\r
+ }\r
+ System.err.println("Add command should be one of:");\r
+ System.err.println(" add in[gress] feedid user subnet nodepatt [ seq ]");\r
+ System.err.println(" add eg[ress] subid node");\r
+ System.err.println(" add ne[twork] fromnode tonode vianode");\r
+ } else if (cmd.startsWith("del")) {\r
+ if (args.length > 2) {\r
+ if (args[1].startsWith("in") && args.length == 5) {\r
+ return delIngress(args);\r
+ }\r
+ if (args[1].startsWith("in") && args.length == 3) {\r
+ return delIngress(args);\r
+ }\r
+ if (args[1].startsWith("eg") && args.length == 3) {\r
+ return delEgress(args);\r
+ }\r
+ if (args[1].startsWith("ne") && args.length == 4) {\r
+ return delRoute(args);\r
+ }\r
+ }\r
+ System.err.println("Delete command should be one of:");\r
+ System.err.println(" del in[gress] feedid user subnet");\r
+ System.err.println(" del in[gress] seq");\r
+ System.err.println(" del eg[ress] subid");\r
+ System.err.println(" del ne[twork] fromnode tonode");\r
+ } else if (cmd.startsWith("lis")) {\r
+ return list(args);\r
+ } else if (cmd.startsWith("wid") && args.length > 1) {\r
+ width = Integer.parseInt(args[1]);\r
+ return true;\r
+ } else if (cmd.startsWith("?") || cmd.startsWith("hel") || cmd.startsWith("usa")) {\r
+ usage();\r
+ } else if (cmd.startsWith("#")) {\r
+ // comment -- ignore\r
+ } else {\r
+ System.err.println("Command should be one of add, del, list, exit, quit");\r
+ }\r
+ return false;\r
+ }\r