Module Name: src
Committed By: christos
Date: Fri Oct 18 21:01:00 UTC 2013
Modified Files:
src/sbin/route: route.c
Log Message:
avoid pointer gymnastics
To generate a diff of this commit:
cvs rdiff -u -r1.140 -r1.141 src/sbin/route/route.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/route/route.c
diff -u src/sbin/route/route.c:1.140 src/sbin/route/route.c:1.141
--- src/sbin/route/route.c:1.140 Fri Mar 1 13:25:17 2013
+++ src/sbin/route/route.c Fri Oct 18 17:01:00 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: route.c,v 1.140 2013/03/01 18:25:17 joerg Exp $ */
+/* $NetBSD: route.c,v 1.141 2013/10/18 21:01:00 christos Exp $ */
/*
* Copyright (c) 1983, 1989, 1991, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 19
#if 0
static char sccsid[] = "@(#)route.c 8.6 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: route.c,v 1.140 2013/03/01 18:25:17 joerg Exp $");
+__RCSID("$NetBSD: route.c,v 1.141 2013/10/18 21:01:00 christos Exp $");
#endif
#endif /* not lint */
@@ -543,8 +543,10 @@ routename(const struct sockaddr *sa, str
(IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr) ||
IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr)) &&
sin6.sin6_scope_id == 0) {
- sin6.sin6_scope_id =
- ntohs(*(u_int16_t *)&sin6.sin6_addr.s6_addr[2]);
+ uint16_t scope;
+ memcpy(&scope, &sin6.sin6_addr.s6_addr[2],
+ sizeof(scope));
+ sin6.sin6_scope_id = ntohs(scope);
sin6.sin6_addr.s6_addr[2] = 0;
sin6.sin6_addr.s6_addr[3] = 0;
}
@@ -710,8 +712,10 @@ netname(const struct sockaddr *sa, struc
(IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr) ||
IN6_IS_ADDR_MC_LINKLOCAL(&sin6.sin6_addr)) &&
sin6.sin6_scope_id == 0) {
- sin6.sin6_scope_id =
- ntohs(*(u_int16_t *)&sin6.sin6_addr.s6_addr[2]);
+ uint16_t scope;
+ memcpy(&scope, &sin6.sin6_addr.s6_addr[2],
+ sizeof(scope));
+ sin6.sin6_scope_id = ntohs(scope);
sin6.sin6_addr.s6_addr[2] = 0;
sin6.sin6_addr.s6_addr[3] = 0;
}
@@ -1259,8 +1263,10 @@ getaddr(int which, const char *s, struct
if ((IN6_IS_ADDR_LINKLOCAL(&su->sin6.sin6_addr) ||
IN6_IS_ADDR_MC_LINKLOCAL(&su->sin6.sin6_addr)) &&
su->sin6.sin6_scope_id) {
- *(u_int16_t *)&su->sin6.sin6_addr.s6_addr[2] =
- htons(su->sin6.sin6_scope_id);
+ uint16_t scope;
+ scope = htons(su->sin6.sin6_scope_id);
+ memcpy(&su->sin6.sin6_addr.s6_addr[2], &scope,
+ sizeof(scope));
su->sin6.sin6_scope_id = 0;
}
#endif