#define DEFAULT_TNL_HOP_LIMIT (64)
-static void print_usage(FILE *f)
+static void ip6tunnel_print_help(struct link_util *lu, int argc, char **argv,
+ FILE *f)
{
+ const char *mode;
+
+ fprintf(f,
+ "Usage: ... %-6s [ remote ADDR ]\n",
+ lu->id
+ );
fprintf(f,
- "Usage: ... ip6tnl [ mode { ip6ip6 | ipip6 | any } ]\n"
- " [ remote ADDR ]\n"
" [ local ADDR ]\n"
- " [ dev PHYS_DEV ]\n"
" [ encaplimit ELIM ]\n"
" [ hoplimit HLIM ]\n"
" [ tclass TCLASS ]\n"
" [ flowlabel FLOWLABEL ]\n"
" [ dscp inherit ]\n"
- " [ fwmark MARK ]\n"
" [ [no]allow-localremote ]\n"
+ " [ dev PHYS_DEV ]\n"
+ " [ fwmark MARK ]\n"
+ " [ external ]\n"
" [ noencap ]\n"
" [ encap { fou | gue | none } ]\n"
" [ encap-sport PORT ]\n"
" [ [no]encap-csum ]\n"
" [ [no]encap-csum6 ]\n"
" [ [no]encap-remcsum ]\n"
- " [ external ]\n"
- "\n"
+ );
+ mode = "{ ip6ip6 | ipip6 | any }";
+ fprintf(f,
+ " [ mode %s ]\n"
+ "\n",
+ mode
+ );
+ fprintf(f,
"Where: ADDR := IPV6_ADDRESS\n"
" ELIM := { none | 0..255 }(default=%d)\n"
" HLIM := 0..255 (default=%d)\n"
);
}
-static void usage(void) __attribute__((noreturn));
-static void usage(void)
-{
- print_usage(stderr);
- exit(-1);
-}
-
static int ip6tunnel_parse_opt(struct link_util *lu, int argc, char **argv,
struct nlmsghdr *n)
{
encapflags &= ~TUNNEL_ENCAP_FLAG_REMCSUM;
} else if (strcmp(*argv, "external") == 0) {
metadata = 1;
- } else
- usage();
+ } else {
+ ip6tunnel_print_help(lu, argc, argv, stderr);
+ return -1;
+ }
argc--, argv++;
}
IFLA_IPTUN_ENCAP_DPORT);
}
-static void ip6tunnel_print_help(struct link_util *lu, int argc, char **argv,
- FILE *f)
-{
- print_usage(f);
-}
-
struct link_util ip6tnl_link_util = {
.id = "ip6tnl",
.maxattr = IFLA_IPTUN_MAX,
#include "ip_common.h"
#include "tunnel.h"
-static void print_usage(FILE *f, int sit)
+static void iptunnel_print_help(struct link_util *lu, int argc, char **argv,
+ FILE *f)
{
- const char *type = sit ? "sit " : "ipip";
+ const char *mode;
fprintf(f,
- "Usage: ... %s [ remote ADDR ]\n"
- " [ local ADDR ]\n"
- " [ ttl TTL ]\n"
- " [ tos TOS ]\n"
- " [ [no]pmtudisc ]\n"
- " [ dev PHYS_DEV ]\n"
- " [ 6rd-prefix ADDR ]\n"
- " [ 6rd-relay_prefix ADDR ]\n"
- " [ 6rd-reset ]\n"
- " [ noencap ]\n"
- " [ encap { fou | gue | none } ]\n"
- " [ encap-sport PORT ]\n"
- " [ encap-dport PORT ]\n"
- " [ [no]encap-csum ]\n"
- " [ [no]encap-csum6 ]\n"
- " [ [no]encap-remcsum ]\n",
- type
+ "Usage: ... %-6s [ remote ADDR ]\n",
+ lu->id
+ );
+ fprintf(f,
+ " [ local ADDR ]\n"
+ " [ ttl TTL ]\n"
+ " [ tos TOS ]\n"
+ " [ [no]pmtudisc ]\n"
+ " [ 6rd-prefix ADDR ]\n"
+ " [ 6rd-relay_prefix ADDR ]\n"
+ " [ 6rd-reset ]\n"
+ " [ dev PHYS_DEV ]\n"
+ " [ fwmark MARK ]\n"
+ " [ external ]\n"
+ " [ noencap ]\n"
+ " [ encap { fou | gue | none } ]\n"
+ " [ encap-sport PORT ]\n"
+ " [ encap-dport PORT ]\n"
+ " [ [no]encap-csum ]\n"
+ " [ [no]encap-csum6 ]\n"
+ " [ [no]encap-remcsum ]\n"
);
- if (sit) {
- fprintf(f, " [ mode { ip6ip | ipip | mplsip | any } ]\n");
- fprintf(f, " [ isatap ]\n");
+ if (strcmp(lu->id, "sit") == 0) {
+ mode = "{ ip6ip | ipip | mplsip | any } ]\n"
+ " [ isatap";
} else {
- fprintf(f, " [ mode { ipip | mplsip | any } ]\n");
+ mode = "{ ipip | mplsip | any }";
}
- fprintf(f, " [ external ]\n");
- fprintf(f, " [ fwmark MARK ]\n");
- fprintf(f, "\n");
- fprintf(f, "Where: ADDR := { IP_ADDRESS | any }\n");
- fprintf(f, " TOS := { NUMBER | inherit }\n");
- fprintf(f, " TTL := { 1..255 | inherit }\n");
- fprintf(f, " MARK := { 0x0..0xffffffff }\n");
-}
-
-static void usage(int sit) __attribute__((noreturn));
-static void usage(int sit)
-{
- print_usage(stderr, sit);
- exit(-1);
+ fprintf(f,
+ " [ mode %s ]\n"
+ "\n",
+ mode
+ );
+ fprintf(f,
+ "Where: ADDR := { IP_ADDRESS | any }\n"
+ " TOS := { NUMBER | inherit }\n"
+ " TTL := { 1..255 | inherit }\n"
+ " MARK := { 0x0..0xffffffff }\n"
+ );
}
static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv,
NEXT_ARG();
if (get_u32(&fwmark, *argv, 0))
invarg("invalid fwmark\n", *argv);
- } else
- usage(strcmp(lu->id, "sit") == 0);
+ } else {
+ iptunnel_print_help(lu, argc, argv, stderr);
+ return -1;
+ }
argc--, argv++;
}
IFLA_IPTUN_ENCAP_DPORT);
}
-static void iptunnel_print_help(struct link_util *lu, int argc, char **argv,
- FILE *f)
-{
- print_usage(f, strcmp(lu->id, "sit") == 0);
-}
-
struct link_util ipip_link_util = {
.id = "ipip",
.maxattr = IFLA_IPTUN_MAX,