diff options
author | Martin Willi <martin@revosec.ch> | 2011-11-16 13:45:19 +0000 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-11-17 18:22:07 +0100 |
commit | 3fcacd283e0dceb6fc70b45dcafa0a7eddf26039 (patch) | |
tree | 36c0a3c4914e4ddd1934e354625cd95a68dfda57 /src/libcharon/plugins/socket_raw/socket_raw_socket.c | |
parent | 7b21873668ec818c4988f69547460ef33d4bd3ac (diff) | |
download | strongswan-3fcacd283e0dceb6fc70b45dcafa0a7eddf26039.tar.bz2 strongswan-3fcacd283e0dceb6fc70b45dcafa0a7eddf26039.tar.xz |
Fix unaligned aliasing warning in raw socket
Diffstat (limited to 'src/libcharon/plugins/socket_raw/socket_raw_socket.c')
-rw-r--r-- | src/libcharon/plugins/socket_raw/socket_raw_socket.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/libcharon/plugins/socket_raw/socket_raw_socket.c b/src/libcharon/plugins/socket_raw/socket_raw_socket.c index f371ed502..ae37d8f2b 100644 --- a/src/libcharon/plugins/socket_raw/socket_raw_socket.c +++ b/src/libcharon/plugins/socket_raw/socket_raw_socket.c @@ -442,23 +442,22 @@ static int open_send_socket(private_socket_raw_socket_t *this, int skt; memset(&addr, 0, sizeof(addr)); + addr.ss_family = family; /* precalculate constants depending on address family */ switch (family) { case AF_INET: { struct sockaddr_in *sin = (struct sockaddr_in *)&addr; - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = INADDR_ANY; - sin->sin_port = htons(port); + htoun32(&sin->sin_addr.s_addr, INADDR_ANY); + htoun16(&sin->sin_port, port); break; } case AF_INET6: { struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&addr; - sin6->sin6_family = AF_INET6; memcpy(&sin6->sin6_addr, &in6addr_any, sizeof(in6addr_any)); - sin6->sin6_port = htons(port); + htoun16(&sin6->sin6_port, port); break; } default: |