[PATCH iproute2-next v2 2/3] gre/gre6: Unify gre_print_help()
From: Serhey Popovych <hidden>
Date: 2018-02-09 06:45:26
Subsystem:
the rest · Maintainer:
Linus Torvalds
Reduce diff lines between gre and gre6 help printing code. Use @struct link_util ->id field to print correct link help: all callers now pass this data structure to gre_print_help(). Get rid of custom print_usage() and usage() functions and use gre_print_help() directly, return from function on "... type <help|garbage>" instead of exit(2). Signed-off-by: Serhey Popovych <redacted> --- ip/link_gre.c | 73 +++++++++++++++++++++++++------------------------------ ip/link_gre6.c | 74 ++++++++++++++++++++++++++------------------------------ 2 files changed, 67 insertions(+), 80 deletions(-)
diff --git a/ip/link_gre.c b/ip/link_gre.c
index b2573a1..e972a10 100644
--- a/ip/link_gre.c
+++ b/ip/link_gre.c@@ -23,34 +23,38 @@ #include "ip_common.h" #include "tunnel.h" -static void print_usage(FILE *f) +static void gre_print_help(struct link_util *lu, int argc, char **argv, FILE *f) { fprintf(f, - "Usage: ... { gre | gretap | erspan } [ remote ADDR ]\n" - " [ local ADDR ]\n" - " [ [i|o]seq ]\n" - " [ [i|o]key KEY ]\n" - " [ [i|o]csum ]\n" - " [ ttl TTL ]\n" - " [ tos TOS ]\n" - " [ [no]pmtudisc ]\n" - " [ [no]ignore-df ]\n" - " [ dev PHYS_DEV ]\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" - " [ external ]\n" - " [ fwmark MARK ]\n" - " [ erspan_ver version ]\n" - " [ erspan IDX ]\n" - " [ erspan_dir { ingress | egress } ]\n" - " [ erspan_hwid hwid ]\n" - " [ external ]\n" + "Usage: ... %-9s [ remote ADDR ]\n", + lu->id + ); + fprintf(f, + " [ local ADDR ]\n" + " [ [i|o]seq ]\n" + " [ [i|o]key KEY ]\n" + " [ [i|o]csum ]\n" + " [ ttl TTL ]\n" + " [ tos TOS ]\n" + " [ [no]pmtudisc ]\n" + " [ [no]ignore-df ]\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" + " [ erspan_ver version ]\n" + " [ erspan IDX ]\n" + " [ erspan_dir { ingress | egress } ]\n" + " [ erspan_hwid hwid ]\n" "\n" + ); + fprintf(f, "Where: ADDR := { IP_ADDRESS | any }\n" " TOS := { NUMBER | inherit }\n" " TTL := { 1..255 | inherit }\n"
@@ -59,13 +63,6 @@ static void print_usage(FILE *f) ); } -static void usage(void) __attribute__((noreturn)); -static void usage(void) -{ - print_usage(stderr); - exit(-1); -} - static int gre_parse_opt(struct link_util *lu, int argc, char **argv, struct nlmsghdr *n) {
@@ -336,8 +333,10 @@ get_failed: NEXT_ARG(); if (get_u16(&erspan_hwid, *argv, 0)) invarg("invalid erspan hwid\n", *argv); - } else - usage(); + } else { + gre_print_help(lu, argc, argv, stderr); + return -1; + } argc--; argv++; }
@@ -517,12 +516,6 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) IFLA_GRE_ENCAP_DPORT); } -static void gre_print_help(struct link_util *lu, int argc, char **argv, - FILE *f) -{ - print_usage(f); -} - struct link_util gre_link_util = { .id = "gre", .maxattr = IFLA_GRE_MAX,
diff --git a/ip/link_gre6.c b/ip/link_gre6.c
index 880b75d..1354f88 100644
--- a/ip/link_gre6.c
+++ b/ip/link_gre6.c@@ -30,34 +30,39 @@ #define DEFAULT_TNL_HOP_LIMIT (64) -static void print_usage(FILE *f) +static void gre_print_help(struct link_util *lu, int argc, char **argv, FILE *f) { fprintf(f, - "Usage: ... { ip6gre | ip6gretap | ip6erspan} [ remote ADDR ]\n" - " [ local ADDR ]\n" - " [ [i|o]seq ]\n" - " [ [i|o]key KEY ]\n" - " [ [i|o]csum ]\n" - " [ hoplimit TTL ]\n" - " [ encaplimit ELIM ]\n" - " [ tclass TCLASS ]\n" - " [ flowlabel FLOWLABEL ]\n" - " [ dscp inherit ]\n" - " [ fwmark MARK ]\n" - " [ dev PHYS_DEV ]\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" - " [ erspan_ver version ]\n" - " [ erspan IDX ]\n" - " [ erspan_dir { ingress | egress } ]\n" - " [ erspan_hwid hwid ]\n" - " [ external ]\n" + "Usage: ... %-9s [ remote ADDR ]\n", + lu->id + ); + fprintf(f, + " [ local ADDR ]\n" + " [ [i|o]seq ]\n" + " [ [i|o]key KEY ]\n" + " [ [i|o]csum ]\n" + " [ hoplimit TTL ]\n" + " [ encaplimit ELIM ]\n" + " [ tclass TCLASS ]\n" + " [ flowlabel FLOWLABEL ]\n" + " [ dscp inherit ]\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" + " [ erspan_ver version ]\n" + " [ erspan IDX ]\n" + " [ erspan_dir { ingress | egress } ]\n" + " [ erspan_hwid hwid ]\n" "\n" + ); + fprintf(f, "Where: ADDR := IPV6_ADDRESS\n" " TTL := { 0..255 } (default=%d)\n" " KEY := { DOTTED_QUAD | NUMBER }\n"
@@ -69,13 +74,6 @@ static void print_usage(FILE *f) ); } -static void usage(void) __attribute__((noreturn)); -static void usage(void) -{ - print_usage(stderr); - exit(-1); -} - static int gre_parse_opt(struct link_util *lu, int argc, char **argv, struct nlmsghdr *n) {
@@ -384,8 +382,10 @@ get_failed: NEXT_ARG(); if (get_u16(&erspan_hwid, *argv, 0)) invarg("invalid erspan hwid\n", *argv); - } else - usage(); + } else { + gre_print_help(lu, argc, argv, stderr); + return -1; + } argc--; argv++; }
@@ -584,12 +584,6 @@ static void gre_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) IFLA_GRE_ENCAP_DPORT); } -static void gre_print_help(struct link_util *lu, int argc, char **argv, - FILE *f) -{ - print_usage(f); -} - struct link_util ip6gre_link_util = { .id = "ip6gre", .maxattr = IFLA_GRE_MAX,
--
1.7.10.4