From: shemminger Date: Tue, 22 Nov 2005 17:30:43 +0000 (+0000) Subject: Add ip command aliases and better matching X-Git-Tag: ss-060110~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ede723964a065992bf9d0dbe3f780e65ca917872;p=thirdparty%2Fiproute2.git Add ip command aliases and better matching --- diff --git a/ChangeLog b/ChangeLog index cd70102d5..4a062cc39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-11-22 Stephen Hemminger + + * Add back ip command aliases + 2005-11-07 Masahide NAKAMURA * Updating for 2.6.14 diff --git a/ip/ip.c b/ip/ip.c index 24f5c8efd..df6bc10b3 100644 --- a/ip/ip.c +++ b/ip/ip.c @@ -62,13 +62,15 @@ static const struct cmd { const char *cmd; int (*func)(int argc, char **argv); } cmds[] = { - { "addr", do_ipaddr }, - { "maddr", do_multiaddr }, + { "address", do_ipaddr }, + { "maddress", do_multiaddr }, { "route", do_iproute }, { "rule", do_iprule }, - { "neigh", do_ipneigh }, + { "neighbor", do_ipneigh }, + { "neighbour", do_ipneigh }, { "link", do_iplink }, { "tunnel", do_iptunnel }, + { "tunl", do_iptunnel }, { "monitor", do_ipmonitor }, { "xfrm", do_xfrm }, { "mroute", do_multiroute }, @@ -78,14 +80,25 @@ static const struct cmd { static int do_cmd(const char *argv0, int argc, char **argv) { - const struct cmd *c; + const struct cmd *c, *m = NULL; + + for (c = cmds; c->cmd; ++c) { + if (matches(argv0, c->cmd) == 0) { + if (m && m->func != c->func) { + fprintf(stderr, + "Ambiguious command \"%s\" matches both %s and %s\n", + argv0, m->cmd, c->cmd); + return -1; + } + m = c; + } + } - for (c = cmds; c->cmd; ++c) - if (matches(argv0, c->cmd) == 0) - return c->func(argc-1, argv+1); + if (m) + return m->func(argc-1, argv+1); fprintf(stderr, "Object \"%s\" is unknown, try \"ip help\".\n", argv0); - exit(-1); + return -1; } static int batch(const char *name)