Use sockaddr_in6_init().

This commit is contained in:
dyoung 2007-11-06 23:48:24 +00:00
parent 2bc0ce1e9b
commit b47fb23dd2

View File

@ -1,4 +1,4 @@
/* $NetBSD: ip6_output.c,v 1.122 2007/11/01 20:33:57 dyoung Exp $ */ /* $NetBSD: ip6_output.c,v 1.123 2007/11/06 23:48:24 dyoung Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */ /* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/* /*
@ -62,7 +62,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.122 2007/11/01 20:33:57 dyoung Exp $"); __KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.123 2007/11/06 23:48:24 dyoung Exp $");
#include "opt_inet.h" #include "opt_inet.h"
#include "opt_inet6.h" #include "opt_inet6.h"
@ -528,10 +528,7 @@ skip_ipsec2:;
* the information from the * the information from the
* application. * application.
*/ */
bzero(&sa, sizeof(sa)); sockaddr_in6_init(&sa, addr, 0, 0, 0);
sa.sin6_family = AF_INET6;
sa.sin6_len = sizeof(sa);
sa.sin6_addr = addr[0];
if ((error = sa6_embedscope(&sa, if ((error = sa6_embedscope(&sa,
ip6_use_defzone)) != 0) { ip6_use_defzone)) != 0) {
goto bad; goto bad;
@ -676,10 +673,7 @@ skip_ipsec2:;
/* adjust pointer */ /* adjust pointer */
ip6 = mtod(m, struct ip6_hdr *); ip6 = mtod(m, struct ip6_hdr *);
bzero(&dst_sa, sizeof(dst_sa)); sockaddr_in6_init(&dst_sa, &ip6->ip6_dst, 0, 0, 0);
dst_sa.sin6_family = AF_INET6;
dst_sa.sin6_len = sizeof(dst_sa);
dst_sa.sin6_addr = ip6->ip6_dst;
if ((error = in6_selectroute(&dst_sa, opt, im6o, ro, if ((error = in6_selectroute(&dst_sa, opt, im6o, ro,
&ifp, &rt, 0)) != 0) { &ifp, &rt, 0)) != 0) {
if (ifp != NULL) if (ifp != NULL)
@ -719,10 +713,7 @@ skip_ipsec2:;
src0 = ip6->ip6_src; src0 = ip6->ip6_src;
if (in6_setscope(&src0, origifp, &zone)) if (in6_setscope(&src0, origifp, &zone))
goto badscope; goto badscope;
bzero(&src_sa, sizeof(src_sa)); sockaddr_in6_init(&src_sa, &ip6->ip6_src, 0, 0, 0);
src_sa.sin6_family = AF_INET6;
src_sa.sin6_len = sizeof(src_sa);
src_sa.sin6_addr = ip6->ip6_src;
if (sa6_recoverscope(&src_sa) || zone != src_sa.sin6_scope_id) if (sa6_recoverscope(&src_sa) || zone != src_sa.sin6_scope_id)
goto badscope; goto badscope;
@ -730,10 +721,7 @@ skip_ipsec2:;
if (in6_setscope(&dst0, origifp, &zone)) if (in6_setscope(&dst0, origifp, &zone))
goto badscope; goto badscope;
/* re-initialize to be sure */ /* re-initialize to be sure */
bzero(&dst_sa, sizeof(dst_sa)); sockaddr_in6_init(&dst_sa, &ip6->ip6_dst, 0, 0, 0);
dst_sa.sin6_family = AF_INET6;
dst_sa.sin6_len = sizeof(dst_sa);
dst_sa.sin6_addr = ip6->ip6_dst;
if (sa6_recoverscope(&dst_sa) || zone != dst_sa.sin6_scope_id) if (sa6_recoverscope(&dst_sa) || zone != dst_sa.sin6_scope_id)
goto badscope; goto badscope;
@ -2719,10 +2707,8 @@ ip6_setmoptions(int optname, struct ip6_moptions **im6op, struct mbuf *m)
* check if there's ambiguity with the default scope * check if there's ambiguity with the default scope
* zone as the last resort. * zone as the last resort.
*/ */
bzero(&sa6_mc, sizeof(sa6_mc)); sockaddr_in6_init(&sa6_mc, &mreq->ipv6mr_multiaddr,
sa6_mc.sin6_family = AF_INET6; 0, 0, 0);
sa6_mc.sin6_len = sizeof(sa6_mc);
sa6_mc.sin6_addr = mreq->ipv6mr_multiaddr;
error = sa6_embedscope(&sa6_mc, ip6_use_defzone); error = sa6_embedscope(&sa6_mc, ip6_use_defzone);
if (error != 0) if (error != 0)
break; break;