From: Adam Osuchowski Date: Mon, 19 Feb 2018 14:53:43 +0000 (+0100) Subject: - add `ip fou show' command X-Git-Tag: auto/th/iproute2-4.14.1-2 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=commitdiff_plain;h=d888f7188def497ce667be928f3f69b5d3e985f5;p=packages%2Fiproute2.git - add `ip fou show' command --- diff --git a/iproute2-fou_show.patch b/iproute2-fou_show.patch new file mode 100644 index 0000000..f053a01 --- /dev/null +++ b/iproute2-fou_show.patch @@ -0,0 +1,97 @@ +diff -ruNp iproute2-4.14.1.orig/ip/ipfou.c iproute2-4.14.1/ip/ipfou.c +--- iproute2-4.14.1.orig/ip/ipfou.c 2017-11-13 19:09:57.000000000 +0100 ++++ iproute2-4.14.1/ip/ipfou.c 2018-02-19 15:49:27.105945493 +0100 +@@ -28,6 +28,7 @@ static void usage(void) + fprintf(stderr, "Usage: ip fou add port PORT " + "{ ipproto PROTO | gue } [ -6 ]\n"); + fprintf(stderr, " ip fou del port PORT [ -6 ]\n"); ++ fprintf(stderr, " ip fou show\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Where: PROTO { ipproto-name | 1..255 }\n"); + fprintf(stderr, " PORT { 1..65535 }\n"); +@@ -134,6 +135,63 @@ static int do_del(int argc, char **argv) + return 0; + } + ++static int print_fou_mapping(const struct sockaddr_nl *who, ++ struct nlmsghdr *n, void *arg) ++{ ++ FILE *fp = (FILE *)arg; ++ struct genlmsghdr *ghdr; ++ struct rtattr *tb[FOU_ATTR_MAX + 1]; ++ int len = n->nlmsg_len; ++ unsigned family; ++ ++ if (n->nlmsg_type != genl_family) ++ return 0; ++ ++ len -= NLMSG_LENGTH(GENL_HDRLEN); ++ if (len < 0) ++ return -1; ++ ++ ghdr = NLMSG_DATA(n); ++ parse_rtattr(tb, FOU_ATTR_MAX, (void *) ghdr + GENL_HDRLEN, len); ++ ++ if (tb[FOU_ATTR_PORT]) ++ fprintf(fp, "port %u", ntohs(rta_getattr_u16(tb[FOU_ATTR_PORT]))); ++ if (tb[FOU_ATTR_TYPE] && rta_getattr_u8(tb[FOU_ATTR_TYPE]) == FOU_ENCAP_GUE) ++ fprintf(fp, " gue"); ++ else if (tb[FOU_ATTR_IPPROTO]) ++ fprintf(fp, " ipproto %u", rta_getattr_u8(tb[FOU_ATTR_IPPROTO])); ++ if (tb[FOU_ATTR_AF]) { ++ family = rta_getattr_u8(tb[FOU_ATTR_AF]); ++ if (family == AF_INET6) ++ fprintf(fp, " -6"); ++ } ++ fprintf(fp, "\n"); ++ ++ return 0; ++} ++ ++static int do_show(int argc, char **argv) ++{ ++ FOU_REQUEST(req, 4096, FOU_CMD_GET, NLM_F_REQUEST | NLM_F_DUMP); ++ ++ if (argc > 0) { ++ fprintf(stderr, "\"ip fou show\" does not take any arguments.\n"); ++ return -1; ++ } ++ ++ if (rtnl_send(&genl_rth, &req.n, req.n.nlmsg_len) < 0) { ++ perror("Cannot send show request"); ++ exit(1); ++ } ++ ++ if (rtnl_dump_filter(&genl_rth, print_fou_mapping, stdout) < 0) { ++ fprintf(stderr, "Dump terminated\n"); ++ return 1; ++ } ++ ++ return 0; ++} ++ + int do_ipfou(int argc, char **argv) + { + if (argc < 1) +@@ -149,6 +207,8 @@ int do_ipfou(int argc, char **argv) + return do_add(argc-1, argv+1); + if (matches(*argv, "delete") == 0) + return do_del(argc-1, argv+1); ++ if (matches(*argv, "show") == 0) ++ return do_show(argc-1, argv+1); + fprintf(stderr, "Command \"%s\" is unknown, try \"ip fou help\".\n", *argv); + exit(-1); + } +diff -ruNp iproute2-4.14.1.orig/man/man8/ip-fou.8 iproute2-4.14.1/man/man8/ip-fou.8 +--- iproute2-4.14.1.orig/man/man8/ip-fou.8 2017-11-13 19:09:57.000000000 +0100 ++++ iproute2-4.14.1/man/man8/ip-fou.8 2018-02-19 15:49:23.558962613 +0100 +@@ -29,6 +29,9 @@ ip-gue \- Generic UDP Encapsulation rece + .BR "ip fou del" + .B port + .IR PORT ++.br ++.ti -8 ++.B ip fou show + .SH DESCRIPTION + The + .B ip fou diff --git a/iproute2.spec b/iproute2.spec index 8cd9aab..44ab698 100644 --- a/iproute2.spec +++ b/iproute2.spec @@ -15,7 +15,7 @@ Summary(pl.UTF-8): Narzędzie do konfigurowania sieci Summary(pt_BR.UTF-8): Ferramentas para roteamento avançado e configuração de interfaces de rede Name: iproute2 Version: 4.14.1 -Release: 1 +Release: 2 License: GPL v2+ Group: Networking/Admin Source0: https://www.kernel.org/pub/linux/utils/net/iproute2/%{name}-%{version}.tar.xz @@ -34,6 +34,7 @@ Patch12: 001-net-dev-iface-descr-0.1.diff Patch13: %{name}-q_atm_c.patch Patch14: %{name}-q_srr.v0.4.patch Patch15: %{name}-ip_route_get.patch +Patch16: %{name}-fou_show.patch URL: http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 BuildRequires: bison BuildRequires: db-devel @@ -137,6 +138,7 @@ Bashowe dopełnianie parametrów poleceń iproute2 (obecnie tylko tc). %patch13 -p0 %patch14 -p1 %patch15 -p1 +%patch16 -p1 %build %{__make} \