use cli_error() for error messages and help

This commit is contained in:
bodea 2005-05-02 09:55:04 +00:00
parent 715e74f4c7
commit 2a8ea53c2f
4 changed files with 109 additions and 108 deletions

View file

@ -45,6 +45,7 @@
- Update .last_packet in cluster_handle_bytes only when there have - Update .last_packet in cluster_handle_bytes only when there have
been bytes received from the modem (dead sessions were having the been bytes received from the modem (dead sessions were having the
idle timeout reset by stray packets). idle timeout reset by stray packets).
- Use cli_error() for error messages and help.
* Fri Dec 17 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13 * Fri Dec 17 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13
- Better cluster master collision resolution: keep a counter of state - Better cluster master collision resolution: keep a counter of state

208
cli.c
View file

@ -2,7 +2,7 @@
// vim: sw=8 ts=8 // vim: sw=8 ts=8
char const *cvs_name = "$Name: $"; char const *cvs_name = "$Name: $";
char const *cvs_id_cli = "$Id: cli.c,v 1.54 2005/04/18 05:07:20 bodea Exp $"; char const *cvs_id_cli = "$Id: cli.c,v 1.55 2005/05/02 09:55:04 bodea Exp $";
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
@ -364,16 +364,16 @@ int cli_arg_help(struct cli_def *cli, int cr_ok, char *entry, ...)
desc = va_arg(ap, char *); desc = va_arg(ap, char *);
if (desc && *desc) if (desc && *desc)
cli_print(cli, " %-20s %s", p, desc); cli_error(cli, " %-20s %s", p, desc);
else else
cli_print(cli, " %s", p); cli_error(cli, " %s", p);
entry = desc ? va_arg(ap, char *) : 0; entry = desc ? va_arg(ap, char *) : 0;
} }
va_end(ap); va_end(ap);
if (cr_ok) if (cr_ok)
cli_print(cli, " <cr>"); cli_error(cli, " <cr>");
return CLI_OK; return CLI_OK;
} }
@ -902,7 +902,7 @@ static int cmd_write_memory(struct cli_def *cli, char *command, char **argv, int
} }
else else
{ {
cli_print(cli, "Error writing configuration: %s", strerror(errno)); cli_error(cli, "Error writing configuration: %s", strerror(errno));
} }
return CLI_OK; return CLI_OK;
} }
@ -1156,7 +1156,7 @@ static int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int ar
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1164,7 +1164,7 @@ static int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int ar
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a user to drop"); cli_error(cli, "Specify a user to drop");
return CLI_OK; return CLI_OK;
} }
@ -1172,7 +1172,7 @@ static int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int ar
{ {
if (!(s = sessionbyuser(argv[i]))) if (!(s = sessionbyuser(argv[i])))
{ {
cli_print(cli, "User %s is not connected", argv[i]); cli_error(cli, "User %s is not connected", argv[i]);
continue; continue;
} }
@ -1197,7 +1197,7 @@ static int cmd_drop_tunnel(struct cli_def *cli, char *command, char **argv, int
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1205,7 +1205,7 @@ static int cmd_drop_tunnel(struct cli_def *cli, char *command, char **argv, int
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a tunnel to drop"); cli_error(cli, "Specify a tunnel to drop");
return CLI_OK; return CLI_OK;
} }
@ -1213,19 +1213,19 @@ static int cmd_drop_tunnel(struct cli_def *cli, char *command, char **argv, int
{ {
if ((t = atol(argv[i])) <= 0 || (t >= MAXTUNNEL)) if ((t = atol(argv[i])) <= 0 || (t >= MAXTUNNEL))
{ {
cli_print(cli, "Invalid tunnel ID (1-%d)", MAXTUNNEL-1); cli_error(cli, "Invalid tunnel ID (1-%d)", MAXTUNNEL-1);
continue; continue;
} }
if (!tunnel[t].ip) if (!tunnel[t].ip)
{ {
cli_print(cli, "Tunnel %d is not connected", t); cli_error(cli, "Tunnel %d is not connected", t);
continue; continue;
} }
if (tunnel[t].die) if (tunnel[t].die)
{ {
cli_print(cli, "Tunnel %d is already being shut down", t); cli_error(cli, "Tunnel %d is already being shut down", t);
continue; continue;
} }
@ -1247,7 +1247,7 @@ static int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1255,7 +1255,7 @@ static int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a session id to drop"); cli_error(cli, "Specify a session id to drop");
return CLI_OK; return CLI_OK;
} }
@ -1263,7 +1263,7 @@ static int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int
{ {
if ((s = atol(argv[i])) <= 0 || (s > MAXSESSION)) if ((s = atol(argv[i])) <= 0 || (s > MAXSESSION))
{ {
cli_print(cli, "Invalid session ID (1-%d)", MAXSESSION-1); cli_error(cli, "Invalid session ID (1-%d)", MAXSESSION-1);
continue; continue;
} }
@ -1274,7 +1274,7 @@ static int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int
} }
else else
{ {
cli_print(cli, "Session %d is not active.", s); cli_error(cli, "Session %d is not active.", s);
} }
} }
@ -1314,7 +1314,7 @@ static int cmd_snoop(struct cli_def *cli, char *command, char **argv, int argc)
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1322,27 +1322,27 @@ static int cmd_snoop(struct cli_def *cli, char *command, char **argv, int argc)
if (argc < 3) if (argc < 3)
{ {
cli_print(cli, "Specify username, ip and port"); cli_error(cli, "Specify username, ip and port");
return CLI_OK; return CLI_OK;
} }
if (!(s = sessionbyuser(argv[0]))) if (!(s = sessionbyuser(argv[0])))
{ {
cli_print(cli, "User %s is not connected", argv[0]); cli_error(cli, "User %s is not connected", argv[0]);
return CLI_OK; return CLI_OK;
} }
ip = inet_addr(argv[1]); ip = inet_addr(argv[1]);
if (!ip || ip == INADDR_NONE) if (!ip || ip == INADDR_NONE)
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[1]); cli_error(cli, "Cannot parse IP \"%s\"", argv[1]);
return CLI_OK; return CLI_OK;
} }
port = atoi(argv[2]); port = atoi(argv[2]);
if (!port) if (!port)
{ {
cli_print(cli, "Invalid port %s", argv[2]); cli_error(cli, "Invalid port %s", argv[2]);
return CLI_OK; return CLI_OK;
} }
@ -1365,7 +1365,7 @@ static int cmd_no_snoop(struct cli_def *cli, char *command, char **argv, int arg
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1373,7 +1373,7 @@ static int cmd_no_snoop(struct cli_def *cli, char *command, char **argv, int arg
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a user to unsnoop"); cli_error(cli, "Specify a user to unsnoop");
return CLI_OK; return CLI_OK;
} }
@ -1381,7 +1381,7 @@ static int cmd_no_snoop(struct cli_def *cli, char *command, char **argv, int arg
{ {
if (!(s = sessionbyuser(argv[i]))) if (!(s = sessionbyuser(argv[i])))
{ {
cli_print(cli, "User %s is not connected", argv[i]); cli_error(cli, "User %s is not connected", argv[i]);
continue; continue;
} }
@ -1439,7 +1439,7 @@ static int cmd_throttle(struct cli_def *cli, char *command, char **argv, int arg
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1447,13 +1447,13 @@ static int cmd_throttle(struct cli_def *cli, char *command, char **argv, int arg
if (argc == 0) if (argc == 0)
{ {
cli_print(cli, "Specify a user to throttle"); cli_error(cli, "Specify a user to throttle");
return CLI_OK; return CLI_OK;
} }
if (!(s = sessionbyuser(argv[0]))) if (!(s = sessionbyuser(argv[0])))
{ {
cli_print(cli, "User %s is not connected", argv[0]); cli_error(cli, "User %s is not connected", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -1466,7 +1466,7 @@ static int cmd_throttle(struct cli_def *cli, char *command, char **argv, int arg
rate_in = rate_out = atoi(argv[1]); rate_in = rate_out = atoi(argv[1]);
if (rate_in < 1) if (rate_in < 1)
{ {
cli_print(cli, "Invalid rate \"%s\"", argv[1]); cli_error(cli, "Invalid rate \"%s\"", argv[1]);
return CLI_OK; return CLI_OK;
} }
} }
@ -1483,20 +1483,20 @@ static int cmd_throttle(struct cli_def *cli, char *command, char **argv, int arg
if (r < 1) if (r < 1)
{ {
cli_print(cli, "Invalid rate specification \"%s %s\"", argv[i], argv[i+1]); cli_error(cli, "Invalid rate specification \"%s %s\"", argv[i], argv[i+1]);
return CLI_OK; return CLI_OK;
} }
} }
} }
else else
{ {
cli_print(cli, "Invalid arguments"); cli_error(cli, "Invalid arguments");
return CLI_OK; return CLI_OK;
} }
if ((rate_in && session[s].throttle_in) || (rate_out && session[s].throttle_out)) if ((rate_in && session[s].throttle_in) || (rate_out && session[s].throttle_out))
{ {
cli_print(cli, "User %s already throttled, unthrottle first", argv[0]); cli_error(cli, "User %s already throttled, unthrottle first", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -1510,7 +1510,7 @@ static int cmd_throttle(struct cli_def *cli, char *command, char **argv, int arg
if (cli_session_actions[s].throttle_in == -1 && if (cli_session_actions[s].throttle_in == -1 &&
cli_session_actions[s].throttle_out == -1) cli_session_actions[s].throttle_out == -1)
{ {
cli_print(cli, "User %s already throttled at this rate", argv[0]); cli_error(cli, "User %s already throttled at this rate", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -1531,7 +1531,7 @@ static int cmd_no_throttle(struct cli_def *cli, char *command, char **argv, int
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -1539,7 +1539,7 @@ static int cmd_no_throttle(struct cli_def *cli, char *command, char **argv, int
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a user to unthrottle"); cli_error(cli, "Specify a user to unthrottle");
return CLI_OK; return CLI_OK;
} }
@ -1547,7 +1547,7 @@ static int cmd_no_throttle(struct cli_def *cli, char *command, char **argv, int
{ {
if (!(s = sessionbyuser(argv[i]))) if (!(s = sessionbyuser(argv[i])))
{ {
cli_print(cli, "User %s is not connected", argv[i]); cli_error(cli, "User %s is not connected", argv[i]);
continue; continue;
} }
@ -1558,7 +1558,7 @@ static int cmd_no_throttle(struct cli_def *cli, char *command, char **argv, int
} }
else else
{ {
cli_print(cli, "User %s not throttled", argv[i]); cli_error(cli, "User %s not throttled", argv[i]);
} }
} }
@ -1623,7 +1623,7 @@ static int cmd_debug(struct cli_def *cli, char *command, char **argv, int argc)
continue; continue;
} }
cli_print(cli, "Invalid debugging flag \"%s\"", argv[i]); cli_error(cli, "Invalid debugging flag \"%s\"", argv[i]);
} }
return CLI_OK; return CLI_OK;
@ -1669,7 +1669,7 @@ static int cmd_no_debug(struct cli_def *cli, char *command, char **argv, int arg
continue; continue;
} }
cli_print(cli, "Invalid debugging flag \"%s\"", argv[i]); cli_error(cli, "Invalid debugging flag \"%s\"", argv[i]);
} }
return CLI_OK; return CLI_OK;
@ -1685,7 +1685,7 @@ static int cmd_load_plugin(struct cli_def *cli, char *command, char **argv, int
if (argc != 1) if (argc != 1)
{ {
cli_print(cli, "Specify a plugin to load"); cli_error(cli, "Specify a plugin to load");
return CLI_OK; return CLI_OK;
} }
@ -1695,7 +1695,7 @@ static int cmd_load_plugin(struct cli_def *cli, char *command, char **argv, int
firstfree = i; firstfree = i;
if (strcmp(config->plugins[i], argv[0]) == 0) if (strcmp(config->plugins[i], argv[0]) == 0)
{ {
cli_print(cli, "Plugin is already loaded"); cli_error(cli, "Plugin is already loaded");
return CLI_OK; return CLI_OK;
} }
} }
@ -1720,7 +1720,7 @@ static int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, in
if (argc != 1) if (argc != 1)
{ {
cli_print(cli, "Specify a plugin to remove"); cli_error(cli, "Specify a plugin to remove");
return CLI_OK; return CLI_OK;
} }
@ -1734,7 +1734,7 @@ static int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, in
} }
} }
cli_print(cli, "Plugin is not loaded"); cli_error(cli, "Plugin is not loaded");
return CLI_OK; return CLI_OK;
} }
@ -1820,7 +1820,7 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
int len = strlen(argv[0])-1; int len = strlen(argv[0])-1;
for (i = 0; config_values[i].key; i++) for (i = 0; config_values[i].key; i++)
if (!len || !strncmp(config_values[i].key, argv[0], len)) if (!len || !strncmp(config_values[i].key, argv[0], len))
cli_print(cli, " %s", config_values[i].key); cli_error(cli, " %s", config_values[i].key);
} }
return CLI_OK; return CLI_OK;
@ -1840,7 +1840,7 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
if (argc != 2) if (argc != 2)
{ {
cli_print(cli, "Specify variable and value"); cli_error(cli, "Specify variable and value");
return CLI_OK; return CLI_OK;
} }
@ -1881,7 +1881,7 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
*(int *) value = 0; *(int *) value = 0;
break; break;
default: default:
cli_print(cli, "Unknown variable type"); cli_error(cli, "Unknown variable type");
break; break;
} }
config->reload_config = 1; config->reload_config = 1;
@ -1889,7 +1889,7 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
} }
} }
cli_print(cli, "Unknown variable \"%s\"", argv[0]); cli_error(cli, "Unknown variable \"%s\"", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -1922,7 +1922,7 @@ int regular_stuff(struct cli_def *cli)
if (!(p = strchr(m, '\n'))) if (!(p = strchr(m, '\n')))
p = m + strlen(p); p = m + strlen(p);
cli_print(cli, "\r%s-%u-%u %.*s", cli_error(cli, "\r%s-%u-%u %.*s",
debug_levels[(int)ringbuffer->buffer[i].level], debug_levels[(int)ringbuffer->buffer[i].level],
ringbuffer->buffer[i].tunnel, ringbuffer->buffer[i].tunnel,
ringbuffer->buffer[i].session, ringbuffer->buffer[i].session,
@ -1949,13 +1949,13 @@ static int cmd_router_bgp(struct cli_def *cli, char *command, char **argv, int a
if (argc != 1 || (as = atoi(argv[0])) < 1 || as > 65535) if (argc != 1 || (as = atoi(argv[0])) < 1 || as > 65535)
{ {
cli_print(cli, "Invalid autonomous system number"); cli_error(cli, "Invalid autonomous system number");
return CLI_OK; return CLI_OK;
} }
if (bgp_configured && as != config->as_number) if (bgp_configured && as != config->as_number)
{ {
cli_print(cli, "Can't change local AS on a running system"); cli_error(cli, "Can't change local AS on a running system");
return CLI_OK; return CLI_OK;
} }
@ -2049,19 +2049,19 @@ static int cmd_router_bgp_neighbour(struct cli_def *cli, char *command, char **a
if (argc < 3) if (argc < 3)
{ {
cli_print(cli, "Invalid arguments"); cli_error(cli, "Invalid arguments");
return CLI_OK; return CLI_OK;
} }
if ((i = find_bgp_neighbour(argv[0])) == -2) if ((i = find_bgp_neighbour(argv[0])) == -2)
{ {
cli_print(cli, "Invalid neighbour"); cli_error(cli, "Invalid neighbour");
return CLI_OK; return CLI_OK;
} }
if (i == -1) if (i == -1)
{ {
cli_print(cli, "Too many neighbours (max %d)", BGP_NUM_PEERS); cli_error(cli, "Too many neighbours (max %d)", BGP_NUM_PEERS);
return CLI_OK; return CLI_OK;
} }
@ -2070,7 +2070,7 @@ static int cmd_router_bgp_neighbour(struct cli_def *cli, char *command, char **a
int as = atoi(argv[2]); int as = atoi(argv[2]);
if (as < 0 || as > 65535) if (as < 0 || as > 65535)
{ {
cli_print(cli, "Invalid autonomous system number"); cli_error(cli, "Invalid autonomous system number");
return CLI_OK; return CLI_OK;
} }
@ -2087,13 +2087,13 @@ static int cmd_router_bgp_neighbour(struct cli_def *cli, char *command, char **a
if (argc != 4 || !MATCH("timers", argv[1])) if (argc != 4 || !MATCH("timers", argv[1]))
{ {
cli_print(cli, "Invalid arguments"); cli_error(cli, "Invalid arguments");
return CLI_OK; return CLI_OK;
} }
if (!config->neighbour[i].name[0]) if (!config->neighbour[i].name[0])
{ {
cli_print(cli, "Specify remote-as first"); cli_error(cli, "Specify remote-as first");
return CLI_OK; return CLI_OK;
} }
@ -2102,13 +2102,13 @@ static int cmd_router_bgp_neighbour(struct cli_def *cli, char *command, char **a
if (keepalive < 1 || keepalive > 65535) if (keepalive < 1 || keepalive > 65535)
{ {
cli_print(cli, "Invalid keepalive time"); cli_error(cli, "Invalid keepalive time");
return CLI_OK; return CLI_OK;
} }
if (hold < 3 || hold > 65535) if (hold < 3 || hold > 65535)
{ {
cli_print(cli, "Invalid hold time"); cli_error(cli, "Invalid hold time");
return CLI_OK; return CLI_OK;
} }
@ -2136,19 +2136,19 @@ static int cmd_router_bgp_no_neighbour(struct cli_def *cli, char *command, char
if (argc != 1) if (argc != 1)
{ {
cli_print(cli, "Specify a BGP neighbour"); cli_error(cli, "Specify a BGP neighbour");
return CLI_OK; return CLI_OK;
} }
if ((i = find_bgp_neighbour(argv[0])) == -2) if ((i = find_bgp_neighbour(argv[0])) == -2)
{ {
cli_print(cli, "Invalid neighbour"); cli_error(cli, "Invalid neighbour");
return CLI_OK; return CLI_OK;
} }
if (i < 0 || !config->neighbour[i].name[0]) if (i < 0 || !config->neighbour[i].name[0])
{ {
cli_print(cli, "Neighbour %s not configured", argv[0]); cli_error(cli, "Neighbour %s not configured", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -2351,7 +2351,7 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
if (argc != 2) if (argc != 2)
{ {
cli_print(cli, "Specify access-list type and name"); cli_error(cli, "Specify access-list type and name");
return CLI_OK; return CLI_OK;
} }
@ -2361,14 +2361,14 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
extended = 1; extended = 1;
else else
{ {
cli_print(cli, "Invalid access-list type"); cli_error(cli, "Invalid access-list type");
return CLI_OK; return CLI_OK;
} }
if (strlen(argv[1]) > sizeof(ip_filters[0].name) - 1 || if (strlen(argv[1]) > sizeof(ip_filters[0].name) - 1 ||
strspn(argv[1], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-") != strlen(argv[1])) strspn(argv[1], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-") != strlen(argv[1]))
{ {
cli_print(cli, "Invalid access-list name"); cli_error(cli, "Invalid access-list name");
return CLI_OK; return CLI_OK;
} }
@ -2377,7 +2377,7 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
{ {
if (filt < 0) if (filt < 0)
{ {
cli_print(cli, "Too many access-lists"); cli_error(cli, "Too many access-lists");
return CLI_OK; return CLI_OK;
} }
@ -2390,7 +2390,7 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
} }
else if (ip_filters[filt].extended != extended) else if (ip_filters[filt].extended != extended)
{ {
cli_print(cli, "Access-list is %s", cli_error(cli, "Access-list is %s",
ip_filters[filt].extended ? "extended" : "standard"); ip_filters[filt].extended ? "extended" : "standard");
return CLI_OK; return CLI_OK;
@ -2402,14 +2402,14 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
if (filt < 0 || !*ip_filters[filt].name) if (filt < 0 || !*ip_filters[filt].name)
{ {
cli_print(cli, "Access-list not defined"); cli_error(cli, "Access-list not defined");
return CLI_OK; return CLI_OK;
} }
// racy // racy
if (ip_filters[filt].used) if (ip_filters[filt].used)
{ {
cli_print(cli, "Access-list in use"); cli_error(cli, "Access-list in use");
return CLI_OK; return CLI_OK;
} }
@ -2535,7 +2535,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (argc < 3) if (argc < 3)
{ {
cli_print(cli, "Specify rule details"); cli_error(cli, "Specify rule details");
return NULL; return NULL;
} }
@ -2552,7 +2552,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
rule.proto = IPPROTO_TCP; rule.proto = IPPROTO_TCP;
else else
{ {
cli_print(cli, "Invalid protocol \"%s\"", argv[0]); cli_error(cli, "Invalid protocol \"%s\"", argv[0]);
return NULL; return NULL;
} }
@ -2575,7 +2575,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
port = &rule.dst_ports; port = &rule.dst_ports;
if (a >= argc) if (a >= argc)
{ {
cli_print(cli, "Specify destination"); cli_error(cli, "Specify destination");
return NULL; return NULL;
} }
} }
@ -2590,13 +2590,13 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
{ {
if (++a >= argc) if (++a >= argc)
{ {
cli_print(cli, "Specify host ip address"); cli_error(cli, "Specify host ip address");
return NULL; return NULL;
} }
if (!inet_aton(argv[a], &addr)) if (!inet_aton(argv[a], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[a]); cli_error(cli, "Cannot parse IP \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2608,13 +2608,13 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
{ {
if (a >= argc - 1) if (a >= argc - 1)
{ {
cli_print(cli, "Specify %s ip address and wildcard", i ? "destination" : "source"); cli_error(cli, "Specify %s ip address and wildcard", i ? "destination" : "source");
return NULL; return NULL;
} }
if (!inet_aton(argv[a], &addr)) if (!inet_aton(argv[a], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[a]); cli_error(cli, "Cannot parse IP \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2622,7 +2622,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (!inet_aton(argv[++a], &addr)) if (!inet_aton(argv[++a], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[a]); cli_error(cli, "Cannot parse IP \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2650,13 +2650,13 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (++a >= argc) if (++a >= argc)
{ {
cli_print(cli, "Specify port"); cli_error(cli, "Specify port");
return NULL; return NULL;
} }
if (!(port->port = atoi(argv[a]))) if (!(port->port = atoi(argv[a])))
{ {
cli_print(cli, "Invalid port \"%s\"", argv[a]); cli_error(cli, "Invalid port \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2666,13 +2666,13 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (a >= argc) if (a >= argc)
{ {
cli_print(cli, "Specify port"); cli_error(cli, "Specify port");
return NULL; return NULL;
} }
if (!(port->port2 = atoi(argv[a])) || port->port2 < port->port) if (!(port->port2 = atoi(argv[a])) || port->port2 < port->port)
{ {
cli_print(cli, "Invalid port \"%s\"", argv[a]); cli_error(cli, "Invalid port \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2695,7 +2695,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (++a >= argc) if (++a >= argc)
{ {
cli_print(cli, "Specify tcp flags"); cli_error(cli, "Specify tcp flags");
return NULL; return NULL;
} }
@ -2713,7 +2713,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
else if (MATCH("urg", &argv[a][1])) *f |= TCP_FLAG_URG; else if (MATCH("urg", &argv[a][1])) *f |= TCP_FLAG_URG;
else else
{ {
cli_print(cli, "Invalid tcp flag \"%s\"", argv[a]); cli_error(cli, "Invalid tcp flag \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2726,7 +2726,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
{ {
if (rule.src_ports.op || rule.dst_ports.op || rule.tcp_flag_op) if (rule.src_ports.op || rule.dst_ports.op || rule.tcp_flag_op)
{ {
cli_print(cli, "Can't specify \"fragments\" on rules with layer 4 matches"); cli_error(cli, "Can't specify \"fragments\" on rules with layer 4 matches");
return NULL; return NULL;
} }
@ -2736,7 +2736,7 @@ static ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command,
if (a < argc) if (a < argc)
{ {
cli_print(cli, "Invalid flag \"%s\"", argv[a]); cli_error(cli, "Invalid flag \"%s\"", argv[a]);
return NULL; return NULL;
} }
@ -2794,7 +2794,7 @@ static ip_filter_rulet *access_list_rule_std(struct cli_def *cli, char *command,
if (argc < 1) if (argc < 1)
{ {
cli_print(cli, "Specify rule details"); cli_error(cli, "Specify rule details");
return NULL; return NULL;
} }
@ -2813,13 +2813,13 @@ static ip_filter_rulet *access_list_rule_std(struct cli_def *cli, char *command,
{ {
if (argc != 2) if (argc != 2)
{ {
cli_print(cli, "Specify host ip address"); cli_error(cli, "Specify host ip address");
return NULL; return NULL;
} }
if (!inet_aton(argv[1], &addr)) if (!inet_aton(argv[1], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[1]); cli_error(cli, "Cannot parse IP \"%s\"", argv[1]);
return NULL; return NULL;
} }
@ -2830,13 +2830,13 @@ static ip_filter_rulet *access_list_rule_std(struct cli_def *cli, char *command,
{ {
if (argc > 2) if (argc > 2)
{ {
cli_print(cli, "Specify source ip address and wildcard"); cli_error(cli, "Specify source ip address and wildcard");
return NULL; return NULL;
} }
if (!inet_aton(argv[0], &addr)) if (!inet_aton(argv[0], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[0]); cli_error(cli, "Cannot parse IP \"%s\"", argv[0]);
return NULL; return NULL;
} }
@ -2846,7 +2846,7 @@ static ip_filter_rulet *access_list_rule_std(struct cli_def *cli, char *command,
{ {
if (!inet_aton(argv[1], &addr)) if (!inet_aton(argv[1], &addr))
{ {
cli_print(cli, "Cannot parse IP \"%s\"", argv[1]); cli_error(cli, "Cannot parse IP \"%s\"", argv[1]);
return NULL; return NULL;
} }
@ -2881,7 +2881,7 @@ static int cmd_ip_access_list_rule(struct cli_def *cli, char *command, char **ar
return CLI_OK; return CLI_OK;
} }
cli_print(cli, "Too many rules"); cli_error(cli, "Too many rules");
return CLI_OK; return CLI_OK;
} }
@ -2917,7 +2917,7 @@ static int cmd_filter(struct cli_def *cli, char *command, char **argv, int argc)
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -2925,13 +2925,13 @@ static int cmd_filter(struct cli_def *cli, char *command, char **argv, int argc)
if (argc != 3 && argc != 5) if (argc != 3 && argc != 5)
{ {
cli_print(cli, "Specify a user and filters"); cli_error(cli, "Specify a user and filters");
return CLI_OK; return CLI_OK;
} }
if (!(s = sessionbyuser(argv[0]))) if (!(s = sessionbyuser(argv[0])))
{ {
cli_print(cli, "User %s is not connected", argv[0]); cli_error(cli, "User %s is not connected", argv[0]);
return CLI_OK; return CLI_OK;
} }
@ -2945,7 +2945,7 @@ static int cmd_filter(struct cli_def *cli, char *command, char **argv, int argc)
{ {
if (session[s].filter_in) if (session[s].filter_in)
{ {
cli_print(cli, "Input already filtered"); cli_error(cli, "Input already filtered");
return CLI_OK; return CLI_OK;
} }
f = &cli_session_actions[s].filter_in; f = &cli_session_actions[s].filter_in;
@ -2954,21 +2954,21 @@ static int cmd_filter(struct cli_def *cli, char *command, char **argv, int argc)
{ {
if (session[s].filter_out) if (session[s].filter_out)
{ {
cli_print(cli, "Output already filtered"); cli_error(cli, "Output already filtered");
return CLI_OK; return CLI_OK;
} }
f = &cli_session_actions[s].filter_out; f = &cli_session_actions[s].filter_out;
} }
else else
{ {
cli_print(cli, "Invalid filter specification"); cli_error(cli, "Invalid filter specification");
return CLI_OK; return CLI_OK;
} }
v = find_access_list(argv[i+1]); v = find_access_list(argv[i+1]);
if (v < 0 || !*ip_filters[v].name) if (v < 0 || !*ip_filters[v].name)
{ {
cli_print(cli, "Access-list %s not defined", argv[i+1]); cli_error(cli, "Access-list %s not defined", argv[i+1]);
return CLI_OK; return CLI_OK;
} }
@ -2992,7 +2992,7 @@ static int cmd_no_filter(struct cli_def *cli, char *command, char **argv, int ar
if (!config->cluster_iam_master) if (!config->cluster_iam_master)
{ {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;
@ -3000,7 +3000,7 @@ static int cmd_no_filter(struct cli_def *cli, char *command, char **argv, int ar
if (!argc) if (!argc)
{ {
cli_print(cli, "Specify a user to remove filters from"); cli_error(cli, "Specify a user to remove filters from");
return CLI_OK; return CLI_OK;
} }
@ -3008,7 +3008,7 @@ static int cmd_no_filter(struct cli_def *cli, char *command, char **argv, int ar
{ {
if (!(s = sessionbyuser(argv[i]))) if (!(s = sessionbyuser(argv[i])))
{ {
cli_print(cli, "User %s is not connected", argv[i]); cli_error(cli, "User %s is not connected", argv[i]);
continue; continue;
} }
@ -3019,7 +3019,7 @@ static int cmd_no_filter(struct cli_def *cli, char *command, char **argv, int ar
} }
else else
{ {
cli_print(cli, "User %s not filtered", argv[i]); cli_error(cli, "User %s not filtered", argv[i]);
} }
} }
@ -3035,7 +3035,7 @@ static int cmd_show_access_list(struct cli_def *cli, char *command, char **argv,
if (argc < 1) if (argc < 1)
{ {
cli_print(cli, "Specify a filter name"); cli_error(cli, "Specify a filter name");
return CLI_OK; return CLI_OK;
} }
@ -3046,7 +3046,7 @@ static int cmd_show_access_list(struct cli_def *cli, char *command, char **argv,
if (f < 0 || !*ip_filters[f].name) if (f < 0 || !*ip_filters[f].name)
{ {
cli_print(cli, "Access-list %s not defined", argv[i]); cli_error(cli, "Access-list %s not defined", argv[i]);
return CLI_OK; return CLI_OK;
} }

View file

@ -8,8 +8,8 @@ Source: http://optusnet.dl.sourceforge.net/sourceforge/l2tpns/l2tpns-%{version}.
URL: http://sourceforge.net/projects/l2tpns URL: http://sourceforge.net/projects/l2tpns
BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRoot: %{_tmppath}/%{name}-%{version}-root
Prereq: /sbin/chkconfig Prereq: /sbin/chkconfig
BuildRequires: libcli >= 1.8.2 BuildRequires: libcli >= 1.8.5
Requires: libcli >= 1.8.2 Requires: libcli >= 1.8.5
%description %description
l2tpns is a layer 2 tunneling protocol network server (LNS). It l2tpns is a layer 2 tunneling protocol network server (LNS). It

4
tbf.c
View file

@ -1,6 +1,6 @@
// L2TPNS: token bucket filters // L2TPNS: token bucket filters
char const *cvs_id_tbf = "$Id: tbf.c,v 1.11 2004/12/16 08:49:53 bodea Exp $"; char const *cvs_id_tbf = "$Id: tbf.c,v 1.12 2005/05/02 09:55:04 bodea Exp $";
#include <string.h> #include <string.h>
#include "l2tpns.h" #include "l2tpns.h"
@ -318,7 +318,7 @@ int cmd_show_tbf(struct cli_def *cli, char *command, char **argv, int argc)
return CLI_HELP_NO_ARGS; return CLI_HELP_NO_ARGS;
if (!config->cluster_iam_master) { if (!config->cluster_iam_master) {
cli_print(cli, "Can't do this on a slave. Do it on %s", cli_error(cli, "Can't do this on a slave. Do it on %s",
fmtaddr(config->cluster_master_address, 0)); fmtaddr(config->cluster_master_address, 0));
return CLI_OK; return CLI_OK;