Module Name: src
Committed By: ryo
Date: Mon Jan 16 07:33:36 UTC 2017
Modified Files:
src/sys/dist/pf/net: pf_osfp.c
src/sys/net: if_spppsubr.c
src/sys/netinet: dccp_usrreq.c if_arp.c in.c in_var.h ip_carp.c
ip_output.c sctp_asconf.c sctputil.c
src/sys/netinet6: icmp6.c in6.c in6_gif.c in6_src.c in6_var.h
ip6_forward.c ip6_input.c ip6_mroute.c ip6_output.c mld6.c nd6.c
nd6_nbr.c nd6_rtr.c scope6.c
src/sys/netipsec: ipsec.c ipsec_input.c
Log Message:
Make ip6_sprintf(), in_fmtaddr(), lla_snprintf() and icmp6_redirect_diag()
mpsafe.
Reviewed by ozaki-r@
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/dist/pf/net/pf_osfp.c
cvs rdiff -u -r1.165 -r1.166 src/sys/net/if_spppsubr.c
cvs rdiff -u -r1.10 -r1.11 src/sys/netinet/dccp_usrreq.c \
src/sys/netinet/sctputil.c
cvs rdiff -u -r1.233 -r1.234 src/sys/netinet/if_arp.c
cvs rdiff -u -r1.195 -r1.196 src/sys/netinet/in.c
cvs rdiff -u -r1.91 -r1.92 src/sys/netinet/in_var.h
cvs rdiff -u -r1.81 -r1.82 src/sys/netinet/ip_carp.c
cvs rdiff -u -r1.267 -r1.268 src/sys/netinet/ip_output.c
cvs rdiff -u -r1.7 -r1.8 src/sys/netinet/sctp_asconf.c
cvs rdiff -u -r1.204 -r1.205 src/sys/netinet6/icmp6.c
cvs rdiff -u -r1.233 -r1.234 src/sys/netinet6/in6.c
cvs rdiff -u -r1.83 -r1.84 src/sys/netinet6/in6_gif.c \
src/sys/netinet6/ip6_forward.c
cvs rdiff -u -r1.76 -r1.77 src/sys/netinet6/in6_src.c
cvs rdiff -u -r1.89 -r1.90 src/sys/netinet6/in6_var.h
cvs rdiff -u -r1.171 -r1.172 src/sys/netinet6/ip6_input.c
cvs rdiff -u -r1.113 -r1.114 src/sys/netinet6/ip6_mroute.c
cvs rdiff -u -r1.180 -r1.181 src/sys/netinet6/ip6_output.c
cvs rdiff -u -r1.77 -r1.78 src/sys/netinet6/mld6.c
cvs rdiff -u -r1.224 -r1.225 src/sys/netinet6/nd6.c
cvs rdiff -u -r1.134 -r1.135 src/sys/netinet6/nd6_nbr.c
cvs rdiff -u -r1.129 -r1.130 src/sys/netinet6/nd6_rtr.c
cvs rdiff -u -r1.15 -r1.16 src/sys/netinet6/scope6.c
cvs rdiff -u -r1.67 -r1.68 src/sys/netipsec/ipsec.c
cvs rdiff -u -r1.36 -r1.37 src/sys/netipsec/ipsec_input.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dist/pf/net/pf_osfp.c
diff -u src/sys/dist/pf/net/pf_osfp.c:1.11 src/sys/dist/pf/net/pf_osfp.c:1.12
--- src/sys/dist/pf/net/pf_osfp.c:1.11 Wed May 18 12:54:15 2011
+++ src/sys/dist/pf/net/pf_osfp.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: pf_osfp.c,v 1.11 2011/05/18 12:54:15 drochner Exp $ */
+/* $NetBSD: pf_osfp.c,v 1.12 2017/01/16 07:33:36 ryo Exp $ */
/* $OpenBSD: pf_osfp.c,v 1.12 2006/12/13 18:14:10 itojun Exp $ */
/*
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pf_osfp.c,v 1.11 2011/05/18 12:54:15 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pf_osfp.c,v 1.12 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -172,9 +172,8 @@ pf_osfp_fingerprint_hdr(const struct ip
fp.fp_flags |= PF_OSFP_DF;
fp.fp_flags |= PF_OSFP_INET6;
#ifdef _KERNEL
- strlcpy(srcname,
- ip6_sprintf((const struct in6_addr *)&ip6->ip6_src),
- sizeof(srcname));
+ CTASSERT(sizeof(srcname) >= INET6_ADDRSTRLEN);
+ ip6_sprintf(srcname, (const struct in6_addr *)&ip6->ip6_src);
#else
memset(&sin6, 0, sizeof(sin6));
sin6.sin6_family = AF_INET6;
Index: src/sys/net/if_spppsubr.c
diff -u src/sys/net/if_spppsubr.c:1.165 src/sys/net/if_spppsubr.c:1.166
--- src/sys/net/if_spppsubr.c:1.165 Tue Dec 27 13:49:58 2016
+++ src/sys/net/if_spppsubr.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: if_spppsubr.c,v 1.165 2016/12/27 13:49:58 christos Exp $ */
+/* $NetBSD: if_spppsubr.c,v 1.166 2017/01/16 07:33:36 ryo Exp $ */
/*
* Synchronous PPP/Cisco link level subroutines.
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.165 2016/12/27 13:49:58 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.166 2017/01/16 07:33:36 ryo Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -3584,6 +3584,7 @@ sppp_ipv6cp_RCR(struct sppp *sp, struct
int ifidcount;
int type;
int collision, nohisaddr;
+ char ip6buf[INET6_ADDRSTRLEN];
KASSERT(sppp_locked(sp));
@@ -3690,7 +3691,7 @@ sppp_ipv6cp_RCR(struct sppp *sp, struct
if (debug) {
addlog(" %s [%s]",
- ip6_sprintf(&desiredaddr),
+ ip6_sprintf(ip6buf, &desiredaddr),
sppp_cp_type_name(type));
}
continue;
@@ -3712,7 +3713,7 @@ sppp_ipv6cp_RCR(struct sppp *sp, struct
memcpy(&p[2], &suggestaddr.s6_addr[8], 8);
}
if (debug)
- addlog(" %s [%s]", ip6_sprintf(&desiredaddr),
+ addlog(" %s [%s]", ip6_sprintf(ip6buf, &desiredaddr),
sppp_cp_type_name(type));
break;
}
@@ -3739,7 +3740,7 @@ sppp_ipv6cp_RCR(struct sppp *sp, struct
if (debug) {
addlog(" send %s suggest %s\n",
- sppp_cp_type_name(type), ip6_sprintf(&suggestaddr));
+ sppp_cp_type_name(type), ip6_sprintf(ip6buf, &suggestaddr));
}
sppp_cp_send(sp, PPP_IPV6CP, type, h->ident, rlen, buf);
}
@@ -3818,6 +3819,7 @@ sppp_ipv6cp_RCN_nak(struct sppp *sp, str
struct ifnet *ifp = &sp->pp_if;
int debug = ifp->if_flags & IFF_DEBUG;
struct in6_addr suggestaddr;
+ char ip6buf[INET6_ADDRSTRLEN];
KASSERT(sppp_locked(sp));
@@ -3857,7 +3859,7 @@ sppp_ipv6cp_RCN_nak(struct sppp *sp, str
sp->ipv6cp.opts |= (1 << IPV6CP_OPT_IFID);
if (debug)
addlog(" [suggestaddr %s]",
- ip6_sprintf(&suggestaddr));
+ ip6_sprintf(ip6buf, &suggestaddr));
#ifdef IPV6CP_MYIFID_DYN
/*
* When doing dynamic address assignment,
Index: src/sys/netinet/dccp_usrreq.c
diff -u src/sys/netinet/dccp_usrreq.c:1.10 src/sys/netinet/dccp_usrreq.c:1.11
--- src/sys/netinet/dccp_usrreq.c:1.10 Tue Dec 13 08:29:03 2016
+++ src/sys/netinet/dccp_usrreq.c Mon Jan 16 07:33:36 2017
@@ -1,5 +1,5 @@
/* $KAME: dccp_usrreq.c,v 1.67 2005/11/03 16:05:04 nishida Exp $ */
-/* $NetBSD: dccp_usrreq.c,v 1.10 2016/12/13 08:29:03 ozaki-r Exp $ */
+/* $NetBSD: dccp_usrreq.c,v 1.11 2017/01/16 07:33:36 ryo Exp $ */
/*
* Copyright (c) 2003 Joacim H�ggmark, Magnus Erixzon, Nils-Erik Mattsson
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.10 2016/12/13 08:29:03 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dccp_usrreq.c,v 1.11 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -377,11 +377,12 @@ dccp_input(struct mbuf *m, ...)
#ifdef INET6
if (isipv6) {
+ char ip6buf[INET6_ADDRSTRLEN];
strlcpy(dbuf, "[", sizeof dbuf);
- strlcat(dbuf, ip6_sprintf(&ip6->ip6_dst), sizeof dbuf);
+ strlcat(dbuf, ip6_sprintf(ip6buf, &ip6->ip6_dst), sizeof dbuf);
strlcat(dbuf, "]", sizeof dbuf);
strlcpy(sbuf, "[", sizeof sbuf);
- strlcat(sbuf, ip6_sprintf(&ip6->ip6_src), sizeof sbuf);
+ strlcat(sbuf, ip6_sprintf(ip6buf, &ip6->ip6_src), sizeof sbuf);
strlcat(sbuf, "]", sizeof sbuf);
} else
#endif
Index: src/sys/netinet/sctputil.c
diff -u src/sys/netinet/sctputil.c:1.10 src/sys/netinet/sctputil.c:1.11
--- src/sys/netinet/sctputil.c:1.10 Thu Jul 7 09:32:02 2016
+++ src/sys/netinet/sctputil.c Mon Jan 16 07:33:36 2017
@@ -1,5 +1,5 @@
/* $KAME: sctputil.c,v 1.39 2005/06/16 20:54:06 jinmei Exp $ */
-/* $NetBSD: sctputil.c,v 1.10 2016/07/07 09:32:02 ozaki-r Exp $ */
+/* $NetBSD: sctputil.c,v 1.11 2017/01/16 07:33:36 ryo Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Cisco Systems, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sctputil.c,v 1.10 2016/07/07 09:32:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sctputil.c,v 1.11 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -3048,12 +3048,13 @@ sctp_cmpaddr(const struct sockaddr *sa1,
void
sctp_print_address(const struct sockaddr *sa)
{
+ char ip6buf[INET6_ADDRSTRLEN];
if (sa->sa_family == AF_INET6) {
const struct sockaddr_in6 *sin6;
sin6 = (const struct sockaddr_in6 *)sa;
printf("IPv6 address: %s:%d scope:%u\n",
- ip6_sprintf(&sin6->sin6_addr), ntohs(sin6->sin6_port),
+ ip6_sprintf(ip6buf, &sin6->sin6_addr), ntohs(sin6->sin6_port),
sin6->sin6_scope_id);
} else if (sa->sa_family == AF_INET) {
const struct sockaddr_in *sin;
Index: src/sys/netinet/if_arp.c
diff -u src/sys/netinet/if_arp.c:1.233 src/sys/netinet/if_arp.c:1.234
--- src/sys/netinet/if_arp.c:1.233 Mon Dec 12 03:55:57 2016
+++ src/sys/netinet/if_arp.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: if_arp.c,v 1.233 2016/12/12 03:55:57 ozaki-r Exp $ */
+/* $NetBSD: if_arp.c,v 1.234 2017/01/16 07:33:36 ryo Exp $ */
/*-
* Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.233 2016/12/12 03:55:57 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.234 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_ddb.h"
@@ -221,34 +221,30 @@ static int log_unknown_network = 1;
* this should be elsewhere.
*/
+#define LLA_ADDRSTRLEN (16 * 3)
+
static char *
-lla_snprintf(u_int8_t *, int);
+lla_snprintf(char *, u_int8_t *, int);
static char *
-lla_snprintf(u_int8_t *adrp, int len)
+lla_snprintf(char *dst, u_int8_t *adrp, int len)
{
-#define NUMBUFS 3
- static char buf[NUMBUFS][16*3];
- static int bnum = 0;
-
int i;
char *p;
- p = buf[bnum];
+ p = dst;
- *p++ = hexdigits[(*adrp)>>4];
- *p++ = hexdigits[(*adrp++)&0xf];
+ *p++ = hexdigits[(*adrp) >> 4];
+ *p++ = hexdigits[(*adrp++) & 0xf];
- for (i=1; i<len && i<16; i++) {
+ for (i = 1; i < len && i < 16; i++) {
*p++ = ':';
- *p++ = hexdigits[(*adrp)>>4];
- *p++ = hexdigits[(*adrp++)&0xf];
+ *p++ = hexdigits[(*adrp) >> 4];
+ *p++ = hexdigits[(*adrp++) & 0xf];
}
*p = 0;
- p = buf[bnum];
- bnum = (bnum + 1) % NUMBUFS;
- return p;
+ return dst;
}
DOMAIN_DEFINE(arpdomain); /* forward declare and add to link set */
@@ -693,9 +689,10 @@ arpannounce(struct ifnet *ifp, struct if
{
struct in_ifaddr *ia = ifatoia(ifa);
struct in_addr *ip = &IA_SIN(ifa)->sin_addr;
+ char ipbuf[INET_ADDRSTRLEN];
if (ia->ia4_flags & (IN_IFF_NOTREADY | IN_IFF_DETACHED)) {
- arplog(LOG_DEBUG, "%s not ready\n", in_fmtaddr(*ip));
+ arplog(LOG_DEBUG, "%s not ready\n", in_fmtaddr(ipbuf, *ip));
return;
}
arprequest(ifp, ip, ip, enaddr);
@@ -1016,6 +1013,8 @@ in_arpinput(struct mbuf *m)
uint64_t *arps;
struct psref psref, psref_ia;
int s;
+ char llabuf[LLA_ADDRSTRLEN];
+ char ipbuf[INET_ADDRSTRLEN];
if (__predict_false(m_makewritable(&m, 0, m->m_pkthdr.len, M_DONTWAIT)))
goto out;
@@ -1125,7 +1124,7 @@ in_arpinput(struct mbuf *m)
ARP_STATINC(ARP_STAT_RCVBCASTSHA);
log(LOG_ERR,
"%s: arp: link address is broadcast for IP address %s!\n",
- ifp->if_xname, in_fmtaddr(isaddr));
+ ifp->if_xname, in_fmtaddr(ipbuf, isaddr));
goto out;
}
@@ -1152,7 +1151,7 @@ in_arpinput(struct mbuf *m)
(in_nullhost(isaddr) && in_hosteq(itaddr, myaddr)))
{
arp_dad_duplicated((struct ifaddr *)ia,
- lla_snprintf(ar_sha(ah), ah->ar_hln));
+ lla_snprintf(llabuf, ar_sha(ah), ah->ar_hln));
goto out;
}
@@ -1175,8 +1174,8 @@ in_arpinput(struct mbuf *m)
log(LOG_INFO,
"%s tried to overwrite permanent arp info"
" for %s\n",
- lla_snprintf(ar_sha(ah), ah->ar_hln),
- in_fmtaddr(isaddr));
+ lla_snprintf(llabuf, ar_sha(ah), ah->ar_hln),
+ in_fmtaddr(ipbuf, isaddr));
goto out;
} else if (la->lle_tbl->llt_ifp != ifp) {
/* XXX should not happen? */
@@ -1186,8 +1185,8 @@ in_arpinput(struct mbuf *m)
log(LOG_INFO,
"%s on %s tried to overwrite "
"arp info for %s on %s\n",
- lla_snprintf(ar_sha(ah), ah->ar_hln),
- ifp->if_xname, in_fmtaddr(isaddr),
+ lla_snprintf(llabuf, ar_sha(ah), ah->ar_hln),
+ ifp->if_xname, in_fmtaddr(ipbuf, isaddr),
la->lle_tbl->llt_ifp->if_xname);
goto out;
} else {
@@ -1195,8 +1194,8 @@ in_arpinput(struct mbuf *m)
if (log_movements)
log(LOG_INFO, "arp info overwritten "
"for %s by %s\n",
- in_fmtaddr(isaddr),
- lla_snprintf(ar_sha(ah),
+ in_fmtaddr(ipbuf, isaddr),
+ lla_snprintf(llabuf, ar_sha(ah),
ah->ar_hln));
}
}
@@ -1212,7 +1211,7 @@ in_arpinput(struct mbuf *m)
ARP_STATINC(ARP_STAT_RCVLENCHG);
log(LOG_WARNING,
"arp from %s: new addr len %d, was %d\n",
- in_fmtaddr(isaddr), ah->ar_hln, sdl->sdl_alen);
+ in_fmtaddr(ipbuf, isaddr), ah->ar_hln, sdl->sdl_alen);
}
#endif
@@ -1220,7 +1219,7 @@ in_arpinput(struct mbuf *m)
ARP_STATINC(ARP_STAT_RCVBADLEN);
log(LOG_WARNING,
"arp from %s: addr len: new %d, i/f %d (ignored)\n",
- in_fmtaddr(isaddr), ah->ar_hln,
+ in_fmtaddr(ipbuf, isaddr), ah->ar_hln,
ifp->if_addrlen);
goto reply;
}
@@ -1574,6 +1573,7 @@ arp_dad_start(struct ifaddr *ifa)
{
struct in_ifaddr *ia = (struct in_ifaddr *)ifa;
struct dadq *dp;
+ char ipbuf[INET_ADDRSTRLEN];
if (!dad_init) {
TAILQ_INIT(&dadq);
@@ -1588,7 +1588,7 @@ arp_dad_start(struct ifaddr *ifa)
if (!(ia->ia4_flags & IN_IFF_TENTATIVE)) {
log(LOG_DEBUG,
"%s: called with non-tentative address %s(%s)\n", __func__,
- in_fmtaddr(ia->ia_addr.sin_addr),
+ in_fmtaddr(ipbuf, ia->ia_addr.sin_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
return;
}
@@ -1613,7 +1613,7 @@ arp_dad_start(struct ifaddr *ifa)
if (dp == NULL) {
mutex_exit(&arp_dad_lock);
log(LOG_ERR, "%s: memory allocation failed for %s(%s)\n",
- __func__, in_fmtaddr(ia->ia_addr.sin_addr),
+ __func__, in_fmtaddr(ipbuf, ia->ia_addr.sin_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
return;
}
@@ -1632,7 +1632,7 @@ arp_dad_start(struct ifaddr *ifa)
TAILQ_INSERT_TAIL(&dadq, (struct dadq *)dp, dad_list);
arplog(LOG_DEBUG, "%s: starting DAD for %s\n", if_name(ifa->ifa_ifp),
- in_fmtaddr(ia->ia_addr.sin_addr));
+ in_fmtaddr(ipbuf, ia->ia_addr.sin_addr));
arp_dad_starttimer(dp, cprng_fast32() % (PROBE_WAIT * hz));
@@ -1674,6 +1674,7 @@ arp_dad_timer(struct ifaddr *ifa)
{
struct in_ifaddr *ia = (struct in_ifaddr *)ifa;
struct dadq *dp;
+ char ipbuf[INET_ADDRSTRLEN];
mutex_enter(softnet_lock);
KERNEL_LOCK(1, NULL);
@@ -1691,14 +1692,14 @@ arp_dad_timer(struct ifaddr *ifa)
}
if (ia->ia4_flags & IN_IFF_DUPLICATED) {
log(LOG_ERR, "%s: called with duplicate address %s(%s)\n",
- __func__, in_fmtaddr(ia->ia_addr.sin_addr),
+ __func__, in_fmtaddr(ipbuf, ia->ia_addr.sin_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
goto done;
}
if ((ia->ia4_flags & IN_IFF_TENTATIVE) == 0 && dp->dad_arp_acount == 0)
{
log(LOG_ERR, "%s: called with non-tentative address %s(%s)\n",
- __func__, in_fmtaddr(ia->ia_addr.sin_addr),
+ __func__, in_fmtaddr(ipbuf, ia->ia_addr.sin_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
goto done;
}
@@ -1741,7 +1742,7 @@ arp_dad_timer(struct ifaddr *ifa)
arplog(LOG_DEBUG,
"%s: DAD complete for %s - no duplicates found\n",
if_name(ifa->ifa_ifp),
- in_fmtaddr(ia->ia_addr.sin_addr));
+ in_fmtaddr(ipbuf, ia->ia_addr.sin_addr));
dp->dad_arp_announce = ANNOUNCE_NUM;
goto announce;
} else if (dp->dad_arp_acount < dp->dad_arp_announce) {
@@ -1758,7 +1759,7 @@ announce:
arplog(LOG_DEBUG,
"%s: ARP announcement complete for %s\n",
if_name(ifa->ifa_ifp),
- in_fmtaddr(ia->ia_addr.sin_addr));
+ in_fmtaddr(ipbuf, ia->ia_addr.sin_addr));
}
TAILQ_REMOVE(&dadq, dp, dad_list);
@@ -1777,7 +1778,10 @@ arp_dad_duplicated(struct ifaddr *ifa, c
{
struct in_ifaddr *ia = (struct in_ifaddr *)ifa;
struct ifnet *ifp = ifa->ifa_ifp;
- const char *iastr = in_fmtaddr(ia->ia_addr.sin_addr);
+ char ipbuf[INET_ADDRSTRLEN];
+ const char *iastr;
+
+ iastr = in_fmtaddr(ipbuf, ia->ia_addr.sin_addr);
if (ia->ia4_flags & (IN_IFF_TENTATIVE|IN_IFF_DUPLICATED)) {
log(LOG_ERR,
Index: src/sys/netinet/in.c
diff -u src/sys/netinet/in.c:1.195 src/sys/netinet/in.c:1.196
--- src/sys/netinet/in.c:1.195 Mon Jan 2 23:00:25 2017
+++ src/sys/netinet/in.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in.c,v 1.195 2017/01/02 23:00:25 christos Exp $ */
+/* $NetBSD: in.c,v 1.196 2017/01/16 07:33:36 ryo Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.195 2017/01/02 23:00:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.196 2017/01/16 07:33:36 ryo Exp $");
#include "arp.h"
@@ -297,19 +297,18 @@ in_socktrim(struct sockaddr_in *ap)
/*
* Routine to take an Internet address and convert into a
* "dotted quad" representation for printing.
+ * Caller has to make sure that buf is at least INET_ADDRSTRLEN long.
*/
const char *
-in_fmtaddr(struct in_addr addr)
+in_fmtaddr(char *buf, struct in_addr addr)
{
- static char buf[sizeof("123.456.789.123")];
-
addr.s_addr = ntohl(addr.s_addr);
- snprintf(buf, sizeof(buf), "%d.%d.%d.%d",
- (addr.s_addr >> 24) & 0xFF,
- (addr.s_addr >> 16) & 0xFF,
- (addr.s_addr >> 8) & 0xFF,
- (addr.s_addr >> 0) & 0xFF);
+ snprintf(buf, INET_ADDRSTRLEN, "%d.%d.%d.%d",
+ (addr.s_addr >> 24) & 0xFF,
+ (addr.s_addr >> 16) & 0xFF,
+ (addr.s_addr >> 8) & 0xFF,
+ (addr.s_addr >> 0) & 0xFF);
return buf;
}
Index: src/sys/netinet/in_var.h
diff -u src/sys/netinet/in_var.h:1.91 src/sys/netinet/in_var.h:1.92
--- src/sys/netinet/in_var.h:1.91 Mon Jan 2 23:00:25 2017
+++ src/sys/netinet/in_var.h Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in_var.h,v 1.91 2017/01/02 23:00:25 christos Exp $ */
+/* $NetBSD: in_var.h,v 1.92 2017/01/16 07:33:36 ryo Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -414,7 +414,7 @@ void in_savemkludge(struct in_ifaddr *);
void in_restoremkludge(struct in_ifaddr *, struct ifnet *);
void in_purgemkludge(struct ifnet *);
void in_setmaxmtu(void);
-const char *in_fmtaddr(struct in_addr);
+const char *in_fmtaddr(char *, struct in_addr);
int in_control(struct socket *, u_long, void *, struct ifnet *);
void in_purgeaddr(struct ifaddr *);
void in_purgeif(struct ifnet *);
Index: src/sys/netinet/ip_carp.c
diff -u src/sys/netinet/ip_carp.c:1.81 src/sys/netinet/ip_carp.c:1.82
--- src/sys/netinet/ip_carp.c:1.81 Wed Dec 28 07:26:25 2016
+++ src/sys/netinet/ip_carp.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_carp.c,v 1.81 2016/12/28 07:26:25 ozaki-r Exp $ */
+/* $NetBSD: ip_carp.c,v 1.82 2017/01/16 07:33:36 ryo Exp $ */
/* $OpenBSD: ip_carp.c,v 1.113 2005/11/04 08:11:54 mcbride Exp $ */
/*
@@ -33,7 +33,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.81 2016/12/28 07:26:25 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.82 2017/01/16 07:33:36 ryo Exp $");
/*
* TODO:
@@ -690,22 +690,23 @@ carp_proto_input_c(struct mbuf *m, struc
if (carp_hmac_verify(sc, ch->carp_counter, ch->carp_md)) {
struct ip *ip;
struct ip6_hdr *ip6;
+ char ip6buf[INET6_ADDRSTRLEN];
+ char ipbuf[INET_ADDRSTRLEN];
CARP_STATINC(CARP_STAT_BADAUTH);
sc->sc_if.if_ierrors++;
switch(af) {
-
case AF_INET:
ip = mtod(m, struct ip *);
CARP_LOG(sc, ("incorrect hash from %s",
- in_fmtaddr(ip->ip_src)));
+ in_fmtaddr(ipbuf, ip->ip_src)));
break;
case AF_INET6:
ip6 = mtod(m, struct ip6_hdr *);
CARP_LOG(sc, ("incorrect hash from %s",
- ip6_sprintf(&ip6->ip6_src)));
+ ip6_sprintf(ip6buf, &ip6->ip6_src)));
break;
default: CARP_LOG(sc, ("incorrect hash"));
Index: src/sys/netinet/ip_output.c
diff -u src/sys/netinet/ip_output.c:1.267 src/sys/netinet/ip_output.c:1.268
--- src/sys/netinet/ip_output.c:1.267 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet/ip_output.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_output.c,v 1.267 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: ip_output.c,v 1.268 2017/01/16 07:33:36 ryo Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.267 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.268 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -620,9 +620,10 @@ sendit:
if ((ia != NULL || (flags & IP_FORWARDING) == 0) &&
(error = ip_ifaddrvalid(ia)) != 0)
{
+ char ipbuf[INET_ADDRSTRLEN];
arplog(LOG_ERR,
"refusing to send from invalid address %s (pid %d)\n",
- in_fmtaddr(ip->ip_src), curproc->p_pid);
+ in_fmtaddr(ipbuf, ip->ip_src), curproc->p_pid);
IP_STATINC(IP_STAT_ODROPPED);
if (error == 1)
/*
Index: src/sys/netinet/sctp_asconf.c
diff -u src/sys/netinet/sctp_asconf.c:1.7 src/sys/netinet/sctp_asconf.c:1.8
--- src/sys/netinet/sctp_asconf.c:1.7 Thu Dec 15 03:54:15 2016
+++ src/sys/netinet/sctp_asconf.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: sctp_asconf.c,v 1.7 2016/12/15 03:54:15 ozaki-r Exp $ */
+/* $NetBSD: sctp_asconf.c,v 1.8 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: sctp_asconf.c,v 1.25 2005/06/16 20:44:24 jinmei Exp $ */
/*
@@ -30,7 +30,7 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sctp_asconf.c,v 1.7 2016/12/15 03:54:15 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sctp_asconf.c,v 1.8 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_ipsec.h"
@@ -967,6 +967,9 @@ sctp_asconf_queue_add(struct sctp_tcb *s
/* correlation_id filled in during send routine later... */
if (ifa->ifa_addr->sa_family == AF_INET6) {
/* IPv6 address */
+#ifdef SCTP_DEBUG
+ char ip6buf[INET6_ADDRSTRLEN];
+#endif
struct sockaddr_in6 *sin6;
sin6 = (struct sockaddr_in6 *)ifa->ifa_addr;
@@ -978,7 +981,7 @@ sctp_asconf_queue_add(struct sctp_tcb *s
memcpy(&aa->ap.addrp.addr, &sin6->sin6_addr,
sizeof(struct in6_addr));
#ifdef SCTP_DEBUG
- strlcpy(buf, ip6_sprintf(&sin6->sin6_addr), sizeof(buf));
+ strlcpy(buf, ip6_sprintf(ip6buf, &sin6->sin6_addr), sizeof(buf));
#endif /* SCTP_DEBUG */
} else if (ifa->ifa_addr->sa_family == AF_INET) {
@@ -1664,11 +1667,12 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb *
* note: this would leave the address on both inp and asoc lists
*/
if (ifa->ifa_addr->sa_family == AF_INET6) {
+ char ip6buf[INET6_ADDRSTRLEN];
struct sockaddr_in6 *sin6;
sin6 = (struct sockaddr_in6 *)ifa->ifa_addr;
#ifdef SCTP_DEBUG
- strlcpy(buf, ip6_sprintf(&sin6->sin6_addr), sizeof(buf));
+ strlcpy(buf, ip6_sprintf(ip6buf, &sin6->sin6_addr), sizeof(buf));
#endif /* SCTP_DEBUG */
if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
/* we skip unspecifed addresses */
Index: src/sys/netinet6/icmp6.c
diff -u src/sys/netinet6/icmp6.c:1.204 src/sys/netinet6/icmp6.c:1.205
--- src/sys/netinet6/icmp6.c:1.204 Fri Jan 13 10:38:37 2017
+++ src/sys/netinet6/icmp6.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: icmp6.c,v 1.204 2017/01/13 10:38:37 ozaki-r Exp $ */
+/* $NetBSD: icmp6.c,v 1.205 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.204 2017/01/13 10:38:37 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.205 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -154,7 +154,7 @@ static int icmp6_redirect_lowat = -1;
static void icmp6_errcount(u_int, int, int);
static int icmp6_rip6_input(struct mbuf **, int);
static int icmp6_ratelimit(const struct in6_addr *, const int, const int);
-static const char *icmp6_redirect_diag(struct in6_addr *,
+static const char *icmp6_redirect_diag(char *, size_t, struct in6_addr *,
struct in6_addr *, struct in6_addr *);
static struct mbuf *ni6_input(struct mbuf *, int);
static struct mbuf *ni6_nametodns(const char *, int, int);
@@ -455,6 +455,7 @@ icmp6_input(struct mbuf **mp, int *offp,
int code, sum, noff;
struct ifnet *rcvif;
struct psref psref;
+ char ip6buf[INET6_ADDRSTRLEN], ip6buf2[INET6_ADDRSTRLEN];
rcvif = m_get_rcvif_psref(m, &psref);
if (__predict_false(rcvif == NULL))
@@ -503,7 +504,7 @@ icmp6_input(struct mbuf **mp, int *offp,
*/
if ((sum = in6_cksum(m, IPPROTO_ICMPV6, off, icmp6len)) != 0) {
nd6log(LOG_ERR, "ICMP6 checksum error(%d|%x) %s\n",
- icmp6->icmp6_type, sum, ip6_sprintf(&ip6->ip6_src));
+ icmp6->icmp6_type, sum, ip6_sprintf(ip6buf, &ip6->ip6_src));
ICMP6_STATINC(ICMP6_STAT_CHECKSUM);
icmp6_ifstat_inc(rcvif, ifs6_in_error);
goto freeit;
@@ -860,9 +861,11 @@ icmp6_input(struct mbuf **mp, int *offp,
break;
default:
- nd6log(LOG_DEBUG, "unknown type %d(src=%s, dst=%s, ifid=%d)\n",
- icmp6->icmp6_type, ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst),
+ nd6log(LOG_DEBUG,
+ "unknown type %d(src=%s, dst=%s, ifid=%d)\n",
+ icmp6->icmp6_type,
+ ip6_sprintf(ip6buf, &ip6->ip6_src),
+ ip6_sprintf(ip6buf2, &ip6->ip6_dst),
rcvif ? rcvif->if_index : 0);
if (icmp6->icmp6_type < ICMP6_ECHO_REQUEST) {
/* ICMPv6 error: MUST deliver it by spec... */
@@ -2129,10 +2132,11 @@ icmp6_reflect(struct mbuf *m, size_t off
&ip6->ip6_src);
rtcache_free(&ro);
if (e != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_DEBUG,
"source can't be determined: "
"dst=%s, error=%d\n",
- ip6_sprintf(&sin6.sin6_addr), e);
+ ip6_sprintf(ip6buf, &sin6.sin6_addr), e);
goto bad;
}
}
@@ -2180,12 +2184,15 @@ icmp6_reflect(struct mbuf *m, size_t off
}
static const char *
-icmp6_redirect_diag(struct in6_addr *src6, struct in6_addr *dst6,
+icmp6_redirect_diag(char *buf, size_t buflen, struct in6_addr *src6, struct in6_addr *dst6,
struct in6_addr *tgt6)
{
- static char buf[1024];
- snprintf(buf, sizeof(buf), "(src=%s dst=%s tgt=%s)",
- ip6_sprintf(src6), ip6_sprintf(dst6), ip6_sprintf(tgt6));
+ char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN];
+ char ip6buft[INET6_ADDRSTRLEN];
+
+ snprintf(buf, buflen, "(src=%s dst=%s tgt=%s)",
+ ip6_sprintf(ip6bufs, src6), ip6_sprintf(ip6bufd, dst6),
+ ip6_sprintf(ip6buft, tgt6));
return buf;
}
@@ -2206,6 +2213,8 @@ icmp6_redirect_input(struct mbuf *m, int
struct in6_addr reddst6;
union nd_opts ndopts;
struct psref psref;
+ char ip6buf[INET6_ADDRSTRLEN];
+ char diagbuf[256];
ifp = m_get_rcvif_psref(m, &psref);
if (ifp == NULL)
@@ -2235,14 +2244,14 @@ icmp6_redirect_input(struct mbuf *m, int
if (!IN6_IS_ADDR_LINKLOCAL(&src6)) {
nd6log(LOG_ERR,
"ICMP6 redirect sent from %s rejected; "
- "must be from linklocal\n", ip6_sprintf(&src6));
+ "must be from linklocal\n", ip6_sprintf(ip6buf, &src6));
goto bad;
}
if (ip6->ip6_hlim != 255) {
nd6log(LOG_ERR,
"ICMP6 redirect sent from %s rejected; "
"hlim=%d (must be 255)\n",
- ip6_sprintf(&src6), ip6->ip6_hlim);
+ ip6_sprintf(ip6buf, &src6), ip6->ip6_hlim);
goto bad;
}
{
@@ -2258,7 +2267,8 @@ icmp6_redirect_input(struct mbuf *m, int
nd6log(LOG_ERR,
"ICMP6 redirect rejected; no route "
"with inet6 gateway found for redirect dst: %s\n",
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
rt_unref(rt);
goto bad;
}
@@ -2268,15 +2278,17 @@ icmp6_redirect_input(struct mbuf *m, int
nd6log(LOG_ERR,
"ICMP6 redirect rejected; "
"not equal to gw-for-src=%s (must be same): %s\n",
- ip6_sprintf(gw6),
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ ip6_sprintf(ip6buf, gw6),
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
rt_unref(rt);
goto bad;
}
} else {
nd6log(LOG_ERR, "ICMP6 redirect rejected; "
"no route found for redirect dst: %s\n",
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
goto bad;
}
rt_unref(rt);
@@ -2285,7 +2297,8 @@ icmp6_redirect_input(struct mbuf *m, int
if (IN6_IS_ADDR_MULTICAST(&reddst6)) {
nd6log(LOG_ERR, "ICMP6 redirect rejected; "
"redirect dst must be unicast: %s\n",
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
goto bad;
}
@@ -2297,7 +2310,8 @@ icmp6_redirect_input(struct mbuf *m, int
if (!is_router && !is_onlink) {
nd6log(LOG_ERR, "ICMP6 redirect rejected; "
"neither router case nor onlink case: %s\n",
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
goto bad;
}
/* validation passed */
@@ -2306,7 +2320,8 @@ icmp6_redirect_input(struct mbuf *m, int
nd6_option_init(nd_rd + 1, icmp6len, &ndopts);
if (nd6_options(&ndopts) < 0) {
nd6log(LOG_INFO, "invalid ND option, rejected: %s\n",
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
/* nd6_options have incremented stats */
goto freeit;
}
@@ -2319,8 +2334,10 @@ icmp6_redirect_input(struct mbuf *m, int
if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
"(if %d, icmp6 packet %d): %s\n",
- ip6_sprintf(&redtgt6), ifp->if_addrlen, lladdrlen - 2,
- icmp6_redirect_diag(&src6, &reddst6, &redtgt6));
+ ip6_sprintf(ip6buf, &redtgt6),
+ ifp->if_addrlen, lladdrlen - 2,
+ icmp6_redirect_diag(diagbuf, sizeof(diagbuf),
+ &src6, &reddst6, &redtgt6));
goto bad;
}
Index: src/sys/netinet6/in6.c
diff -u src/sys/netinet6/in6.c:1.233 src/sys/netinet6/in6.c:1.234
--- src/sys/netinet6/in6.c:1.233 Thu Jan 12 04:43:59 2017
+++ src/sys/netinet6/in6.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in6.c,v 1.233 2017/01/12 04:43:59 ozaki-r Exp $ */
+/* $NetBSD: in6.c,v 1.234 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: in6.c,v 1.198 2001/07/18 09:12:38 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.233 2017/01/12 04:43:59 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.234 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -796,6 +796,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
struct rtentry *rt;
int dad_delay, was_tentative;
struct in6_ifaddr *ia = iap ? *iap : NULL;
+ char ip6buf[INET6_ADDRSTRLEN];
KASSERT((iap == NULL && psref == NULL) ||
(iap != NULL && psref != NULL));
@@ -913,7 +914,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
* configuration mistake or a tool's bug.
*/
nd6log(LOG_INFO, "valid lifetime is 0 for %s\n",
- ip6_sprintf(&ifra->ifra_addr.sin6_addr));
+ ip6_sprintf(ip6buf, &ifra->ifra_addr.sin6_addr));
if (ia == NULL)
return 0; /* there's nothing to do */
@@ -973,7 +974,8 @@ in6_update_ifa1(struct ifnet *ifp, struc
nd6log(LOG_INFO, "the prefix length of an"
" existing (%s) autoconf address should"
" not be changed\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr));
+ ip6_sprintf(ip6buf,
+ &ia->ia_addr.sin6_addr));
error = EINVAL;
if (hostIsNew)
free(ia, M_IFADDR);
@@ -1107,7 +1109,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
if (!imm) {
nd6log(LOG_ERR,
"addmulti failed for %s on %s (errno=%d)\n",
- ip6_sprintf(&llsol), if_name(ifp), error);
+ ip6_sprintf(ip6buf, &llsol), if_name(ifp), error);
goto cleanup;
}
LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
@@ -1168,7 +1170,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
if (!imm) {
nd6log(LOG_WARNING,
"addmulti failed for %s on %s (errno=%d)\n",
- ip6_sprintf(&mltaddr.sin6_addr),
+ ip6_sprintf(ip6buf, &mltaddr.sin6_addr),
if_name(ifp), error);
goto cleanup;
}
@@ -1192,7 +1194,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
dad_delay)) == NULL) { /* XXX jinmei */
nd6log(LOG_WARNING,
"addmulti failed for %s on %s (errno=%d)\n",
- ip6_sprintf(&mltaddr.sin6_addr),
+ ip6_sprintf(ip6buf, &mltaddr.sin6_addr),
if_name(ifp), error);
/* XXX not very fatal, go on... */
} else {
@@ -1249,7 +1251,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
if (!imm) {
nd6log(LOG_WARNING,
"addmulti failed for %s on %s (errno=%d)\n",
- ip6_sprintf(&mltaddr.sin6_addr),
+ ip6_sprintf(ip6buf, &mltaddr.sin6_addr),
if_name(ifp), error);
goto cleanup;
} else {
@@ -1874,16 +1876,13 @@ bestia(struct in6_ifaddr *best_ia, struc
/*
* Convert IP6 address to printable (loggable) representation.
+ * Caller has to make sure that ip6buf is at least INET6_ADDRSTRLEN long.
*/
char *
-ip6_sprintf(const struct in6_addr *addr)
+ip6_sprintf(char *ip6buf, const struct in6_addr *addr)
{
- static int ip6round = 0;
- static char ip6buf[8][INET6_ADDRSTRLEN];
- char *cp = ip6buf[ip6round++ & 7];
-
- in6_print(cp, INET6_ADDRSTRLEN, addr);
- return cp;
+ in6_print(ip6buf, INET6_ADDRSTRLEN, addr);
+ return ip6buf;
}
/*
@@ -2103,6 +2102,7 @@ in6_if_link_up(struct ifnet *ifp)
struct ifaddr *ifa;
struct in6_ifaddr *ia;
int s, bound;
+ char ip6buf[INET6_ADDRSTRLEN];
/* Ensure it's sane to run DAD */
if (ifp->if_link_state == LINK_STATE_DOWN)
@@ -2128,7 +2128,8 @@ in6_if_link_up(struct ifnet *ifp)
if (if_do_dad(ifp)) {
ia->ia6_flags |= IN6_IFF_TENTATIVE;
nd6log(LOG_ERR, "%s marked tentative\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr));
+ ip6_sprintf(ip6buf,
+ &ia->ia_addr.sin6_addr));
} else if ((ia->ia6_flags & IN6_IFF_TENTATIVE) == 0)
rt_newaddrmsg(RTM_NEWADDR, ifa, 0, NULL);
}
@@ -2185,6 +2186,7 @@ in6_if_link_down(struct ifnet *ifp)
struct ifaddr *ifa;
struct in6_ifaddr *ia;
int s, bound;
+ char ip6buf[INET6_ADDRSTRLEN];
/* Any prefixes on this interface should be detached as well */
ND6_WLOCK();
@@ -2216,7 +2218,7 @@ in6_if_link_down(struct ifnet *ifp)
*/
if (!(ia->ia6_flags & IN6_IFF_DETACHED)) {
nd6log(LOG_DEBUG, "%s marked detached\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr));
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr));
ia->ia6_flags |= IN6_IFF_DETACHED;
ia->ia6_flags &=
~(IN6_IFF_TENTATIVE | IN6_IFF_DUPLICATED);
@@ -2420,6 +2422,7 @@ in6_lltable_rtcheck(struct ifnet *ifp,
const struct sockaddr *l3addr)
{
struct rtentry *rt;
+ char ip6buf[INET6_ADDRSTRLEN];
KASSERTMSG(l3addr->sa_family == AF_INET6,
"sin_family %d", l3addr->sa_family);
@@ -2443,7 +2446,8 @@ in6_lltable_rtcheck(struct ifnet *ifp,
}
pserialize_read_exit(s);
log(LOG_INFO, "IPv6 address: \"%s\" is not on the network\n",
- ip6_sprintf(&((const struct sockaddr_in6 *)l3addr)->sin6_addr));
+ ip6_sprintf(ip6buf,
+ &((const struct sockaddr_in6 *)l3addr)->sin6_addr));
if (rt != NULL)
rt_unref(rt);
return EINVAL;
Index: src/sys/netinet6/in6_gif.c
diff -u src/sys/netinet6/in6_gif.c:1.83 src/sys/netinet6/in6_gif.c:1.84
--- src/sys/netinet6/in6_gif.c:1.83 Fri Jan 6 03:25:13 2017
+++ src/sys/netinet6/in6_gif.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_gif.c,v 1.83 2017/01/06 03:25:13 knakahara Exp $ */
+/* $NetBSD: in6_gif.c,v 1.84 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: in6_gif.c,v 1.62 2001/07/29 04:27:25 itojun Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_gif.c,v 1.83 2017/01/06 03:25:13 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_gif.c,v 1.84 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -327,9 +327,10 @@ gif_validate6(const struct ip6_hdr *ip6,
rt = rtalloc1(&u.sa, 0);
if (rt == NULL || rt->rt_ifp != ifp) {
#if 0
+ char ip6buf[INET6_ADDRSTRLEN];
log(LOG_WARNING, "%s: packet from %s dropped "
"due to ingress filter\n", if_name(&sc->gif_if),
- ip6_sprintf(&u.sin6.sin6_addr));
+ ip6_sprintf(ip6buf, &u.sin6.sin6_addr));
#endif
if (rt != NULL)
rt_unref(rt);
Index: src/sys/netinet6/ip6_forward.c
diff -u src/sys/netinet6/ip6_forward.c:1.83 src/sys/netinet6/ip6_forward.c:1.84
--- src/sys/netinet6/ip6_forward.c:1.83 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet6/ip6_forward.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_forward.c,v 1.83 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: ip6_forward.c,v 1.84 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: ip6_forward.c,v 1.109 2002/09/11 08:10:17 sakane Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.83 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.84 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_gateway.h"
@@ -368,10 +368,13 @@ ip6_forward(struct mbuf *m, int srcrt)
if ((rt->rt_flags & (RTF_BLACKHOLE|RTF_REJECT)) == 0)
#endif
{
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufd[INET6_ADDRSTRLEN];
+
printf("ip6_forward: outgoing interface is loopback. "
"src %s, dst %s, nxt %d, rcvif %s, outif %s\n",
- ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst),
ip6->ip6_nxt, if_name(rcvif),
if_name(rt->rt_ifp));
}
Index: src/sys/netinet6/in6_src.c
diff -u src/sys/netinet6/in6_src.c:1.76 src/sys/netinet6/in6_src.c:1.77
--- src/sys/netinet6/in6_src.c:1.76 Thu Dec 8 05:16:34 2016
+++ src/sys/netinet6/in6_src.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_src.c,v 1.76 2016/12/08 05:16:34 ozaki-r Exp $ */
+/* $NetBSD: in6_src.c,v 1.77 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: in6_src.c,v 1.159 2005/10/19 01:40:32 t-momose Exp $ */
/*
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.76 2016/12/08 05:16:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.77 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -606,11 +606,13 @@ in6_selectroute(struct sockaddr_in6 *dst
if (dstsock->sin6_addr.s6_addr32[0] == 0 &&
dstsock->sin6_addr.s6_addr32[1] == 0 &&
!IN6_IS_ADDR_LOOPBACK(&dstsock->sin6_addr)) {
+ char ip6buf[INET6_ADDRSTRLEN];
printf("in6_selectroute: strange destination %s\n",
- ip6_sprintf(&dstsock->sin6_addr));
+ ip6_sprintf(ip6buf, &dstsock->sin6_addr));
} else {
+ char ip6buf[INET6_ADDRSTRLEN];
printf("in6_selectroute: destination = %s%%%d\n",
- ip6_sprintf(&dstsock->sin6_addr),
+ ip6_sprintf(ip6buf, &dstsock->sin6_addr),
dstsock->sin6_scope_id); /* for debug */
}
#endif
Index: src/sys/netinet6/in6_var.h
diff -u src/sys/netinet6/in6_var.h:1.89 src/sys/netinet6/in6_var.h:1.90
--- src/sys/netinet6/in6_var.h:1.89 Tue Jan 10 05:42:34 2017
+++ src/sys/netinet6/in6_var.h Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_var.h,v 1.89 2017/01/10 05:42:34 ozaki-r Exp $ */
+/* $NetBSD: in6_var.h,v 1.90 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: in6_var.h,v 1.81 2002/06/08 11:16:51 itojun Exp $ */
/*
@@ -806,7 +806,7 @@ struct in6_ifaddr *
in6ifa_ifpwithaddr_psref(const struct ifnet *, const struct in6_addr *,
struct psref *);
struct in6_ifaddr *in6ifa_ifwithaddr(const struct in6_addr *, uint32_t);
-char *ip6_sprintf(const struct in6_addr *);
+char *ip6_sprintf(char *, const struct in6_addr *);
int in6_matchlen(struct in6_addr *, struct in6_addr *);
int in6_are_prefix_equal(struct in6_addr *, struct in6_addr *, int);
void in6_prefixlen2mask(struct in6_addr *, int);
Index: src/sys/netinet6/ip6_input.c
diff -u src/sys/netinet6/ip6_input.c:1.171 src/sys/netinet6/ip6_input.c:1.172
--- src/sys/netinet6/ip6_input.c:1.171 Thu Dec 8 05:16:34 2016
+++ src/sys/netinet6/ip6_input.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_input.c,v 1.171 2016/12/08 05:16:34 ozaki-r Exp $ */
+/* $NetBSD: ip6_input.c,v 1.172 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.171 2016/12/08 05:16:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.172 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_gateway.h"
@@ -528,9 +528,11 @@ ip6_input(struct mbuf *m, struct ifnet *
goto hbhcheck;
} else {
/* address is not ready, so discard the packet. */
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufd[INET6_ADDRSTRLEN];
nd6log(LOG_INFO, "packet to an unready address %s->%s\n",
- ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst));
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst));
goto bad_unref;
}
Index: src/sys/netinet6/ip6_mroute.c
diff -u src/sys/netinet6/ip6_mroute.c:1.113 src/sys/netinet6/ip6_mroute.c:1.114
--- src/sys/netinet6/ip6_mroute.c:1.113 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet6/ip6_mroute.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_mroute.c,v 1.113 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: ip6_mroute.c,v 1.114 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: ip6_mroute.c,v 1.49 2001/07/25 09:21:18 jinmei Exp $ */
/*
@@ -117,7 +117,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_mroute.c,v 1.113 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_mroute.c,v 1.114 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -790,6 +790,7 @@ add_m6fc(struct mf6cctl *mfccp)
struct rtdetq *rte;
u_short nstl;
int s;
+ char ip6bufo[INET6_ADDRSTRLEN], ip6bufm[INET6_ADDRSTRLEN];
MF6CFIND(mfccp->mf6cc_origin.sin6_addr,
mfccp->mf6cc_mcastgrp.sin6_addr, rt);
@@ -799,8 +800,10 @@ add_m6fc(struct mf6cctl *mfccp)
#ifdef MRT6DEBUG
if (mrt6debug & DEBUG_MFC)
log(LOG_DEBUG,"add_m6fc update o %s g %s p %x\n",
- ip6_sprintf(&mfccp->mf6cc_origin.sin6_addr),
- ip6_sprintf(&mfccp->mf6cc_mcastgrp.sin6_addr),
+ ip6_sprintf(ip6bufo,
+ &mfccp->mf6cc_origin.sin6_addr),
+ ip6_sprintf(ip6bufm,
+ &mfccp->mf6cc_mcastgrp.sin6_addr),
mfccp->mf6cc_parent);
#endif
@@ -828,16 +831,20 @@ add_m6fc(struct mf6cctl *mfccp)
log(LOG_ERR,
"add_m6fc: %s o %s g %s p %x dbx %p\n",
"multiple kernel entries",
- ip6_sprintf(&mfccp->mf6cc_origin.sin6_addr),
- ip6_sprintf(&mfccp->mf6cc_mcastgrp.sin6_addr),
+ ip6_sprintf(ip6bufo,
+ &mfccp->mf6cc_origin.sin6_addr),
+ ip6_sprintf(ip6bufm,
+ &mfccp->mf6cc_mcastgrp.sin6_addr),
mfccp->mf6cc_parent, rt->mf6c_stall);
#ifdef MRT6DEBUG
if (mrt6debug & DEBUG_MFC)
log(LOG_DEBUG,
"add_m6fc o %s g %s p %x dbg %p\n",
- ip6_sprintf(&mfccp->mf6cc_origin.sin6_addr),
- ip6_sprintf(&mfccp->mf6cc_mcastgrp.sin6_addr),
+ ip6_sprintf(ip6bufo,
+ &mfccp->mf6cc_origin.sin6_addr),
+ ip6_sprintf(ip6bufm,
+ &mfccp->mf6cc_mcastgrp.sin6_addr),
mfccp->mf6cc_parent, rt->mf6c_stall);
#endif
@@ -879,8 +886,10 @@ add_m6fc(struct mf6cctl *mfccp)
log(LOG_DEBUG,
"add_mfc no upcall h %ld o %s g %s p %x\n",
hash,
- ip6_sprintf(&mfccp->mf6cc_origin.sin6_addr),
- ip6_sprintf(&mfccp->mf6cc_mcastgrp.sin6_addr),
+ ip6_sprintf(ip6bufo,
+ &mfccp->mf6cc_origin.sin6_addr),
+ ip6_sprintf(ip6bufm,
+ &mfccp->mf6cc_mcastgrp.sin6_addr),
mfccp->mf6cc_parent);
#endif
@@ -979,10 +988,12 @@ del_m6fc(struct mf6cctl *mfccp)
hash = MF6CHASH(origin.sin6_addr, mcastgrp.sin6_addr);
#ifdef MRT6DEBUG
- if (mrt6debug & DEBUG_MFC)
+ if (mrt6debug & DEBUG_MFC) {
+ char ip6bufo[INET6_ADDRSTRLEN], ip6bufm[INET6_ADDRSTRLEN];
log(LOG_DEBUG,"del_m6fc orig %s mcastgrp %s\n",
- ip6_sprintf(&origin.sin6_addr),
- ip6_sprintf(&mcastgrp.sin6_addr));
+ ip6_sprintf(ip6bufo, &origin.sin6_addr),
+ ip6_sprintf(ip6bufm, &mcastgrp.sin6_addr));
+ }
#endif
s = splsoftnet();
@@ -1044,11 +1055,13 @@ ip6_mforward(struct ip6_hdr *ip6, struct
int s;
mifi_t mifi;
struct sockaddr_in6 sin6;
+ char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN];
#ifdef MRT6DEBUG
if (mrt6debug & DEBUG_FORWARD)
log(LOG_DEBUG, "ip6_mforward: src %s, dst %s, ifindex %d\n",
- ip6_sprintf(&ip6->ip6_src), ip6_sprintf(&ip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst),
ifp->if_index);
#endif
@@ -1075,8 +1088,8 @@ ip6_mforward(struct ip6_hdr *ip6, struct
log(LOG_DEBUG,
"cannot forward "
"from %s to %s nxt %d received on %s\n",
- ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst),
ip6->ip6_nxt,
m->m_pkthdr.rcvif_index ?
if_name(m_get_rcvif_NOMPSAFE(m)) : "?");
@@ -1115,8 +1128,8 @@ ip6_mforward(struct ip6_hdr *ip6, struct
#ifdef MRT6DEBUG
if (mrt6debug & (DEBUG_FORWARD | DEBUG_MFC))
log(LOG_DEBUG, "ip6_mforward: no rte s %s g %s\n",
- ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst));
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst));
#endif
/*
@@ -1315,10 +1328,16 @@ expire_upcalls(void *unused)
mfc->mf6c_expire != 0 &&
--mfc->mf6c_expire == 0) {
#ifdef MRT6DEBUG
- if (mrt6debug & DEBUG_EXPIRE)
- log(LOG_DEBUG, "expire_upcalls: expiring (%s %s)\n",
- ip6_sprintf(&mfc->mf6c_origin.sin6_addr),
- ip6_sprintf(&mfc->mf6c_mcastgrp.sin6_addr));
+ if (mrt6debug & DEBUG_EXPIRE) {
+ char ip6bufo[INET6_ADDRSTRLEN];
+ char ip6bufm[INET6_ADDRSTRLEN];
+ log(LOG_DEBUG,
+ "expire_upcalls: expiring (%s %s)\n",
+ ip6_sprintf(ip6bufo,
+ &mfc->mf6c_origin.sin6_addr),
+ ip6_sprintf(ip6bufm,
+ &mfc->mf6c_mcastgrp.sin6_addr));
+ }
#endif
/*
* drop all the packets
@@ -1621,14 +1640,17 @@ phyint_send(struct ip6_hdr *ip6, struct
icmp6_error(mb_copy, ICMP6_PACKET_TOO_BIG, 0, linkmtu);
else {
#ifdef MRT6DEBUG
- if (mrt6debug & DEBUG_XMIT)
+ if (mrt6debug & DEBUG_XMIT) {
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufd[INET6_ADDRSTRLEN];
log(LOG_DEBUG,
"phyint_send: packet too big on %s o %s g %s"
" size %d(discarded)\n",
if_name(ifp),
- ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst),
mb_copy->m_pkthdr.len);
+ }
#endif /* MRT6DEBUG */
m_freem(mb_copy); /* simply discard the packet */
}
@@ -1646,9 +1668,12 @@ register_send(struct ip6_hdr *ip6, struc
struct mrt6msg *im6;
#ifdef MRT6DEBUG
- if (mrt6debug)
+ if (mrt6debug) {
+ char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN];
log(LOG_DEBUG, "** IPv6 register_send **\n src %s dst %s\n",
- ip6_sprintf(&ip6->ip6_src), ip6_sprintf(&ip6->ip6_dst));
+ ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst));
+ }
#endif
PIM6_STATINC(PIM6_STAT_SND_REGISTERS);
@@ -1829,27 +1854,31 @@ pim6_input(struct mbuf **mp, int *offp,
* Validate length
*/
if (pimlen < PIM6_REG_MINLEN) {
- PIM6_STATINC(PIM6_STAT_RCV_TOOSHORT);
- PIM6_STATINC(PIM6_STAT_RCV_BADREGISTERS);
#ifdef MRT6DEBUG
+ char ip6buf[INET6_ADDRSTRLEN];
log(LOG_ERR,
"pim6_input: register packet size too "
"small %d from %s\n",
- pimlen, ip6_sprintf(&ip6->ip6_src));
+ pimlen, ip6_sprintf(ip6buf, &ip6->ip6_src));
#endif
+ PIM6_STATINC(PIM6_STAT_RCV_TOOSHORT);
+ PIM6_STATINC(PIM6_STAT_RCV_BADREGISTERS);
m_freem(m);
return (IPPROTO_DONE);
}
eip6 = (struct ip6_hdr *) (reghdr + 1);
#ifdef MRT6DEBUG
- if (mrt6debug & DEBUG_PIM)
+ if (mrt6debug & DEBUG_PIM) {
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufd[INET6_ADDRSTRLEN];
log(LOG_DEBUG,
"pim6_input[register], eip6: %s -> %s, "
"eip6 plen %d\n",
- ip6_sprintf(&eip6->ip6_src),
- ip6_sprintf(&eip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &eip6->ip6_src),
+ ip6_sprintf(ip6bufd, &eip6->ip6_dst),
ntohs(eip6->ip6_plen));
+ }
#endif
/* verify the version number of the inner packet */
@@ -1868,11 +1897,13 @@ pim6_input(struct mbuf **mp, int *offp,
if (!IN6_IS_ADDR_MULTICAST(&eip6->ip6_dst)) {
PIM6_STATINC(PIM6_STAT_RCV_BADREGISTERS);
#ifdef MRT6DEBUG
- if (mrt6debug & DEBUG_PIM)
+ if (mrt6debug & DEBUG_PIM) {
+ char ip6buf[INET6_ADDRSTRLEN];
log(LOG_DEBUG,
"pim6_input: inner packet of register "
"is not multicast %s\n",
- ip6_sprintf(&eip6->ip6_dst));
+ ip6_sprintf(ip6buf, &eip6->ip6_dst));
+ }
#endif
m_freem(m);
return (IPPROTO_DONE);
@@ -1898,11 +1929,13 @@ pim6_input(struct mbuf **mp, int *offp,
m_adj(m, off + PIM_MINLEN);
#ifdef MRT6DEBUG
if (mrt6debug & DEBUG_PIM) {
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufd[INET6_ADDRSTRLEN];
log(LOG_DEBUG,
"pim6_input: forwarding decapsulated register: "
"src %s, dst %s, mif %d\n",
- ip6_sprintf(&eip6->ip6_src),
- ip6_sprintf(&eip6->ip6_dst),
+ ip6_sprintf(ip6bufs, &eip6->ip6_src),
+ ip6_sprintf(ip6bufd, &eip6->ip6_dst),
reg_mif_num);
}
#endif
Index: src/sys/netinet6/ip6_output.c
diff -u src/sys/netinet6/ip6_output.c:1.180 src/sys/netinet6/ip6_output.c:1.181
--- src/sys/netinet6/ip6_output.c:1.180 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet6/ip6_output.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip6_output.c,v 1.180 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: ip6_output.c,v 1.181 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */
/*
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.180 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.181 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -581,9 +581,10 @@ ip6_output(
/* Ensure we only send from a valid address. */
if ((error = ip6_ifaddrvalid(&src0)) != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_ERR,
"refusing to send from invalid address %s (pid %d)\n",
- ip6_sprintf(&src0), curproc->p_pid);
+ ip6_sprintf(ip6buf, &src0), curproc->p_pid);
IP6_STATINC(IP6_STAT_ODROPPED);
in6_ifstat_inc(origifp, ifs6_out_discard);
if (error == 1)
Index: src/sys/netinet6/mld6.c
diff -u src/sys/netinet6/mld6.c:1.77 src/sys/netinet6/mld6.c:1.78
--- src/sys/netinet6/mld6.c:1.77 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet6/mld6.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mld6.c,v 1.77 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: mld6.c,v 1.78 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: mld6.c,v 1.25 2001/01/16 14:14:18 itojun Exp $ */
/*
@@ -102,7 +102,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.77 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.78 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -373,9 +373,12 @@ mld_input(struct mbuf *m, int off)
* though RFC3590 says "SHOULD log" if the source of a query
* is the unspecified address.
*/
+ char ip6bufs[INET6_ADDRSTRLEN];
+ char ip6bufm[INET6_ADDRSTRLEN];
log(LOG_INFO,
"mld_input: src %s is not link-local (grp=%s)\n",
- ip6_sprintf(&ip6->ip6_src), ip6_sprintf(&mldh->mld_addr));
+ ip6_sprintf(ip6bufs,&ip6->ip6_src),
+ ip6_sprintf(ip6bufm, &mldh->mld_addr));
#endif
goto out;
}
Index: src/sys/netinet6/nd6.c
diff -u src/sys/netinet6/nd6.c:1.224 src/sys/netinet6/nd6.c:1.225
--- src/sys/netinet6/nd6.c:1.224 Wed Jan 11 13:08:29 2017
+++ src/sys/netinet6/nd6.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6.c,v 1.224 2017/01/11 13:08:29 ozaki-r Exp $ */
+/* $NetBSD: nd6.c,v 1.225 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.224 2017/01/11 13:08:29 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.225 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -920,18 +920,19 @@ nd6_assert_purged(struct ifnet *ifp)
{
struct nd_defrouter *dr;
struct nd_prefix *pr;
+ char ip6buf[INET6_ADDRSTRLEN] __diagused;
ND6_RLOCK();
ND_DEFROUTER_LIST_FOREACH(dr) {
KASSERTMSG(dr->ifp != ifp,
"defrouter %s remains on %s",
- ip6_sprintf(&dr->rtaddr), ifp->if_xname);
+ ip6_sprintf(ip6buf, &dr->rtaddr), ifp->if_xname);
}
ND_PREFIX_LIST_FOREACH(pr) {
KASSERTMSG(pr->ndpr_ifp != ifp,
"prefix %s/%d remains on %s",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf, &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, ifp->if_xname);
}
ND6_UNLOCK();
@@ -1590,9 +1591,10 @@ nd6_rtrequest(int req, struct rtentry *r
if (in6_setscope(&llsol, ifp, NULL))
goto out;
if (!in6_addmulti(&llsol, ifp, &error, 0)) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_ERR, "%s: failed to join "
"%s (errno=%d)\n", if_name(ifp),
- ip6_sprintf(&llsol), error);
+ ip6_sprintf(ip6buf, &llsol), error);
}
}
}
@@ -2341,10 +2343,11 @@ nd6_output(struct ifnet *ifp, struct ifn
if (ln == NULL) {
if ((ifp->if_flags & IFF_POINTOPOINT) == 0 &&
!(ND_IFINFO(ifp)->flags & ND6_IFF_PERFORMNUD)) {
+ char ip6buf[INET6_ADDRSTRLEN];
log(LOG_DEBUG,
"nd6_output: can't allocate llinfo for %s "
"(ln=%p, rt=%p)\n",
- ip6_sprintf(&dst->sin6_addr), ln, rt);
+ ip6_sprintf(ip6buf, &dst->sin6_addr), ln, rt);
senderr(EIO); /* XXX: good error? */
}
goto sendpkt; /* send anyway */
@@ -2690,9 +2693,10 @@ fill_drlist(void *oldp, size_t *oldlenp,
memset(d, 0, sizeof(*d));
sockaddr_in6_init(&d->rtaddr, &dr->rtaddr, 0, 0, 0);
if (sa6_recoverscope(&d->rtaddr)) {
+ char ip6buf[INET6_ADDRSTRLEN];
log(LOG_ERR,
"scope error in router list (%s)\n",
- ip6_sprintf(&d->rtaddr.sin6_addr));
+ ip6_sprintf(ip6buf, &d->rtaddr.sin6_addr));
/* XXX: press on... */
}
d->flags = dr->flags;
@@ -2726,6 +2730,7 @@ fill_prlist(void *oldp, size_t *oldlenp,
uint8_t *p = NULL, *ps = NULL;
uint8_t *pe = NULL;
size_t l;
+ char ip6buf[INET6_ADDRSTRLEN];
if (oldp) {
ps = p = (uint8_t*)oldp;
@@ -2749,7 +2754,7 @@ fill_prlist(void *oldp, size_t *oldlenp,
if (sa6_recoverscope(&pfx.prefix)) {
log(LOG_ERR,
"scope error in prefix list (%s)\n",
- ip6_sprintf(&pfx.prefix.sin6_addr));
+ ip6_sprintf(ip6buf, &pfx.prefix.sin6_addr));
/* XXX: press on... */
}
pfx.raflags = pr->ndpr_raf;
@@ -2787,12 +2792,13 @@ fill_prlist(void *oldp, size_t *oldlenp,
}
sockaddr_in6_init(&sin6, &pfr->router->rtaddr,
- 0, 0, 0);
+ 0, 0, 0);
if (sa6_recoverscope(&sin6)) {
log(LOG_ERR,
"scope error in "
"prefix list (%s)\n",
- ip6_sprintf(&pfr->router->rtaddr));
+ ip6_sprintf(ip6buf,
+ &pfr->router->rtaddr));
}
advrtrs++;
memcpy(p, &sin6, sizeof(sin6));
Index: src/sys/netinet6/nd6_nbr.c
diff -u src/sys/netinet6/nd6_nbr.c:1.134 src/sys/netinet6/nd6_nbr.c:1.135
--- src/sys/netinet6/nd6_nbr.c:1.134 Mon Dec 19 07:51:34 2016
+++ src/sys/netinet6/nd6_nbr.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6_nbr.c,v 1.134 2016/12/19 07:51:34 ozaki-r Exp $ */
+/* $NetBSD: nd6_nbr.c,v 1.135 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: nd6_nbr.c,v 1.61 2001/02/10 16:06:14 jinmei Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.134 2016/12/19 07:51:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.135 2017/01/16 07:33:36 ryo Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -115,6 +115,7 @@ nd6_ns_input(struct mbuf *m, int off, in
const struct sockaddr_dl *proxydl = NULL;
struct psref psref;
struct psref psref_ia;
+ char ip6buf[INET6_ADDRSTRLEN], ip6buf2[INET6_ADDRSTRLEN];
ifp = m_get_rcvif_psref(m, &psref);
if (ifp == NULL)
@@ -133,8 +134,8 @@ nd6_ns_input(struct mbuf *m, int off, in
if (ip6->ip6_hlim != 255) {
nd6log(LOG_ERR, "invalid hlim (%d) from %s to %s on %s\n",
- ip6->ip6_hlim, ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst), if_name(ifp));
+ ip6->ip6_hlim, ip6_sprintf(ip6buf, &ip6->ip6_src),
+ ip6_sprintf(ip6buf2, &ip6->ip6_dst), if_name(ifp));
goto bad;
}
@@ -160,7 +161,7 @@ nd6_ns_input(struct mbuf *m, int off, in
if (nd6_is_addr_neighbor(&ssin6, ifp) == 0) {
nd6log(LOG_INFO,
"NS packet from non-neighbor %s on %s\n",
- ip6_sprintf(&saddr6), if_name(ifp));
+ ip6_sprintf(ip6buf, &saddr6), if_name(ifp));
goto bad;
}
}
@@ -276,13 +277,14 @@ nd6_ns_input(struct mbuf *m, int off, in
if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
"(if %d, NS packet %d)\n",
- ip6_sprintf(&taddr6), ifp->if_addrlen, lladdrlen - 2);
+ ip6_sprintf(ip6buf, &taddr6),
+ ifp->if_addrlen, lladdrlen - 2);
goto bad;
}
if (IN6_ARE_ADDR_EQUAL(&myaddr6, &saddr6)) {
nd6log(LOG_INFO, "duplicate IP6 address %s\n",
- ip6_sprintf(&saddr6));
+ ip6_sprintf(ip6buf, &saddr6));
goto freeit;
}
@@ -350,9 +352,9 @@ nd6_ns_input(struct mbuf *m, int off, in
return;
bad:
- nd6log(LOG_ERR, "src=%s\n", ip6_sprintf(&saddr6));
- nd6log(LOG_ERR, "dst=%s\n", ip6_sprintf(&daddr6));
- nd6log(LOG_ERR, "tgt=%s\n", ip6_sprintf(&taddr6));
+ nd6log(LOG_ERR, "src=%s\n", ip6_sprintf(ip6buf, &saddr6));
+ nd6log(LOG_ERR, "dst=%s\n", ip6_sprintf(ip6buf, &daddr6));
+ nd6log(LOG_ERR, "tgt=%s\n", ip6_sprintf(ip6buf, &taddr6));
ICMP6_STATINC(ICMP6_STAT_BADNS);
ifa_release(ifa, &psref_ia);
m_put_rcvif_psref(ifp, &psref);
@@ -473,9 +475,11 @@ nd6_ns_output(struct ifnet *ifp, const s
error = in6_selectsrc(&dst_sa, NULL,
NULL, &ro, NULL, NULL, NULL, &src_in);
if (error != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_DEBUG, "source can't be "
"determined: dst=%s, error=%d\n",
- ip6_sprintf(&dst_sa.sin6_addr), error);
+ ip6_sprintf(ip6buf, &dst_sa.sin6_addr),
+ error);
pserialize_read_exit(s);
goto bad;
}
@@ -580,6 +584,7 @@ nd6_na_input(struct mbuf *m, int off, in
bool checklink = false;
struct psref psref;
struct psref psref_ia;
+ char ip6buf[INET6_ADDRSTRLEN], ip6buf2[INET6_ADDRSTRLEN];
ifp = m_get_rcvif_psref(m, &psref);
if (ifp == NULL)
@@ -588,8 +593,8 @@ nd6_na_input(struct mbuf *m, int off, in
if (ip6->ip6_hlim != 255) {
nd6log(LOG_ERR,
"invalid hlim (%d) from %s to %s on %s\n",
- ip6->ip6_hlim, ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst), if_name(ifp));
+ ip6->ip6_hlim, ip6_sprintf(ip6buf, &ip6->ip6_src),
+ ip6_sprintf(ip6buf2, &ip6->ip6_dst), if_name(ifp));
goto bad;
}
@@ -613,7 +618,7 @@ nd6_na_input(struct mbuf *m, int off, in
if (IN6_IS_ADDR_MULTICAST(&taddr6)) {
nd6log(LOG_ERR, "invalid target address %s\n",
- ip6_sprintf(&taddr6));
+ ip6_sprintf(ip6buf, &taddr6));
goto bad;
}
if (is_solicited && IN6_IS_ADDR_MULTICAST(&daddr6)) {
@@ -657,7 +662,7 @@ nd6_na_input(struct mbuf *m, int off, in
if (ifa) {
log(LOG_ERR,
"nd6_na_input: duplicate IP6 address %s\n",
- ip6_sprintf(&taddr6));
+ ip6_sprintf(ip6buf, &taddr6));
ifa_release(ifa, &psref_ia);
ifa = NULL;
goto freeit;
@@ -669,13 +674,13 @@ nd6_na_input(struct mbuf *m, int off, in
sockaddr_in6_init(&ssin6, &saddr6, 0, 0, 0);
if (nd6_is_addr_neighbor(&ssin6, ifp) == 0) {
nd6log(LOG_INFO, "ND packet from non-neighbor %s on %s\n",
- ip6_sprintf(&saddr6), if_name(ifp));
+ ip6_sprintf(ip6buf, &saddr6), if_name(ifp));
goto bad;
}
if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
- "(if %d, NA packet %d)\n", ip6_sprintf(&taddr6),
+ "(if %d, NA packet %d)\n", ip6_sprintf(ip6buf, &taddr6),
ifp->if_addrlen, lladdrlen - 2);
goto bad;
}
@@ -968,9 +973,10 @@ nd6_na_output(
error = in6_selectsrc(satosin6(dst), NULL, NULL, &ro, NULL, NULL, NULL,
&ip6->ip6_src);
if (error != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_DEBUG, "source can't be "
"determined: dst=%s, error=%d\n",
- ip6_sprintf(&satocsin6(dst)->sin6_addr), error);
+ ip6_sprintf(ip6buf, &satocsin6(dst)->sin6_addr), error);
goto bad;
}
nd_na = (struct nd_neighbor_advert *)(ip6 + 1);
@@ -1117,6 +1123,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
{
struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
struct dadq *dp;
+ char ip6buf[INET6_ADDRSTRLEN];
if (!dad_init) {
TAILQ_INIT(&dadq);
@@ -1134,7 +1141,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
log(LOG_DEBUG,
"nd6_dad_start: called with non-tentative address "
"%s(%s)\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr),
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
return;
}
@@ -1159,7 +1166,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
mutex_exit(&nd6_dad_lock);
log(LOG_ERR, "nd6_dad_start: memory allocation failed for "
"%s(%s)\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr),
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
return;
}
@@ -1180,7 +1187,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
TAILQ_INSERT_TAIL(&dadq, (struct dadq *)dp, dad_list);
nd6log(LOG_DEBUG, "%s: starting DAD for %s\n", if_name(ifa->ifa_ifp),
- ip6_sprintf(&ia->ia_addr.sin6_addr));
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr));
if (xtick == 0) {
nd6_dad_ns_output(dp, ifa);
@@ -1227,6 +1234,7 @@ nd6_dad_timer(struct ifaddr *ifa)
struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
struct dadq *dp;
int duplicate = 0;
+ char ip6buf[INET6_ADDRSTRLEN];
#ifndef NET_MPSAFE
mutex_enter(softnet_lock);
@@ -1247,14 +1255,14 @@ nd6_dad_timer(struct ifaddr *ifa)
if (ia->ia6_flags & IN6_IFF_DUPLICATED) {
log(LOG_ERR, "nd6_dad_timer: called with duplicate address "
"%s(%s)\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr),
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
goto done;
}
if ((ia->ia6_flags & IN6_IFF_TENTATIVE) == 0) {
log(LOG_ERR, "nd6_dad_timer: called with non-tentative address "
"%s(%s)\n",
- ip6_sprintf(&ia->ia_addr.sin6_addr),
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr),
ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
goto done;
}
@@ -1311,7 +1319,7 @@ nd6_dad_timer(struct ifaddr *ifa)
nd6log(LOG_DEBUG,
"%s: DAD complete for %s - no duplicates found\n",
if_name(ifa->ifa_ifp),
- ip6_sprintf(&ia->ia_addr.sin6_addr));
+ ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr));
TAILQ_REMOVE(&dadq, dp, dad_list);
free(dp, M_IP6NDP);
@@ -1338,6 +1346,7 @@ nd6_dad_duplicated(struct ifaddr *ifa)
struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
struct ifnet *ifp;
struct dadq *dp;
+ char ip6buf[INET6_ADDRSTRLEN];
mutex_enter(&nd6_dad_lock);
dp = nd6_dad_find(ifa);
@@ -1350,7 +1359,7 @@ nd6_dad_duplicated(struct ifaddr *ifa)
ifp = ifa->ifa_ifp;
log(LOG_ERR, "%s: DAD detected duplicate IPv6 address %s: "
"NS in/out=%d/%d, NA in=%d\n",
- if_name(ifp), ip6_sprintf(&ia->ia_addr.sin6_addr),
+ if_name(ifp), ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr),
dp->dad_ns_icount, dp->dad_ns_ocount, dp->dad_na_icount);
ia->ia6_flags &= ~IN6_IFF_TENTATIVE;
@@ -1360,7 +1369,7 @@ nd6_dad_duplicated(struct ifaddr *ifa)
nd6_dad_stoptimer(dp);
log(LOG_ERR, "%s: DAD complete for %s - duplicate found\n",
- if_name(ifp), ip6_sprintf(&ia->ia_addr.sin6_addr));
+ if_name(ifp), ip6_sprintf(ip6buf, &ia->ia_addr.sin6_addr));
log(LOG_ERR, "%s: manual intervention required\n",
if_name(ifp));
@@ -1454,8 +1463,9 @@ nd6_dad_ns_input(struct ifaddr *ifa)
/* Quickhack - completely ignore DAD NS packets */
if (dad_ignore_ns) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_INFO, "ignoring DAD NS packet for "
- "address %s(%s)\n", ip6_sprintf(taddr6),
+ "address %s(%s)\n", ip6_sprintf(ip6buf, taddr6),
if_name(ifa->ifa_ifp));
return;
}
Index: src/sys/netinet6/nd6_rtr.c
diff -u src/sys/netinet6/nd6_rtr.c:1.129 src/sys/netinet6/nd6_rtr.c:1.130
--- src/sys/netinet6/nd6_rtr.c:1.129 Wed Jan 4 19:37:14 2017
+++ src/sys/netinet6/nd6_rtr.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: nd6_rtr.c,v 1.129 2017/01/04 19:37:14 christos Exp $ */
+/* $NetBSD: nd6_rtr.c,v 1.130 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME: nd6_rtr.c,v 1.95 2001/02/07 08:09:47 itojun Exp $ */
/*
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6_rtr.c,v 1.129 2017/01/04 19:37:14 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6_rtr.c,v 1.130 2017/01/16 07:33:36 ryo Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -145,6 +145,7 @@ nd6_rs_input(struct mbuf *m, int off, in
int lladdrlen = 0;
union nd_opts ndopts;
struct psref psref;
+ char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN];
ifp = m_get_rcvif_psref(m, &psref);
if (ifp == NULL)
@@ -159,8 +160,8 @@ nd6_rs_input(struct mbuf *m, int off, in
/* Sanity checks */
if (ip6->ip6_hlim != 255) {
nd6log(LOG_ERR, "invalid hlim (%d) from %s to %s on %s\n",
- ip6->ip6_hlim, ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst), if_name(ifp));
+ ip6->ip6_hlim, ip6_sprintf(ip6bufs, &ip6->ip6_src),
+ ip6_sprintf(ip6bufd, &ip6->ip6_dst), if_name(ifp));
goto bad;
}
@@ -193,7 +194,8 @@ nd6_rs_input(struct mbuf *m, int off, in
if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
"(if %d, RS packet %d)\n",
- ip6_sprintf(&saddr6), ifp->if_addrlen, lladdrlen - 2);
+ ip6_sprintf(ip6bufs, &saddr6),
+ ifp->if_addrlen, lladdrlen - 2);
goto bad;
}
@@ -235,6 +237,7 @@ nd6_ra_input(struct mbuf *m, int off, in
union nd_opts ndopts;
struct nd_defrouter *dr;
struct psref psref;
+ char ip6buf[INET6_ADDRSTRLEN], ip6buf2[INET6_ADDRSTRLEN];
ifp = m_get_rcvif_psref(m, &psref);
if (ifp == NULL)
@@ -251,14 +254,14 @@ nd6_ra_input(struct mbuf *m, int off, in
if (ip6->ip6_hlim != 255) {
nd6log(LOG_ERR, "invalid hlim (%d) from %s to %s on %s\n",
- ip6->ip6_hlim, ip6_sprintf(&ip6->ip6_src),
- ip6_sprintf(&ip6->ip6_dst), if_name(ifp));
+ ip6->ip6_hlim, ip6_sprintf(ip6buf, &ip6->ip6_src),
+ ip6_sprintf(ip6buf2, &ip6->ip6_dst), if_name(ifp));
goto bad;
}
if (!IN6_IS_ADDR_LINKLOCAL(&saddr6)) {
nd6log(LOG_ERR, "src %s is not link-local\n",
- ip6_sprintf(&saddr6));
+ ip6_sprintf(ip6buf, &saddr6));
goto bad;
}
@@ -309,7 +312,7 @@ nd6_ra_input(struct mbuf *m, int off, in
else if (ndi->chlim != nd_ra->nd_ra_curhoplimit)
log(LOG_ERR, "nd_ra_input: lower CurHopLimit sent from "
"%s on %s (current=%d, received=%d), ignored\n",
- ip6_sprintf(&ip6->ip6_src),
+ ip6_sprintf(ip6buf, &ip6->ip6_src),
if_name(ifp), ndi->chlim, nd_ra->nd_ra_curhoplimit);
}
ND6_WLOCK();
@@ -350,7 +353,7 @@ nd6_ra_input(struct mbuf *m, int off, in
|| IN6_IS_ADDR_LINKLOCAL(&pi->nd_opt_pi_prefix)) {
nd6log(LOG_INFO,
"invalid prefix %s, ignored\n",
- ip6_sprintf(&pi->nd_opt_pi_prefix));
+ ip6_sprintf(ip6buf, &pi->nd_opt_pi_prefix));
continue;
}
@@ -385,7 +388,7 @@ nd6_ra_input(struct mbuf *m, int off, in
if (mtu < IPV6_MMTU) {
nd6log(LOG_INFO, "bogus mtu option "
"mtu=%lu sent from %s, ignoring\n",
- mtu, ip6_sprintf(&ip6->ip6_src));
+ mtu, ip6_sprintf(ip6buf, &ip6->ip6_src));
goto skip;
}
@@ -402,7 +405,7 @@ nd6_ra_input(struct mbuf *m, int off, in
nd6log(LOG_INFO,
"bogus mtu mtu=%lu sent from %s; "
"exceeds maxmtu %lu, ignoring\n",
- mtu, ip6_sprintf(&ip6->ip6_src), maxmtu);
+ mtu, ip6_sprintf(ip6buf, &ip6->ip6_src), maxmtu);
}
}
@@ -422,7 +425,7 @@ nd6_ra_input(struct mbuf *m, int off, in
if (lladdr && ((ifp->if_addrlen + 2 + 7) & ~7) != lladdrlen) {
nd6log(LOG_INFO, "lladdrlen mismatch for %s "
- "(if %d, RA packet %d)\n", ip6_sprintf(&saddr6),
+ "(if %d, RA packet %d)\n", ip6_sprintf(ip6buf, &saddr6),
ifp->if_addrlen, lladdrlen - 2);
goto bad;
}
@@ -1003,9 +1006,10 @@ nd6_prelist_add(struct nd_prefixctl *prc
int e;
if ((e = nd6_prefix_onlink(newpr)) != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_ERR, "failed to make "
"the prefix %s/%d on-link on %s (errno=%d)\n",
- ip6_sprintf(&prc->ndprc_prefix.sin6_addr),
+ ip6_sprintf(ip6buf, &prc->ndprc_prefix.sin6_addr),
prc->ndprc_plen, if_name(prc->ndprc_ifp), e);
/* proceed anyway. XXX: is it correct? */
}
@@ -1053,9 +1057,10 @@ nd6_prelist_remove(struct nd_prefix *pr)
#endif
if ((pr->ndpr_stateflags & NDPRF_ONLINK) != 0 &&
(e = nd6_prefix_offlink(pr)) != 0) {
+ char ip6buf[INET6_ADDRSTRLEN];
nd6log(LOG_ERR,
"failed to make %s/%d offlink on %s, errno=%d\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf, &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, if_name(pr->ndpr_ifp), e);
/* what should we do? */
}
@@ -1099,6 +1104,7 @@ prelist_update(struct nd_prefixctl *newp
int auth;
struct in6_addrlifetime lt6_tmp;
int ss;
+ char ip6buf[INET6_ADDRSTRLEN];
ND6_ASSERT_WLOCK();
@@ -1145,7 +1151,8 @@ prelist_update(struct nd_prefixctl *newp
"failed to make "
"the prefix %s/%d on-link on %s "
"(errno=%d)\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf,
+ &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, if_name(pr->ndpr_ifp), e);
/* proceed anyway. XXX: is it correct? */
}
@@ -1171,7 +1178,7 @@ prelist_update(struct nd_prefixctl *newp
nd6log(LOG_NOTICE,
"nd6_prelist_add failed for %s/%d on %s "
"errno=%d, returnpr=%p\n",
- ip6_sprintf(&newprc->ndprc_prefix.sin6_addr),
+ ip6_sprintf(ip6buf, &newprc->ndprc_prefix.sin6_addr),
newprc->ndprc_plen, if_name(newprc->ndprc_ifp),
error, newpr);
goto end; /* we should just give up in this case. */
@@ -1472,6 +1479,7 @@ nd6_pfxlist_onlink_check(void)
struct nd_defrouter *dr;
struct nd_pfxrouter *pfxrtr = NULL;
int s;
+ char ip6buf[INET6_ADDRSTRLEN];
ND6_ASSERT_WLOCK();
@@ -1564,7 +1572,8 @@ nd6_pfxlist_onlink_check(void)
if ((e = nd6_prefix_offlink(pr)) != 0) {
nd6log(LOG_ERR,
"failed to make %s/%d offlink, errno=%d\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf,
+ &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, e);
}
}
@@ -1574,7 +1583,8 @@ nd6_pfxlist_onlink_check(void)
if ((e = nd6_prefix_onlink(pr)) != 0) {
nd6log(LOG_ERR,
"failed to make %s/%d onlink, errno=%d\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf,
+ &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, e);
}
}
@@ -1689,13 +1699,16 @@ nd6_prefix_onlink(struct nd_prefix *pr)
int error = 0;
struct psref psref;
int bound;
+ char ip6buf[INET6_ADDRSTRLEN];
+ char ip6bufp[INET6_ADDRSTRLEN], ip6bufm[INET6_ADDRSTRLEN];
ND6_ASSERT_WLOCK();
/* sanity check */
if ((pr->ndpr_stateflags & NDPRF_ONLINK) != 0) {
nd6log(LOG_ERR, "%s/%d is already on-link\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr), pr->ndpr_plen);
+ ip6_sprintf(ip6buf, &pr->ndpr_prefix.sin6_addr),
+ pr->ndpr_plen);
return (EEXIST);
}
@@ -1746,7 +1759,7 @@ nd6_prefix_onlink(struct nd_prefix *pr)
*/
nd6log(LOG_NOTICE, "failed to find any ifaddr"
" to add route for a prefix(%s/%d) on %s\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf, &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, if_name(ifp));
curlwp_bindx(bound);
return (0);
@@ -1780,10 +1793,11 @@ nd6_prefix_onlink(struct nd_prefix *pr)
nd6log(LOG_ERR, "failed to add route for a"
" prefix (%s/%d) on %s, gw=%s, mask=%s, flags=%lx "
"errno = %d\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6bufp, &pr->ndpr_prefix.sin6_addr),
pr->ndpr_plen, if_name(ifp),
- ip6_sprintf(&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr),
- ip6_sprintf(&mask6.sin6_addr), rtflags, error);
+ ip6_sprintf(ip6buf,
+ &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr),
+ ip6_sprintf(ip6bufm, &mask6.sin6_addr), rtflags, error);
}
ifa_release(ifa, &psref);
curlwp_bindx(bound);
@@ -1798,13 +1812,15 @@ nd6_prefix_offlink(struct nd_prefix *pr)
struct ifnet *ifp = pr->ndpr_ifp;
struct nd_prefix *opr;
struct sockaddr_in6 sa6, mask6;
+ char ip6buf[INET6_ADDRSTRLEN];
ND6_ASSERT_WLOCK();
/* sanity check */
if ((pr->ndpr_stateflags & NDPRF_ONLINK) == 0) {
nd6log(LOG_ERR, "%s/%d is already off-link\n",
- ip6_sprintf(&pr->ndpr_prefix.sin6_addr), pr->ndpr_plen);
+ ip6_sprintf(ip6buf, &pr->ndpr_prefix.sin6_addr),
+ pr->ndpr_plen);
return (EEXIST);
}
@@ -1846,7 +1862,8 @@ nd6_prefix_offlink(struct nd_prefix *pr)
nd6log(LOG_ERR, "failed to "
"recover a prefix %s/%d from %s "
"to %s (errno = %d)\n",
- ip6_sprintf(&opr->ndpr_prefix.sin6_addr),
+ ip6_sprintf(ip6buf,
+ &opr->ndpr_prefix.sin6_addr),
opr->ndpr_plen, if_name(ifp),
if_name(opr->ndpr_ifp), e);
}
@@ -1856,7 +1873,8 @@ nd6_prefix_offlink(struct nd_prefix *pr)
/* XXX: can we still set the NDPRF_ONLINK flag? */
nd6log(LOG_ERR, "failed to delete route: "
"%s/%d on %s (errno = %d)\n",
- ip6_sprintf(&sa6.sin6_addr), pr->ndpr_plen, if_name(ifp),
+ ip6_sprintf(ip6buf, &sa6.sin6_addr), pr->ndpr_plen,
+ if_name(ifp),
error);
}
@@ -1875,6 +1893,7 @@ in6_ifadd(struct nd_prefixctl *prc, int
int prefixlen = prc->ndprc_plen;
int updateflags;
int s;
+ char ip6buf[INET6_ADDRSTRLEN];
ND6_ASSERT_WLOCK();
@@ -1973,7 +1992,7 @@ in6_ifadd(struct nd_prefixctl *prc, int
if (in6ifa_ifpwithaddr(ifp, &ifra.ifra_addr.sin6_addr) != NULL) {
/* this should be rare enough to make an explicit log */
log(LOG_INFO, "in6_ifadd: %s is already configured\n",
- ip6_sprintf(&ifra.ifra_addr.sin6_addr));
+ ip6_sprintf(ip6buf, &ifra.ifra_addr.sin6_addr));
pserialize_read_exit(s);
return (NULL);
}
@@ -1990,7 +2009,7 @@ in6_ifadd(struct nd_prefixctl *prc, int
updateflags |= IN6_IFAUPDATE_DADDELAY;
if ((error = in6_update_ifa(ifp, &ifra, updateflags)) != 0) {
nd6log(LOG_ERR, "failed to make ifaddr %s on %s (errno=%d)\n",
- ip6_sprintf(&ifra.ifra_addr.sin6_addr), if_name(ifp),
+ ip6_sprintf(ip6buf, &ifra.ifra_addr.sin6_addr), if_name(ifp),
error);
return (NULL); /* ifaddr must not have been allocated. */
}
Index: src/sys/netinet6/scope6.c
diff -u src/sys/netinet6/scope6.c:1.15 src/sys/netinet6/scope6.c:1.16
--- src/sys/netinet6/scope6.c:1.15 Fri Aug 12 11:44:24 2016
+++ src/sys/netinet6/scope6.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: scope6.c,v 1.15 2016/08/12 11:44:24 christos Exp $ */
+/* $NetBSD: scope6.c,v 1.16 2017/01/16 07:33:36 ryo Exp $ */
/* $KAME$ */
/*-
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: scope6.c,v 1.15 2016/08/12 11:44:24 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: scope6.c,v 1.16 2017/01/16 07:33:36 ryo Exp $");
#include <sys/param.h>
#include <sys/malloc.h>
@@ -343,11 +343,12 @@ int
sa6_recoverscope(struct sockaddr_in6 *sin6)
{
uint32_t zoneid;
+ char ip6buf[INET6_ADDRSTRLEN];
if (sin6->sin6_scope_id != 0) {
log(LOG_NOTICE,
"sa6_recoverscope: assumption failure (non 0 ID): %s%%%d\n",
- ip6_sprintf(&sin6->sin6_addr), sin6->sin6_scope_id);
+ ip6_sprintf(ip6buf, &sin6->sin6_addr), sin6->sin6_scope_id);
/* XXX: proceed anyway... */
}
if (IN6_IS_SCOPE_LINKLOCAL(&sin6->sin6_addr) ||
Index: src/sys/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.67 src/sys/netipsec/ipsec.c:1.68
--- src/sys/netipsec/ipsec.c:1.67 Thu Dec 8 05:16:34 2016
+++ src/sys/netipsec/ipsec.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec.c,v 1.67 2016/12/08 05:16:34 ozaki-r Exp $ */
+/* $NetBSD: ipsec.c,v 1.68 2017/01/16 07:33:36 ryo Exp $ */
/* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */
/* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.67 2016/12/08 05:16:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.68 2017/01/16 07:33:36 ryo Exp $");
/*
* IPsec controller part.
@@ -2313,6 +2313,10 @@ inet_ntoa4(struct in_addr ina)
const char *
ipsec_address(const union sockaddr_union *sa)
{
+#if INET6
+ static char ip6buf[INET6_ADDRSTRLEN]; /* XXX: NOMPSAFE */
+#endif
+
switch (sa->sa.sa_family) {
#if INET
case AF_INET:
@@ -2321,7 +2325,7 @@ ipsec_address(const union sockaddr_union
#if INET6
case AF_INET6:
- return ip6_sprintf(&sa->sin6.sin6_addr);
+ return ip6_sprintf(ip6buf, &sa->sin6.sin6_addr);
#endif /* INET6 */
default:
Index: src/sys/netipsec/ipsec_input.c
diff -u src/sys/netipsec/ipsec_input.c:1.36 src/sys/netipsec/ipsec_input.c:1.37
--- src/sys/netipsec/ipsec_input.c:1.36 Fri Jun 10 13:31:44 2016
+++ src/sys/netipsec/ipsec_input.c Mon Jan 16 07:33:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec_input.c,v 1.36 2016/06/10 13:31:44 ozaki-r Exp $ */
+/* $NetBSD: ipsec_input.c,v 1.37 2017/01/16 07:33:36 ryo Exp $ */
/* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec_input.c,v 1.2.4.2 2003/03/28 20:32:53 sam Exp $ */
/* $OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $ */
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.36 2016/06/10 13:31:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.37 2017/01/16 07:33:36 ryo Exp $");
/*
* IPsec input processing.
@@ -380,10 +380,11 @@ ipsec4_common_input_cb(struct mbuf *m, s
(saidx->proxy.sa.sa_family != AF_INET6 &&
saidx->proxy.sa.sa_family != 0)) {
+ char ip6buf[INET6_ADDRSTRLEN];
DPRINTF(("ipsec4_common_input_cb: inner "
"source address %s doesn't correspond to "
"expected proxy source %s, SA %s/%08lx\n",
- ip6_sprintf(&ip6n.ip6_src),
+ ip6_sprintf(ip6buf, &ip6n.ip6_src),
ipsec_address(&saidx->proxy),
ipsec_address(&saidx->dst),
(u_long) ntohl(sav->spi)));
@@ -697,10 +698,11 @@ ipsec6_common_input_cb(struct mbuf *m, s
(saidx->proxy.sa.sa_family != AF_INET6 &&
saidx->proxy.sa.sa_family != 0)) {
+ char ip6buf[INET6_ADDRSTRLEN];
DPRINTF(("ipsec6_common_input_cb: inner "
"source address %s doesn't correspond to "
"expected proxy source %s, SA %s/%08lx\n",
- ip6_sprintf(&ip6n.ip6_src),
+ ip6_sprintf(ip6buf, &ip6n.ip6_src),
ipsec_address(&saidx->proxy),
ipsec_address(&saidx->dst),
(u_long) ntohl(sav->spi)));