]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
lib/utils: introduce format_host_rta()
authorPhil Sutter <phil@nwl.cc>
Tue, 22 Mar 2016 18:35:17 +0000 (19:35 +0100)
committerStephen Hemminger <stephen@networkplumber.org>
Sun, 27 Mar 2016 17:37:35 +0000 (10:37 -0700)
This simple macro eases calling format_host() with data from an rt_attr
pointer.

Signed-off-by: Phil Sutter <phil@nwl.cc>
include/utils.h
ip/ipaddress.c
ip/ipaddrlabel.c
ip/ipneigh.c
ip/iproute.c
ip/iproute_lwtunnel.c
ip/iprule.c
ip/iptoken.c

index bc2cbce0cc3033360b4ee55df7075f2b2c8dfb76..ebb80c9c20b6d0d832c0a6fa97519329642edb36 100644 (file)
@@ -125,6 +125,8 @@ int af_byte_len(int af);
 const char *format_host_r(int af, int len, const void *addr,
                               char *buf, int buflen);
 const char *format_host(int af, int lne, const void *addr);
+#define format_host_rta(af, rta) \
+       format_host(af, RTA_PAYLOAD(rta), RTA_DATA(rta))
 const char *rt_addr_n2a_r(int af, int len, const void *addr,
                               char *buf, int buflen);
 const char *rt_addr_n2a(int af, int len, const void *addr);
index 03c8c03cd4a17502dd282e5335c9fd5f18d8c489..3998d8cec4ab24d056d824900cdfd58c0e607dbe 100644 (file)
@@ -1058,18 +1058,16 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
 
        if (rta_tb[IFA_LOCAL]) {
                color_fprintf(fp, ifa_family_color(ifa->ifa_family), "%s",
-                             format_host(ifa->ifa_family,
-                                         RTA_PAYLOAD(rta_tb[IFA_LOCAL]),
-                                         RTA_DATA(rta_tb[IFA_LOCAL])));
+                             format_host_rta(ifa->ifa_family,
+                                             rta_tb[IFA_LOCAL]));
                if (rta_tb[IFA_ADDRESS] &&
                    memcmp(RTA_DATA(rta_tb[IFA_ADDRESS]),
                           RTA_DATA(rta_tb[IFA_LOCAL]),
                           ifa->ifa_family == AF_INET ? 4 : 16)) {
                        fprintf(fp, " peer ");
                        color_fprintf(fp, ifa_family_color(ifa->ifa_family),
-                                     "%s", format_host(ifa->ifa_family,
-                                     RTA_PAYLOAD(rta_tb[IFA_ADDRESS]),
-                                     RTA_DATA(rta_tb[IFA_ADDRESS])));
+                                     "%s", format_host_rta(ifa->ifa_family,
+                                     rta_tb[IFA_ADDRESS]));
                }
                fprintf(fp, "/%d ", ifa->ifa_prefixlen);
        }
@@ -1080,16 +1078,14 @@ int print_addrinfo(const struct sockaddr_nl *who, struct nlmsghdr *n,
        if (rta_tb[IFA_BROADCAST]) {
                fprintf(fp, "brd ");
                color_fprintf(fp, ifa_family_color(ifa->ifa_family), "%s ",
-                       format_host(ifa->ifa_family,
-                                   RTA_PAYLOAD(rta_tb[IFA_BROADCAST]),
-                                   RTA_DATA(rta_tb[IFA_BROADCAST])));
+                             format_host_rta(ifa->ifa_family,
+                                             rta_tb[IFA_BROADCAST]));
        }
        if (rta_tb[IFA_ANYCAST]) {
                fprintf(fp, "any ");
                color_fprintf(fp, ifa_family_color(ifa->ifa_family), "%s ",
-                       format_host(ifa->ifa_family,
-                                   RTA_PAYLOAD(rta_tb[IFA_ANYCAST]),
-                                   RTA_DATA(rta_tb[IFA_ANYCAST])));
+                             format_host_rta(ifa->ifa_family,
+                                             rta_tb[IFA_ANYCAST]));
        }
        fprintf(fp, "scope %s ", rtnl_rtscope_n2a(ifa->ifa_scope, b1, sizeof(b1)));
        if (ifa_flags & IFA_F_SECONDARY) {
index 6076bb952297f7a8d56d063870ba9f0cd374d44c..b4cd78409471989056ae5f30e069c7f8159b9f48 100644 (file)
@@ -75,9 +75,8 @@ int print_addrlabel(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg
 
        if (tb[IFAL_ADDRESS]) {
                fprintf(fp, "prefix %s/%u ",
-                       format_host(ifal->ifal_family,
-                                   RTA_PAYLOAD(tb[IFAL_ADDRESS]),
-                                   RTA_DATA(tb[IFAL_ADDRESS])),
+                       format_host_rta(ifal->ifal_family,
+                                       tb[IFAL_ADDRESS]),
                        ifal->ifal_prefixlen);
        }
 
index 583aad30dc820627fa464b6f4f76a1d3b5750ae7..c49fb4e7f7b586964f975a73a1a4bc85caf9cf86 100644 (file)
@@ -278,9 +278,7 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                fprintf(fp, "miss ");
        if (tb[NDA_DST]) {
                fprintf(fp, "%s ",
-                       format_host(r->ndm_family,
-                                   RTA_PAYLOAD(tb[NDA_DST]),
-                                   RTA_DATA(tb[NDA_DST])));
+                       format_host_rta(r->ndm_family, tb[NDA_DST]));
        }
        if (!filter.index && r->ndm_ifindex)
                fprintf(fp, "dev %s ", ll_index_to_name(r->ndm_ifindex));
index 1ec9294290b2a69540e88709527acb04d82d3269..67d551b54d00cba3d3971e8b408edfbdb931b0a8 100644 (file)
@@ -376,10 +376,8 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                                r->rtm_dst_len
                                );
                } else {
-                       fprintf(fp, "%s ", format_host(r->rtm_family,
-                                                      RTA_PAYLOAD(tb[RTA_DST]),
-                                                      RTA_DATA(tb[RTA_DST]))
-                               );
+                       fprintf(fp, "%s ",
+                               format_host_rta(r->rtm_family, tb[RTA_DST]));
                }
        } else if (r->rtm_dst_len) {
                fprintf(fp, "0/%d ", r->rtm_dst_len);
@@ -394,19 +392,15 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                                r->rtm_src_len
                                );
                } else {
-                       fprintf(fp, "from %s ", format_host(r->rtm_family,
-                                                      RTA_PAYLOAD(tb[RTA_SRC]),
-                                                      RTA_DATA(tb[RTA_SRC]))
-                               );
+                       fprintf(fp, "from %s ",
+                               format_host_rta(r->rtm_family, tb[RTA_SRC]));
                }
        } else if (r->rtm_src_len) {
                fprintf(fp, "from 0/%u ", r->rtm_src_len);
        }
        if (tb[RTA_NEWDST]) {
-               fprintf(fp, "as to %s ", format_host(r->rtm_family,
-                                                 RTA_PAYLOAD(tb[RTA_NEWDST]),
-                                                 RTA_DATA(tb[RTA_NEWDST]))
-                       );
+               fprintf(fp, "as to %s ",
+                       format_host_rta(r->rtm_family, tb[RTA_NEWDST]));
        }
 
        if (tb[RTA_ENCAP])
@@ -419,9 +413,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
 
        if (tb[RTA_GATEWAY] && filter.rvia.bitlen != host_len) {
                fprintf(fp, "via %s ",
-                       format_host(r->rtm_family,
-                                   RTA_PAYLOAD(tb[RTA_GATEWAY]),
-                                   RTA_DATA(tb[RTA_GATEWAY])));
+                       format_host_rta(r->rtm_family, tb[RTA_GATEWAY]));
        }
        if (tb[RTA_VIA]) {
                size_t len = RTA_PAYLOAD(tb[RTA_VIA]) - 2;
@@ -653,16 +645,13 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                                                        tb[RTA_ENCAP]);
                                if (tb[RTA_NEWDST]) {
                                        fprintf(fp, " as to %s ",
-                                               format_host(r->rtm_family,
-                                               RTA_PAYLOAD(tb[RTA_NEWDST]),
-                                               RTA_DATA(tb[RTA_NEWDST]),
-                                               abuf, sizeof(abuf)));
+                                               format_host_rta(r->rtm_family,
+                                                               tb[RTA_NEWDST]));
                                }
                                if (tb[RTA_GATEWAY]) {
                                        fprintf(fp, " via %s ",
-                                               format_host(r->rtm_family,
-                                                           RTA_PAYLOAD(tb[RTA_GATEWAY]),
-                                                           RTA_DATA(tb[RTA_GATEWAY])));
+                                               format_host_rta(r->rtm_family,
+                                                               tb[RTA_GATEWAY]));
                                }
                                if (tb[RTA_VIA]) {
                                        size_t len = RTA_PAYLOAD(tb[RTA_VIA]) - 2;
index 53d3ad4e6ea8eb73457574a262a470571b60c02e..56af9e4e92ecd15be1c1b5c4dfe1a57cc37642a9 100644 (file)
@@ -62,9 +62,8 @@ static void print_encap_mpls(FILE *fp, struct rtattr *encap)
        parse_rtattr_nested(tb, MPLS_IPTUNNEL_MAX, encap);
 
        if (tb[MPLS_IPTUNNEL_DST])
-               fprintf(fp, " %s ", format_host(AF_MPLS,
-                       RTA_PAYLOAD(tb[MPLS_IPTUNNEL_DST]),
-                       RTA_DATA(tb[MPLS_IPTUNNEL_DST])));
+               fprintf(fp, " %s ",
+                       format_host_rta(AF_MPLS, tb[MPLS_IPTUNNEL_DST]));
 }
 
 static void print_encap_ip(FILE *fp, struct rtattr *encap)
index 3fd510efe5e1baa3051e541e8aa145970058a17b..ac570440d663397ebbff30cf5c491d80d751868c 100644 (file)
@@ -89,10 +89,8 @@ int print_rule(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                                r->rtm_src_len
                                );
                } else {
-                       fprintf(fp, "from %s ", format_host(r->rtm_family,
-                                                      RTA_PAYLOAD(tb[FRA_SRC]),
-                                                      RTA_DATA(tb[FRA_SRC]))
-                               );
+                       fprintf(fp, "from %s ",
+                               format_host_rta(r->rtm_family, tb[FRA_SRC]));
                }
        } else if (r->rtm_src_len) {
                fprintf(fp, "from 0/%d ", r->rtm_src_len);
@@ -108,9 +106,8 @@ int print_rule(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
                                r->rtm_dst_len
                                );
                } else {
-                       fprintf(fp, "to %s ", format_host(r->rtm_family,
-                                                      RTA_PAYLOAD(tb[FRA_DST]),
-                                                      RTA_DATA(tb[FRA_DST])));
+                       fprintf(fp, "to %s ",
+                               format_host_rta(r->rtm_family, tb[FRA_DST]));
                }
        } else if (r->rtm_dst_len) {
                fprintf(fp, "to 0/%d ", r->rtm_dst_len);
@@ -183,9 +180,8 @@ int print_rule(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
        if (r->rtm_type == RTN_NAT) {
                if (tb[RTA_GATEWAY]) {
                        fprintf(fp, "map-to %s ",
-                               format_host(r->rtm_family,
-                                           RTA_PAYLOAD(tb[RTA_GATEWAY]),
-                                           RTA_DATA(tb[RTA_GATEWAY])));
+                               format_host_rta(r->rtm_family,
+                                               tb[RTA_GATEWAY]));
                } else
                        fprintf(fp, "masquerade");
        } else if (r->rtm_type == FR_ACT_GOTO) {
index 02fe98e2495268503739273d37c6ad644e18bb1d..6e1a1ab7f36e7e2e5610c7d62c25028aa4c878c2 100644 (file)
@@ -78,12 +78,9 @@ static int print_token(const struct sockaddr_nl *who, struct nlmsghdr *n, void *
                return -1;
        }
 
-       fprintf(fp, "token %s ",
-               format_host(ifi->ifi_family,
-                           RTA_PAYLOAD(ltb[IFLA_INET6_TOKEN]),
-                           RTA_DATA(ltb[IFLA_INET6_TOKEN])));
-       fprintf(fp, "dev %s ", ll_index_to_name(ifi->ifi_index));
-       fprintf(fp, "\n");
+       fprintf(fp, "token %s dev %s\n",
+               format_host_rta(ifi->ifi_family, ltb[IFLA_INET6_TOKEN]),
+               ll_index_to_name(ifi->ifi_index));
        fflush(fp);
 
        return 0;