]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Linux: work around alignment isses with clang
authorRoy Marples <roy@marples.name>
Tue, 17 Dec 2019 15:29:53 +0000 (15:29 +0000)
committerRoy Marples <roy@marples.name>
Tue, 17 Dec 2019 15:29:53 +0000 (15:29 +0000)
src/if-linux.c

index 5b31cada62ecb5ed30c58a7dbd8eff8cec18d74f..9203bbfa0495e4b74f0ea8fb23527993c8734784 100644 (file)
@@ -109,6 +109,24 @@ int if_getssid_wext(const char *ifname, uint8_t *ssid);
 #define        SOL_NETLINK     270
 #endif
 
+/* Someone should fix kernel headers for clang alignment warnings . */
+#undef IFA_RTA
+#define IFA_RTA(r)  ((struct rtattr *)(void *)(((char *)(r)) \
+       + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
+#undef IFLA_RTA
+#define IFLA_RTA(r)  ((struct rtattr *)(void *)(((char *)(r)) \
+       + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
+#undef NLMSG_NEXT
+#define NLMSG_NEXT(nlh, len)    ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), \
+       (struct nlmsghdr *)(void *)(((char *)(nlh)) \
+       + NLMSG_ALIGN((nlh)->nlmsg_len)))
+#undef RTM_RTA
+#define RTM_RTA(r) (void *)(((char *)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg)))
+#undef RTA_NEXT
+#define RTA_NEXT(rta, attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len), \
+       (struct rtattr *)(void *)(((char *)(rta)) \
+       + RTA_ALIGN((rta)->rta_len)))
+
 struct priv {
        int route_fd;
        uint32_t route_pid;