]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
libnetlink: Introduce rta_getattr_be*()
authorAmir Vadai <amir@vadai.me>
Fri, 2 Dec 2016 11:25:13 +0000 (13:25 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 2 Dec 2016 22:12:09 +0000 (14:12 -0800)
Add the utility functions rta_getattr_be16() and rta_getattr_be32(), and
change existing code to use it.

Signed-off-by: Amir Vadai <amir@vadai.me>
bridge/fdb.c
include/libnetlink.h
ip/iplink_geneve.c
ip/iplink_vxlan.c
tc/f_flower.c

index 90f4b154c5dc2473fefcc2ab1255802cf68def2e..a91521776e99043d32cb723986f298f702f1c6a4 100644 (file)
@@ -168,10 +168,10 @@ int print_fdb(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
        if (tb[NDA_PORT]) {
                if (jw_global)
                        jsonw_uint_field(jw_global, "port",
-                                        ntohs(rta_getattr_u16(tb[NDA_PORT])));
+                                        rta_getattr_be16(tb[NDA_PORT]));
                else
                        fprintf(fp, "port %d ",
-                               ntohs(rta_getattr_u16(tb[NDA_PORT])));
+                               rta_getattr_be16(tb[NDA_PORT]));
        }
 
        if (tb[NDA_VNI]) {
index 483509ca9635f4f2dae5e8eeb6363ef07855768e..751ebf186dd41d7a008449ecb2d1ed7e662333f4 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/if_addr.h>
 #include <linux/neighbour.h>
 #include <linux/netconf.h>
+#include <arpa/inet.h>
 
 struct rtnl_handle {
        int                     fd;
@@ -140,10 +141,18 @@ static inline __u16 rta_getattr_u16(const struct rtattr *rta)
 {
        return *(__u16 *)RTA_DATA(rta);
 }
+static inline __be16 rta_getattr_be16(const struct rtattr *rta)
+{
+       return ntohs(rta_getattr_u16(rta));
+}
 static inline __u32 rta_getattr_u32(const struct rtattr *rta)
 {
        return *(__u32 *)RTA_DATA(rta);
 }
+static inline __be32 rta_getattr_be32(const struct rtattr *rta)
+{
+       return ntohl(rta_getattr_u32(rta));
+}
 static inline __u64 rta_getattr_u64(const struct rtattr *rta)
 {
        __u64 tmp;
index 3bfba91c644c6b792f5f9f0a68f6c0312bee1748..1e6669d07d60376c5fbfe6ae9208b99f057eb4c0 100644 (file)
@@ -234,7 +234,7 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
        if (tb[IFLA_GENEVE_PORT])
                fprintf(f, "dstport %u ",
-                       ntohs(rta_getattr_u16(tb[IFLA_GENEVE_PORT])));
+                       rta_getattr_be16(tb[IFLA_GENEVE_PORT]));
 
        if (tb[IFLA_GENEVE_COLLECT_METADATA])
                fputs("external ", f);
index 93af979a1e97c8711802bcd7747055c5558f52d0..6d02bb47b2f077bffe60b8ec345b47dfdef2e7d1 100644 (file)
@@ -413,7 +413,7 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
 
        if (tb[IFLA_VXLAN_PORT])
                fprintf(f, "dstport %u ",
-                       ntohs(rta_getattr_u16(tb[IFLA_VXLAN_PORT])));
+                       rta_getattr_be16(tb[IFLA_VXLAN_PORT]));
 
        if (tb[IFLA_VXLAN_LEARNING] &&
            !rta_getattr_u8(tb[IFLA_VXLAN_LEARNING]))
index 1555764b99969c6bd190c256dfcd84c473be9a71..e132974e0d1dad57e22332fe12d6bbe77927a955 100644 (file)
@@ -511,7 +511,7 @@ static void flower_print_ip_addr(FILE *f, char *name, __be16 eth_type,
 
 static void flower_print_port(FILE *f, char *name, struct rtattr *attr)
 {
-       fprintf(f, "\n  %s %d", name, ntohs(rta_getattr_u16(attr)));
+       fprintf(f, "\n  %s %d", name, rta_getattr_be16(attr));
 }
 
 static int flower_print_opt(struct filter_util *qu, FILE *f,