"\t\tExample ACTNAME is gact, mirred etc\n"
"\t\tEach action has its own parameters (ACTPARAMS)\n"
"\n");
+ exit(-1);
}
static int print_noaopt(struct action_util *au, FILE *f, struct rtattr *opt)
#ifdef CONFIG_GACT_PROB
fprintf(stderr, "Usage: ... gact <ACTION> [RAND] [INDEX]\n");
fprintf(stderr,
- "Where: ACTION := reclassify | drop | continue | pass "
- "RAND := random <RANDTYPE> <ACTION> <VAL>"
- "RANDTYPE := netrand | determ"
- "VAL : = value not exceeding 10000"
- "INDEX := index value used"
+ "Where: \tACTION := reclassify | drop | continue | pass \n"
+ "\tRAND := random <RANDTYPE> <ACTION> <VAL>\n"
+ "\tRANDTYPE := netrand | determ\n"
+ "\tVAL : = value not exceeding 10000\n"
+ "\tINDEX := index value used\n"
"\n");
#else
fprintf(stderr, "Usage: ... gact <ACTION> [INDEX]\n");
fprintf(stderr,
- "Where: ACTION := reclassify | drop | continue | pass "
- "INDEX := index value used"
+ "Where: \tACTION := reclassify | drop | continue | pass \n"
+ "\tINDEX := index value used\n"
"\n");
#endif
}
-#define usage() return(-1)
+static void
+usage(void)
+{
+ explain();
+ exit(-1);
+}
+
int
get_act(char ***argv_p)
}
argc--;
argv++;
+ } else if (matches(*argv, "help") == 0) {
+ usage();
}
}
#endif
{
fprintf(stderr, "Usage: mirred <DIRECTION> <ACTION> [index INDEX] <dev DEVICENAME> \n");
fprintf(stderr, "where: \n");
- fprintf(stderr, "DIRECTION := <ingress | egress>\n");
- fprintf(stderr, "aCTION := <mirror | redirect>\n");
- fprintf(stderr, " : INDEX is the specific policy instance id\n");
- fprintf(stderr, " : DEVICENAME is the devicename \n");
+ fprintf(stderr, "\tDIRECTION := <ingress | egress>\n");
+ fprintf(stderr, "\tACTION := <mirror | redirect>\n");
+ fprintf(stderr, "\tINDEX is the specific policy instance id\n");
+ fprintf(stderr, "\tDEVICENAME is the devicename \n");
+
}
-#define usage() return(-1)
+static void
+usage(void)
+{
+ explain();
+ exit(-1);
+}
char *mirred_n2a(int action)
{
}
if (!ok && !iok) {
- explain();
return -1;
}
} else if (matches(*argv, "ingress") == 0) {
fprintf(stderr,"mirred ingress not supported at the moment\n");
-
+ } else if (matches(*argv, "help") == 0) {
+ usage();
} else {
- fprintf(stderr,"mirred not supported %s\n", *argv);
+ fprintf(stderr,"mirred option not supported %s\n", *argv);
}
return -1;
int pedit_debug = 1;
static void
-p_explain(void)
+explain(void)
{
- fprintf(stderr, "Usage: ... pedit <MUNGE>\n");
+ fprintf(stderr, "Usage: ... pedit munge <MUNGE>\n");
fprintf(stderr,
"Where: MUNGE := <RAW>|<LAYERED>\n"
- "<RAW>:= <OFFSETC>[ATC]<CMD>\n "
- "OFFSETC:= offset <offval> <u8|u16|u32>\n "
- "ATC:= at <atval> offmask <maskval> shift <shiftval>\n "
- "NOTE: offval is byte offset, must be multiple of 4\n "
- "NOTE: maskval is a 32 bit hex number\n "
- "NOTE: shiftval is a is a shift value\n "
- "CMD:= clear | invert | set <setval>| retain\n "
- "<LAYERED>:= ip <ipdata> | ip6 <ip6data> \n "
- " | udp <udpdata> | tcp <tcpdata> | icmp <icmpdata> \n"
- "For Example usage look at the examples directory");
+ "\t<RAW>:= <OFFSETC>[ATC]<CMD>\n "
+ "\t\tOFFSETC:= offset <offval> <u8|u16|u32>\n "
+ "\t\tATC:= at <atval> offmask <maskval> shift <shiftval>\n "
+ "\t\tNOTE: offval is byte offset, must be multiple of 4\n "
+ "\t\tNOTE: maskval is a 32 bit hex number\n "
+ "\t\tNOTE: shiftval is a is a shift value\n "
+ "\t\tCMD:= clear | invert | set <setval>| retain\n "
+ "\t<LAYERED>:= ip <ipdata> | ip6 <ip6data> \n "
+ " \t\t| udp <udpdata> | tcp <tcpdata> | icmp <icmpdata> \n"
+ "For Example usage look at the examples directory\n");
}
-#define usage() return(-1)
+static void
+usage(void)
+{
+ explain();
+ exit(-1);
+}
static int
pedit_parse_nopopt (int *argc_p, char ***argv_p,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey)
NEXT_ARG();
res = parse_offset(&argc, &argv,sel,&tkey);
goto done;
-#if jamal
- } else if (strcmp(*argv, "help") == 0) {
- p_explain();
- return -1;
-#endif
} else {
char k[16];
struct m_pedit_util *p = NULL;
NEXT_ARG();
ok++;
continue;
+ } else if (matches(*argv, "help") == 0) {
+ usage();
} else if (matches(*argv, "munge") == 0) {
if (!ok) {
fprintf(stderr, "Illegal pedit construct (%s) \n", *argv);
- p_explain();
+ explain();
return -1;
}
NEXT_ARG();
if (parse_munge(&argc, &argv,&sel.sel)) {
fprintf(stderr, "Illegal pedit construct (%s) \n", *argv);
- p_explain();
+ explain();
return -1;
}
ok++;
}
if (!ok) {
- p_explain();
+ explain();
return -1;
}
.print_aopt = print_police,
};
-static void explain(void)
+static void usage(void)
{
fprintf(stderr, "Usage: ... police rate BPS burst BYTES[/BYTES] [ mtu BYTES[/BYTES] ]\n");
fprintf(stderr, " [ peakrate BPS ] [ avrate BPS ]\n");
fprintf(stderr, "New Syntax ACTIONTERM := conform-exceed <EXCEEDACT>[/NOTEXCEEDACT] \n");
fprintf(stderr, "Where: *EXCEEDACT := pipe | ok | reclassify | drop | continue \n");
fprintf(stderr, "Where: pipe is only valid for new syntax \n");
+ exit(-1);
}
static void explain1(char *arg)
fprintf(stderr, "Illegal \"%s\"\n", arg);
}
-#define usage() return(-1)
-
-
char *police_action_n2a(int action, char *buf, int len)
{
switch (action) {
return -1;
}
} else if (strcmp(*argv, "help") == 0) {
- explain();
- return -1;
+ usage();
} else {
break;
}