[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 1 Feb 2018 17:19:33 -0800
From: Stephen Hemminger <stephen@...workplumber.org>
To: dsahern@...il.com
Cc: netdev@...r.kernel.org, Stephen Hemminger <sthemmin@...rosoft.com>,
Stephen Hemminger <stephen@...workplumber.org>
Subject: [RFC iproute2-next 03/16] iproute: make printing IPv4 cache flags a function
More refactoring prior to JSON support.
Signed-off-by: Stephen Hemminger <stephen@...workplumber.org>
---
ip/iproute.c | 63 +++++++++++++++++++++++++++++++++++-------------------------
1 file changed, 37 insertions(+), 26 deletions(-)
diff --git a/ip/iproute.c b/ip/iproute.c
index 472e4135c5d9..d9c25c05966c 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -383,6 +383,41 @@ static void print_rt_pref(FILE *fp, unsigned int pref)
}
}
+static void print_ipv4_flags(FILE *fp, __u32 flags)
+{
+ int first = 1;
+
+ flags &= ~0xFFFF;
+
+ fprintf(fp, "%s cache ", _SL_);
+
+#define PRTFL(fl, flname) \
+ if (flags&RTCF_##fl) { \
+ flags &= ~RTCF_##fl; \
+ fprintf(fp, "%s" flname "%s", \
+ first ? "<" : "", flags ? "," : "> "); \
+ first = 0; }
+
+ PRTFL(LOCAL, "local");
+ PRTFL(REJECT, "reject");
+ PRTFL(MULTICAST, "mc");
+ PRTFL(BROADCAST, "brd");
+ PRTFL(DNAT, "dst-nat");
+ PRTFL(SNAT, "src-nat");
+ PRTFL(MASQ, "masq");
+ PRTFL(DIRECTDST, "dst-direct");
+ PRTFL(DIRECTSRC, "src-direct");
+ PRTFL(REDIRECTED, "redirected");
+ PRTFL(DOREDIRECT, "redirect");
+ PRTFL(FAST, "fastroute");
+ PRTFL(NOTIFY, "notify");
+ PRTFL(TPROXY, "proxy");
+#undef PRTFL
+
+ if (flags)
+ fprintf(fp, "%s%x> ", first ? "<" : "", flags);
+}
+
int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
{
FILE *fp = (FILE *)arg;
@@ -545,33 +580,9 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
if (tb[RTA_UID])
fprintf(fp, "uid %u ", rta_getattr_u32(tb[RTA_UID]));
- if ((r->rtm_flags&RTM_F_CLONED) && r->rtm_family == AF_INET) {
- __u32 flags = r->rtm_flags&~0xFFFF;
- int first = 1;
+ if ((r->rtm_flags & RTM_F_CLONED) && r->rtm_family == AF_INET) {
+ print_ipv4_flags(fp, r->rtm_flags);
- fprintf(fp, "%s cache ", _SL_);
-
-#define PRTFL(fl, flname) if (flags&RTCF_##fl) { \
- flags &= ~RTCF_##fl; \
- fprintf(fp, "%s" flname "%s", first ? "<" : "", flags ? "," : "> "); \
- first = 0; }
- PRTFL(LOCAL, "local");
- PRTFL(REJECT, "reject");
- PRTFL(MULTICAST, "mc");
- PRTFL(BROADCAST, "brd");
- PRTFL(DNAT, "dst-nat");
- PRTFL(SNAT, "src-nat");
- PRTFL(MASQ, "masq");
- PRTFL(DIRECTDST, "dst-direct");
- PRTFL(DIRECTSRC, "src-direct");
- PRTFL(REDIRECTED, "redirected");
- PRTFL(DOREDIRECT, "redirect");
- PRTFL(FAST, "fastroute");
- PRTFL(NOTIFY, "notify");
- PRTFL(TPROXY, "proxy");
-
- if (flags)
- fprintf(fp, "%s%x> ", first ? "<" : "", flags);
if (tb[RTA_CACHEINFO]) {
struct rta_cacheinfo *ci = RTA_DATA(tb[RTA_CACHEINFO]);
--
2.15.1
Powered by blists - more mailing lists