projects
/
radsecproxy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
59c3dd8
)
Get rid of warning for strict aliasing breakage.
author
Linus Nordberg
<linus@nordu.net>
Wed, 5 Oct 2011 07:11:29 +0000
(09:11 +0200)
committer
Linus Nordberg
<linus@nordu.net>
Wed, 5 Oct 2011 07:11:29 +0000
(09:11 +0200)
lib/rsp_util.c
patch
|
blob
|
history
diff --git
a/lib/rsp_util.c
b/lib/rsp_util.c
index
7960eae
..
c2966b8
100644
(file)
--- a/
lib/rsp_util.c
+++ b/
lib/rsp_util.c
@@
-88,22
+88,26
@@
struct sockaddr *addr_copy(struct sockaddr *in) {
}
char *addr2string(struct sockaddr *addr) {
}
char *addr2string(struct sockaddr *addr) {
- struct sockaddr_in6 *sa6;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *sa4;
+ struct sockaddr_in6 *sa6;
+ } u;
struct sockaddr_in sa4;
static char addr_buf[2][INET6_ADDRSTRLEN];
static int i = 0;
i = !i;
struct sockaddr_in sa4;
static char addr_buf[2][INET6_ADDRSTRLEN];
static int i = 0;
i = !i;
- if (addr->sa_family == AF_INET6) {
- sa6 = (struct sockaddr_in6 *)addr;
- if (IN6_IS_ADDR_V4MAPPED(&sa6->sin6_addr)) {
+ u.sa = addr;
+ if (u.sa->sa_family == AF_INET6) {
+ if (IN6_IS_ADDR_V4MAPPED(&
u.
sa6->sin6_addr)) {
memset(&sa4, 0, sizeof(sa4));
sa4.sin_family = AF_INET;
memset(&sa4, 0, sizeof(sa4));
sa4.sin_family = AF_INET;
- sa4.sin_port = sa6->sin6_port;
- memcpy(&sa4.sin_addr, &sa6->sin6_addr.s6_addr[12], 4);
-
addr = (struct sockaddr *)
&sa4;
+ sa4.sin_port =
u.
sa6->sin6_port;
+ memcpy(&sa4.sin_addr, &
u.
sa6->sin6_addr.s6_addr[12], 4);
+
u.sa4 =
&sa4;
}
}
}
}
- if (getnameinfo(
addr, SOCKADDRP_SIZE(addr
), addr_buf[i], sizeof(addr_buf[i]),
+ if (getnameinfo(
u.sa, SOCKADDRP_SIZE(u.sa
), addr_buf[i], sizeof(addr_buf[i]),
NULL, 0, NI_NUMERICHOST)) {
debug(DBG_WARN, "getnameinfo failed");
return "getnameinfo_failed";
NULL, 0, NI_NUMERICHOST)) {
debug(DBG_WARN, "getnameinfo failed");
return "getnameinfo_failed";