diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2023-08-03 17:19:43 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-08-04 01:25:23 +0200 |
commit | cfe7509e5c1650256f3eebe68aaf3b19611ac9b8 (patch) | |
tree | f9846d27994e5cac9365b9a6296f29ff242aab54 /netlink.c | |
parent | 257a6b0b7e76e17bdd6e107ae643db4466960654 (diff) | |
download | passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar.gz passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar.bz2 passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar.lz passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar.xz passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.tar.zst passt-cfe7509e5c1650256f3eebe68aaf3b19611ac9b8.zip |
netlink: Use struct in_addr for IPv4 addresses, not bare uint32_t
This improves consistency with IPv6 and makes it harder to misuse these as
some other sort of value.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'netlink.c')
-rw-r--r-- | netlink.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -265,9 +265,9 @@ void nl_route_set_def(unsigned int ifi, sa_family_t af, void *gw) } r6; struct { struct rtattr rta_dst; - uint32_t d; + struct in_addr d; struct rtattr rta_gw; - uint32_t a; + struct in_addr a; } r4; } set; } req = { @@ -309,7 +309,7 @@ void nl_route_set_def(unsigned int ifi, sa_family_t af, void *gw) req.set.r4.rta_dst.rta_type = RTA_DST; req.set.r4.rta_dst.rta_len = rta_len; - req.set.r4.a = *(uint32_t *)gw; + memcpy(&req.set.r4.a, gw, sizeof(req.set.r4.a)); req.set.r4.rta_gw.rta_type = RTA_GATEWAY; req.set.r4.rta_gw.rta_len = rta_len; } @@ -470,9 +470,9 @@ void nl_addr_set(unsigned int ifi, sa_family_t af, void *addr, int prefix_len) union { struct { struct rtattr rta_l; - uint32_t l; + struct in_addr l; struct rtattr rta_a; - uint32_t a; + struct in_addr a; } a4; struct { struct rtattr rta_l; @@ -516,7 +516,7 @@ void nl_addr_set(unsigned int ifi, sa_family_t af, void *addr, int prefix_len) req.nlh.nlmsg_len = offsetof(struct req_t, set.a4) + sizeof(req.set.a4); - req.set.a4.l = req.set.a4.a = *(uint32_t *)addr; + memcpy(&req.set.a4.l, addr, sizeof(req.set.a4.l)); req.set.a4.rta_l.rta_len = rta_len; req.set.a4.rta_l.rta_type = IFA_LOCAL; req.set.a4.rta_a.rta_len = rta_len; |