Merge pull request #45 from themiron/master
authorSteven Barth <steven@midlink.org>
Mon, 8 Feb 2016 07:02:31 +0000 (08:02 +0100)
committerSteven Barth <steven@midlink.org>
Mon, 8 Feb 2016 07:02:31 +0000 (08:02 +0100)
Alignment cleanups

src/dhcpv6.c
src/odhcp6c.h
src/ra.c

index 3e128bcfa151c1001d56ccd6661b3eb880bbfc77..5998b75ccf5281fa06edfa94201515b8c9ed501e 100644 (file)
@@ -586,12 +586,14 @@ int dhcpv6_request(enum dhcpv6_msg type)
                for (; len < 0 && (round_start < round_end);
                                round_start = odhcp6c_get_milli_time()) {
                        uint8_t buf[1536];
-                       uint8_t cmsg_buf[CMSG_SPACE(sizeof(struct in6_pktinfo))]
-                               __aligned(__alignof__(struct cmsghdr));
+                       union {
+                               struct cmsghdr hdr;
+                               uint8_t buf[CMSG_SPACE(sizeof(struct in6_pktinfo))];
+                       } cmsg_buf;
                        struct iovec iov = {buf, sizeof(buf)};
                        struct sockaddr_in6 addr;
                        struct msghdr msg = {.msg_name = &addr, .msg_namelen = sizeof(addr),
-                                       .msg_iov = &iov, .msg_iovlen = 1, .msg_control = cmsg_buf,
+                                       .msg_iov = &iov, .msg_iovlen = 1, .msg_control = cmsg_buf.buf,
                                        .msg_controllen = sizeof(cmsg_buf)};
                        struct in6_pktinfo *pktinfo = NULL;
 
index 08a816f4446dd893d89db315bf6f8932200ab2b8..5ebea2949b7b591494833e5ae7a76161b0e5caa2 100644 (file)
@@ -18,7 +18,7 @@
 
 #define _unused __attribute__((unused))
 #define _packed __attribute__((packed))
-#define __aligned(n) __attribute__((aligned(n)))
+#define _aligned(n) __attribute__((aligned(n)))
 
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
 
index dd5962a29e750dba87bd39c33664e8e531efc7d5..89dc58b960b557b3e3a6d651b11b1a6a5fa49c7c 100644 (file)
--- a/src/ra.c
+++ b/src/ra.c
@@ -274,8 +274,11 @@ bool ra_process(void)
 {
        bool found = false;
        bool changed = false;
-       uint8_t buf[1500] __aligned(4);
-       uint8_t cmsg_buf[128] __aligned(__alignof__(struct cmsghdr));
+       uint8_t buf[1500] _aligned(4);
+       union {
+               struct cmsghdr hdr;
+               uint8_t buf[CMSG_SPACE(sizeof(int))];
+       } cmsg_buf;
        struct nd_router_advert *adv = (struct nd_router_advert*)buf;
        struct odhcp6c_entry *entry = alloca(sizeof(*entry) + 256);
        const struct in6_addr any = IN6ADDR_ANY_INIT;
@@ -302,7 +305,7 @@ bool ra_process(void)
                        .msg_namelen = sizeof(from),
                        .msg_iov = &iov,
                        .msg_iovlen = 1,
-                       .msg_control = cmsg_buf,
+                       .msg_control = cmsg_buf.buf,
                        .msg_controllen = sizeof(cmsg_buf),
                        .msg_flags = 0
                };