Fix compilation
authorSteven Barth <steven@midlink.org>
Mon, 8 Apr 2013 07:12:50 +0000 (09:12 +0200)
committerSteven Barth <steven@midlink.org>
Mon, 8 Apr 2013 07:12:50 +0000 (09:12 +0200)
CMakeLists.txt
src/ra.c

index db7ef656259c75d14586b1aaa516c6bd6bce0d63..b1871a60d3cbe8867dee07e9823d8b92f8132eae 100644 (file)
@@ -5,7 +5,7 @@ cmake_policy(SET CMP0015 NEW)
 project(odhcp6c C)
 set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -std=c99")
-add_definitions(-D_GNU_SOURCE -Wall -Werror -Wextra -pedantic)
+add_definitions(-D_GNU_SOURCE -Os -Wall -Werror -Wextra -pedantic)
 
 add_executable(odhcp6c src/odhcp6c.c src/dhcpv6.c src/ra.c src/script.c src/md5.c)
 target_link_libraries(odhcp6c resolv)
index 814a17decfe706dbde3da71d3749d9ff8dc7a594..c572c130ebe3bbedf62ebac3909de81ceebcf52e 100644 (file)
--- a/src/ra.c
+++ b/src/ra.c
@@ -230,13 +230,15 @@ bool ra_process(void)
                struct icmpv6_opt *opt;
                icmpv6_for_each_option(opt, &adv[1], &buf[len]) {
                        if (opt->type == ND_OPT_MTU) {
-                               update_proc("conf", "mtu", ntohl(*((uint32_t*)&opt->data[2])));
+                               uint32_t *mtu = (uint32_t*)&opt->data[2];
+                               update_proc("conf", "mtu", ntohl(*mtu));
                        } else if (opt->type == ND_OPT_ROUTE_INFORMATION && opt->len <= 3) {
                                entry.router = from.sin6_addr;
                                entry.target = any;
                                entry.priority = pref_to_priority(opt->data[1]);
                                entry.length = opt->data[0];
-                               entry.valid = ntohl(*((uint32_t*)&opt->data[2]));
+                               uint32_t *valid = (uint32_t*)&opt->data[2];
+                               entry.valid = ntohl(*valid);
                                memcpy(&entry.target, &opt->data[6], (opt->len - 1) * 8);
 
                                if (entry.length > 128 || IN6_IS_ADDR_LINKLOCAL(&entry.target)
@@ -276,7 +278,8 @@ bool ra_process(void)
                                entry.router = from.sin6_addr;
                                entry.priority = 0;
                                entry.length = 128;
-                               entry.valid = ntohl(*((uint32_t*)&opt->data[2]));
+                               uint32_t *valid = (uint32_t*)&opt->data[2];
+                               entry.valid = ntohl(*valid);
                                entry.preferred = 0;
 
                                for (ssize_t i = 0; i < (opt->len - 1) / 2; ++i) {