git: ede77280787a - main - netinet6: Use memcpy/memset/memcmp for consistency

From: Pouria Mousavizadeh Tehrani <pouria_at_FreeBSD.org>
Date: Mon, 02 Nov 2026 20:35:39 UTC
The branch main has been updated by pouria:

URL: https://cgit.FreeBSD.org/src/commit/?id=ede77280787a10462cb9e26b4b4e38fd0825ef53

commit ede77280787a10462cb9e26b4b4e38fd0825ef53
Author:     Vinícius Ferrão <vinicius@ferrao.net.br>
AuthorDate: 2026-11-02 20:27:54 +0000
Commit:     Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
CommitDate: 2026-11-02 20:33:03 +0000

    netinet6: Use memcpy/memset/memcmp for consistency
    
    Convert the remaining bzero()/bcopy()/bcmp() calls in the neighbor
    discovery handlers to memset()/memcpy()/memcmp().
    
    No functional change intended.
    
    Reviewed by:    glebius, pouria
    Sponsored by:   VersatusHPC
    Differential Revision:  https://reviews.freebsd.org/D58177
---
 sys/netinet6/icmp6.c   | 37 +++++++++++++++++++------------------
 sys/netinet6/nd6_nbr.c | 13 +++++++------
 sys/netinet6/nd6_rtr.c |  6 +++---
 3 files changed, 29 insertions(+), 27 deletions(-)

diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c
index 0958b21de404..290d4019253a 100644
--- a/sys/netinet6/icmp6.c
+++ b/sys/netinet6/icmp6.c
@@ -2206,7 +2206,7 @@ icmp6_redirect_input(struct mbuf *m, int off)
 	is_router = is_onlink = 0;
 	if (IN6_IS_ADDR_LINKLOCAL(&redtgt6))
 		is_router = 1;	/* router case */
-	if (bcmp(&redtgt6, &reddst6, sizeof(redtgt6)) == 0)
+	if (memcmp(&redtgt6, &reddst6, sizeof(redtgt6)) == 0)
 		is_onlink = 1;	/* on-link destination case */
 	if (!is_router && !is_onlink) {
 		nd6log((LOG_ERR,
@@ -2259,18 +2259,18 @@ icmp6_redirect_input(struct mbuf *m, int off)
 		struct sockaddr *gw;
 		int rt_flags;
 
-		bzero(&sdst, sizeof(sdst));
-		bzero(&ssrc, sizeof(ssrc));
+		memset(&sdst, 0, sizeof(sdst));
+		memset(&ssrc, 0, sizeof(ssrc));
 		sdst.sin6_family = ssrc.sin6_family = AF_INET6;
 		sdst.sin6_len = ssrc.sin6_len = sizeof(struct sockaddr_in6);
-		bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr));
-		bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr));
+		memcpy(&sdst.sin6_addr, &reddst6, sizeof(struct in6_addr));
+		memcpy(&ssrc.sin6_addr, &src6, sizeof(struct in6_addr));
 		rt_flags = 0;
 		if (is_router) {
-			bzero(&sgw, sizeof(sgw));
+			memset(&sgw, 0, sizeof(sgw));
 			sgw.sin6_family = AF_INET6;
 			sgw.sin6_len = sizeof(struct sockaddr_in6);
-			bcopy(&redtgt6, &sgw.sin6_addr,
+			memcpy(&sgw.sin6_addr, &redtgt6,
 				sizeof(struct in6_addr));
 			gw = (struct sockaddr *)&sgw;
 			rt_flags |= RTF_GATEWAY;
@@ -2324,7 +2324,7 @@ icmp6_redirect_output(struct mbuf *m0, struct nhop_object *nh)
 	 *  [RFC 2461, sec 8.2]
 	 */
 	sip6 = mtod(m0, struct ip6_hdr *);
-	bzero(&src_sa, sizeof(src_sa));
+	memset(&src_sa, 0, sizeof(src_sa));
 	src_sa.sin6_family = AF_INET6;
 	src_sa.sin6_len = sizeof(src_sa);
 	src_sa.sin6_addr = sip6->ip6_src;
@@ -2364,7 +2364,7 @@ icmp6_redirect_output(struct mbuf *m0, struct nhop_object *nh)
 						 IN6_IFF_NOTREADY|
 						 IN6_IFF_ANYCAST)) == NULL)
 			goto fail;
-		bcopy(&ia->ia_addr.sin6_addr, &ifp_ll6, sizeof(ifp_ll6));
+		memcpy(&ifp_ll6, &ia->ia_addr.sin6_addr, sizeof(ifp_ll6));
 		ifa_free(&ia->ia_ifa);
 	}
 
@@ -2387,8 +2387,8 @@ icmp6_redirect_output(struct mbuf *m0, struct nhop_object *nh)
 	ip6->ip6_nxt = IPPROTO_ICMPV6;
 	ip6->ip6_hlim = 255;
 	/* ip6->ip6_src must be linklocal addr for my outgoing if. */
-	bcopy(&ifp_ll6, &ip6->ip6_src, sizeof(struct in6_addr));
-	bcopy(&sip6->ip6_src, &ip6->ip6_dst, sizeof(struct in6_addr));
+	memcpy(&ip6->ip6_src, &ifp_ll6, sizeof(struct in6_addr));
+	memcpy(&ip6->ip6_dst, &sip6->ip6_src, sizeof(struct in6_addr));
 
 	/* ND Redirect */
 	nd_rd = (struct nd_redirect *)(ip6 + 1);
@@ -2402,15 +2402,15 @@ icmp6_redirect_output(struct mbuf *m0, struct nhop_object *nh)
 		 */
 		if (!router_ll6)
 			goto fail;
-		bcopy(router_ll6, &nd_rd->nd_rd_target,
+		memcpy(&nd_rd->nd_rd_target, router_ll6,
 		    sizeof(nd_rd->nd_rd_target));
-		bcopy(&sip6->ip6_dst, &nd_rd->nd_rd_dst,
+		memcpy(&nd_rd->nd_rd_dst, &sip6->ip6_dst,
 		    sizeof(nd_rd->nd_rd_dst));
 	} else {
 		/* make sure redtgt == reddst */
-		bcopy(&sip6->ip6_dst, &nd_rd->nd_rd_target,
+		memcpy(&nd_rd->nd_rd_target, &sip6->ip6_dst,
 		    sizeof(nd_rd->nd_rd_target));
-		bcopy(&sip6->ip6_dst, &nd_rd->nd_rd_dst,
+		memcpy(&nd_rd->nd_rd_dst, &sip6->ip6_dst,
 		    sizeof(nd_rd->nd_rd_dst));
 	}
 
@@ -2443,7 +2443,7 @@ icmp6_redirect_output(struct mbuf *m0, struct nhop_object *nh)
 			nd_opt->nd_opt_type = ND_OPT_TARGET_LINKADDR;
 			nd_opt->nd_opt_len = len >> 3;
 			lladdr = (char *)(nd_opt + 1) + pad;
-			bcopy(ln->ll_addr, lladdr, ifp->if_addrlen);
+			memcpy(lladdr, ln->ll_addr, ifp->if_addrlen);
 			p += len;
 		}
 	}
@@ -2510,7 +2510,8 @@ nolladdropt:
 				/* pad if easy enough, truncate if not */
 				if (8 - extra <= M_TRAILINGSPACE(m0)) {
 					/* pad */
-					bzero(m0->m_data + m0->m_len, 8 - extra);
+					memset(m0->m_data + m0->m_len, 0,
+					    8 - extra);
 					m0->m_len += (8 - extra);
 					m0->m_pkthdr.len += (8 - extra);
 				} else {
@@ -2525,7 +2526,7 @@ nolladdropt:
 		}
 
 		nd_opt_rh = (struct nd_opt_rd_hdr *)p;
-		bzero(nd_opt_rh, sizeof(*nd_opt_rh));
+		memset(nd_opt_rh, 0, sizeof(*nd_opt_rh));
 		nd_opt_rh->nd_opt_rh_type = ND_OPT_REDIRECTED_HEADER;
 		nd_opt_rh->nd_opt_rh_len = len >> 3;
 		p += sizeof(*nd_opt_rh);
diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c
index c4621e437a27..9f7d64cc1870 100644
--- a/sys/netinet6/nd6_nbr.c
+++ b/sys/netinet6/nd6_nbr.c
@@ -211,7 +211,7 @@ nd6_ns_input(struct mbuf *m, int off, int icmp6len)
 		 * to be a neighbor otherwise.  This point is expected to be
 		 * clarified in future revisions of the specification.
 		 */
-		bzero(&src_sa6, sizeof(src_sa6));
+		memset(&src_sa6, 0, sizeof(src_sa6));
 		src_sa6.sin6_family = AF_INET6;
 		src_sa6.sin6_len = sizeof(src_sa6);
 		src_sa6.sin6_addr = saddr6;
@@ -405,7 +405,7 @@ nd6_proxy_fill_sdl(struct ifnet *ifp, const struct in6_addr *taddr6,
 	if ((ln->la_flags & (LLE_PUB | LLE_VALID)) == (LLE_PUB | LLE_VALID)) {
 		link_init_sdl(ifp, (struct sockaddr *)sdl, ifp->if_type);
 		sdl->sdl_alen = ifp->if_addrlen;
-		bcopy(ln->ll_addr, &sdl->sdl_data, ifp->if_addrlen);
+		memcpy(&sdl->sdl_data, ln->ll_addr, ifp->if_addrlen);
 		LLE_RUNLOCK(ln);
 		ifa = (struct ifaddr *)in6ifa_ifpforlinklocal(ifp,
 		    IN6_IFF_NOTREADY|IN6_IFF_ANYCAST);
@@ -556,7 +556,7 @@ nd6_ns_output_fib(struct ifnet *ifp, const struct in6_addr *saddr6,
 		 * above), but we do so here explicitly to make the intention
 		 * clearer.
 		 */
-		bzero(&ip6->ip6_src, sizeof(ip6->ip6_src));
+		memset(&ip6->ip6_src, 0, sizeof(ip6->ip6_src));
 	}
 	nd_ns = (struct nd_neighbor_solicit *)(ip6 + 1);
 	nd_ns->nd_ns_type = ND_NEIGHBOR_SOLICIT;
@@ -598,7 +598,7 @@ nd6_ns_output_fib(struct ifnet *ifp, const struct in6_addr *saddr6,
 			m->m_pkthdr.len += optlen;
 			m->m_len += optlen;
 			icmp6len += optlen;
-			bzero(nd_opt, optlen);
+			memset(nd_opt, 0, optlen);
 			nd_opt->nd_opt_type = ND_OPT_SOURCE_LINKADDR;
 			nd_opt->nd_opt_len = optlen >> 3;
 			memcpy((char *)(nd_opt + 1) + pad, mac,
@@ -855,7 +855,8 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
 			llchange = 0;
 		else {
 			if (ln->la_flags & LLE_VALID) {
-				if (bcmp(lladdr, ln->ll_addr, ifp->if_addrlen))
+				if (memcmp(lladdr, ln->ll_addr,
+				    ifp->if_addrlen))
 					llchange = 1;
 				else
 					llchange = 0;
@@ -1098,7 +1099,7 @@ nd6_na_output_fib(struct ifnet *ifp, const struct in6_addr *daddr6_0,
 		m->m_pkthdr.len += optlen;
 		m->m_len += optlen;
 		icmp6len += optlen;
-		bzero(nd_opt, optlen);
+		memset(nd_opt, 0, optlen);
 		nd_opt->nd_opt_type = ND_OPT_TARGET_LINKADDR;
 		nd_opt->nd_opt_len = optlen >> 3;
 		memcpy((char *)(nd_opt + 1) + pad, mac, ifp->if_addrlen);
diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c
index b82c3ef946d9..e3e9f7f54221 100644
--- a/sys/netinet6/nd6_rtr.c
+++ b/sys/netinet6/nd6_rtr.c
@@ -298,7 +298,7 @@ nd6_ra_opt_pi(struct nd_opt_hdr *pt, struct ifnet *ifp,
 		return;
 	}
 
-	bzero(&pr, sizeof(pr));
+	memset(&pr, 0, sizeof(pr));
 	pr.ndpr_prefix.sin6_family = AF_INET6;
 	pr.ndpr_prefix.sin6_len = sizeof(pr.ndpr_prefix);
 	pr.ndpr_prefix.sin6_addr = pi->nd_opt_pi_prefix;
@@ -569,7 +569,7 @@ nd6_ra_input(struct mbuf *m, int off, int icmp6len)
 	if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst))
 		mcast = true;
 
-	bzero(&dr0, sizeof(dr0));
+	memset(&dr0, 0, sizeof(dr0));
 	dr0.rtaddr = saddr6;
 	dr0.raflags = nd_ra->nd_ra_flags_reserved;
 	/*
@@ -2793,7 +2793,7 @@ nd6_sysctl_drlist(SYSCTL_HANDLER_ARGS)
 	if (error != 0)
 		return (error);
 
-	bzero(&d, sizeof(d));
+	memset(&d, 0, sizeof(d));
 	d.rtaddr.sin6_family = AF_INET6;
 	d.rtaddr.sin6_len = sizeof(d.rtaddr);