libnetlink: Introduce rta_getattr_be*()
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>
This commit is contained in:
parent
039b3620cf
commit
aab0f61043
|
|
@ -168,10 +168,10 @@ int print_fdb(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
|
||||||
if (tb[NDA_PORT]) {
|
if (tb[NDA_PORT]) {
|
||||||
if (jw_global)
|
if (jw_global)
|
||||||
jsonw_uint_field(jw_global, "port",
|
jsonw_uint_field(jw_global, "port",
|
||||||
ntohs(rta_getattr_u16(tb[NDA_PORT])));
|
rta_getattr_be16(tb[NDA_PORT]));
|
||||||
else
|
else
|
||||||
fprintf(fp, "port %d ",
|
fprintf(fp, "port %d ",
|
||||||
ntohs(rta_getattr_u16(tb[NDA_PORT])));
|
rta_getattr_be16(tb[NDA_PORT]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb[NDA_VNI]) {
|
if (tb[NDA_VNI]) {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include <linux/if_addr.h>
|
#include <linux/if_addr.h>
|
||||||
#include <linux/neighbour.h>
|
#include <linux/neighbour.h>
|
||||||
#include <linux/netconf.h>
|
#include <linux/netconf.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
struct rtnl_handle {
|
struct rtnl_handle {
|
||||||
int fd;
|
int fd;
|
||||||
|
|
@ -140,10 +141,18 @@ static inline __u16 rta_getattr_u16(const struct rtattr *rta)
|
||||||
{
|
{
|
||||||
return *(__u16 *)RTA_DATA(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)
|
static inline __u32 rta_getattr_u32(const struct rtattr *rta)
|
||||||
{
|
{
|
||||||
return *(__u32 *)RTA_DATA(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)
|
static inline __u64 rta_getattr_u64(const struct rtattr *rta)
|
||||||
{
|
{
|
||||||
__u64 tmp;
|
__u64 tmp;
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,7 @@ static void geneve_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
|
||||||
|
|
||||||
if (tb[IFLA_GENEVE_PORT])
|
if (tb[IFLA_GENEVE_PORT])
|
||||||
fprintf(f, "dstport %u ",
|
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])
|
if (tb[IFLA_GENEVE_COLLECT_METADATA])
|
||||||
fputs("external ", f);
|
fputs("external ", f);
|
||||||
|
|
|
||||||
|
|
@ -413,7 +413,7 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
|
||||||
|
|
||||||
if (tb[IFLA_VXLAN_PORT])
|
if (tb[IFLA_VXLAN_PORT])
|
||||||
fprintf(f, "dstport %u ",
|
fprintf(f, "dstport %u ",
|
||||||
ntohs(rta_getattr_u16(tb[IFLA_VXLAN_PORT])));
|
rta_getattr_be16(tb[IFLA_VXLAN_PORT]));
|
||||||
|
|
||||||
if (tb[IFLA_VXLAN_LEARNING] &&
|
if (tb[IFLA_VXLAN_LEARNING] &&
|
||||||
!rta_getattr_u8(tb[IFLA_VXLAN_LEARNING]))
|
!rta_getattr_u8(tb[IFLA_VXLAN_LEARNING]))
|
||||||
|
|
|
||||||
|
|
@ -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)
|
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,
|
static int flower_print_opt(struct filter_util *qu, FILE *f,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue