Ping.
On Mon, Sep 19, 2016 at 09:22:50PM -0400, David Hill wrote:
> Hello -
>
> Here are the final bcopy->memcpy conversions in netinet6 that I am
> comfortable with. There is also one (bcmp()) to (memcmp() != 0)
> conversion since the memory is not overlapping.
>
> This, with the last netinet6 diff, has dropped the number of bcopy()
> calls from 62 to 29 in netinet6/
>
> Index: icmp6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/icmp6.c,v
> retrieving revision 1.190
> diff -u -p -r1.190 icmp6.c
> --- icmp6.c 24 Aug 2016 09:38:29 -0000 1.190
> +++ icmp6.c 20 Sep 2016 01:00:36 -0000
> @@ -1401,7 +1401,7 @@ icmp6_redirect_input(struct mbuf *m, int
> bzero(&sin6, sizeof(sin6));
> sin6.sin6_family = AF_INET6;
> sin6.sin6_len = sizeof(struct sockaddr_in6);
> - bcopy(&reddst6, &sin6.sin6_addr, sizeof(reddst6));
> + memcpy(&sin6.sin6_addr, &reddst6, sizeof(reddst6));
> rt = rtalloc(sin6tosa(&sin6), 0, m->m_pkthdr.ph_rtableid);
> if (rt) {
> if (rt->rt_gateway == NULL ||
> @@ -1509,9 +1509,9 @@ icmp6_redirect_input(struct mbuf *m, int
> sdst.sin6_family = sgw.sin6_family = ssrc.sin6_family =
> AF_INET6;
> sdst.sin6_len = sgw.sin6_len = ssrc.sin6_len =
> sizeof(struct sockaddr_in6);
> - bcopy(&redtgt6, &sgw.sin6_addr, sizeof(struct in6_addr));
> - bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr));
> - bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr));
> + memcpy(&sgw.sin6_addr, &redtgt6, sizeof(struct in6_addr));
> + memcpy(&sdst.sin6_addr, &reddst6, sizeof(struct in6_addr));
> + memcpy(&ssrc.sin6_addr, &src6, sizeof(struct in6_addr));
> rtredirect(sin6tosa(&sdst), sin6tosa(&sgw), sin6tosa(&ssrc),
> &newrt, m->m_pkthdr.ph_rtableid);
>
> @@ -1528,7 +1528,7 @@ icmp6_redirect_input(struct mbuf *m, int
> bzero(&sdst, sizeof(sdst));
> sdst.sin6_family = AF_INET6;
> sdst.sin6_len = sizeof(struct sockaddr_in6);
> - bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr));
> + memcpy(&sdst.sin6_addr, &reddst6, sizeof(struct in6_addr));
> pfctlinput(PRC_REDIRECT_HOST, sin6tosa(&sdst));
> }
>
> Index: in6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6.c,v
> retrieving revision 1.192
> diff -u -p -r1.192 in6.c
> --- in6.c 4 Sep 2016 10:32:01 -0000 1.192
> +++ in6.c 20 Sep 2016 01:00:36 -0000
> @@ -1029,9 +1029,9 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
>
> /* copy args to in6_aliasreq, perform ioctl(SIOCAIFADDR_IN6). */
> bzero(&ifra, sizeof(ifra));
> - bcopy(iflr->iflr_name, ifra.ifra_name, sizeof(ifra.ifra_name));
> + memcpy(ifra.ifra_name, iflr->iflr_name, sizeof(ifra.ifra_name));
>
> - bcopy(&iflr->addr, &ifra.ifra_addr,
> + memcpy(&ifra.ifra_addr, &iflr->addr,
> ((struct sockaddr *)&iflr->addr)->sa_len);
> if (hostid) {
> /* fill in hostid part */
> @@ -1042,7 +1042,7 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
> }
>
> if (((struct sockaddr *)&iflr->dstaddr)->sa_family) { /*XXX*/
> - bcopy(&iflr->dstaddr, &ifra.ifra_dstaddr,
> + memcpy(&ifra.ifra_dstaddr, &iflr->dstaddr,
> ((struct sockaddr *)&iflr->dstaddr)->sa_len);
> if (hostid) {
> ifra.ifra_dstaddr.sin6_addr.s6_addr32[2] =
> @@ -1073,14 +1073,14 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
> in6_prefixlen2mask(&mask, iflr->prefixlen);
>
> sin6 = (struct sockaddr_in6 *)&iflr->addr;
> - bcopy(&sin6->sin6_addr, &match, sizeof(match));
> + memcpy(&match, &sin6->sin6_addr, sizeof(match));
> match.s6_addr32[0] &= mask.s6_addr32[0];
> match.s6_addr32[1] &= mask.s6_addr32[1];
> match.s6_addr32[2] &= mask.s6_addr32[2];
> match.s6_addr32[3] &= mask.s6_addr32[3];
>
> /* if you set extra bits, that's wrong */
> - if (bcmp(&match, &sin6->sin6_addr, sizeof(match)))
> + if (memcmp(&match, &sin6->sin6_addr, sizeof(match)) !=
> 0)
> return EINVAL;
>
> cmp = 1;
> @@ -1092,7 +1092,7 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
> /* on deleting an address, do exact match */
> in6_prefixlen2mask(&mask, 128);
> sin6 = (struct sockaddr_in6 *)&iflr->addr;
> - bcopy(&sin6->sin6_addr, &match, sizeof(match));
> + memcpy(&match, &sin6->sin6_addr, sizeof(match));
>
> cmp = 1;
> }
> @@ -1104,7 +1104,7 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
> if (!cmp)
> break;
>
> - bcopy(IFA_IN6(ifa), &candidate, sizeof(candidate));
> + memcpy(&candidate, IFA_IN6(ifa), sizeof(candidate));
> candidate.s6_addr32[0] &= mask.s6_addr32[0];
> candidate.s6_addr32[1] &= mask.s6_addr32[1];
> candidate.s6_addr32[2] &= mask.s6_addr32[2];
> @@ -1136,19 +1136,19 @@ in6_lifaddr_ioctl(u_long cmd, caddr_t da
>
> /* fill in6_aliasreq and do ioctl(SIOCDIFADDR_IN6) */
> bzero(&ifra, sizeof(ifra));
> - bcopy(iflr->iflr_name, ifra.ifra_name,
> + memcpy(ifra.ifra_name, iflr->iflr_name,
> sizeof(ifra.ifra_name));
>
> - bcopy(&ia6->ia_addr, &ifra.ifra_addr,
> + memcpy(&ifra.ifra_addr, &ia6->ia_addr,
> ia6->ia_addr.sin6_len);
> if ((ifp->if_flags & IFF_POINTOPOINT) != 0) {
> - bcopy(&ia6->ia_dstaddr, &ifra.ifra_dstaddr,
> + memcpy(&ifra.ifra_dstaddr, &ia6->ia_dstaddr,
> ia6->ia_dstaddr.sin6_len);
> } else {
> bzero(&ifra.ifra_dstaddr,
> sizeof(ifra.ifra_dstaddr));
> }
> - bcopy(&ia6->ia_prefixmask, &ifra.ifra_dstaddr,
> + memcpy(&ifra.ifra_dstaddr, &ia6->ia_prefixmask,
> ia6->ia_prefixmask.sin6_len);
>
> ifra.ifra_flags = ia6->ia6_flags;
> Index: in6_ifattach.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_ifattach.c,v
> retrieving revision 1.100
> diff -u -p -r1.100 in6_ifattach.c
> --- in6_ifattach.c 30 Jun 2016 08:19:03 -0000 1.100
> +++ in6_ifattach.c 20 Sep 2016 01:00:36 -0000
> @@ -99,7 +99,7 @@ get_last_resort_ifid(struct ifnet *ifp,
> SHA512Final(digest, &ctx);
>
> /* assumes sizeof(digest) > sizeof(ifid) */
> - bcopy(digest, &in6->s6_addr[8], 8);
> + memcpy(&in6->s6_addr[8], digest, 8);
>
> /* make sure to set "u" bit to local, and "g" bit to individual. */
> in6->s6_addr[8] &= ~EUI64_GBIT; /* g bit to "individual" */
> @@ -453,7 +453,7 @@ in6_nigroup(struct ifnet *ifp, const cha
> sa6->sin6_addr.s6_addr16[0] = htons(0xff02);
> sa6->sin6_addr.s6_addr16[1] = htons(ifp->if_index);
> sa6->sin6_addr.s6_addr8[11] = 2;
> - bcopy(digest, &sa6->sin6_addr.s6_addr32[3],
> + memcpy(&sa6->sin6_addr.s6_addr32[3], digest,
> sizeof(sa6->sin6_addr.s6_addr32[3]));
>
> return 0;
> Index: ip6_input.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/ip6_input.c,v
> retrieving revision 1.168
> diff -u -p -r1.168 ip6_input.c
> --- ip6_input.c 24 Aug 2016 09:41:12 -0000 1.168
> +++ ip6_input.c 20 Sep 2016 01:00:37 -0000
> @@ -794,7 +794,7 @@ ip6_process_hopopts(struct mbuf *m, u_in
> return (-1);
> }
> optlen = IP6OPT_RTALERT_LEN;
> - bcopy((caddr_t)(opt + 2), (caddr_t)&rtalert_val, 2);
> + memcpy((caddr_t)&rtalert_val, (caddr_t)(opt + 2), 2);
> *rtalertp = ntohs(rtalert_val);
> break;
> case IP6OPT_JUMBO:
> @@ -827,9 +827,9 @@ ip6_process_hopopts(struct mbuf *m, u_in
>
> /*
> * We may see jumbolen in unaligned location, so
> - * we'd need to perform bcopy().
> + * we'd need to perform memcpy().
> */
> - bcopy(opt + 2, &jumboplen, sizeof(jumboplen));
> + memcpy(&jumboplen, opt + 2, sizeof(jumboplen));
> jumboplen = (u_int32_t)htonl(jumboplen);
>
> #if 1
> @@ -952,7 +952,7 @@ ip6_savecontrol(struct inpcb *in6p, stru
> /* RFC 2292 sec. 5 */
> if ((in6p->inp_flags & IN6P_PKTINFO) != 0) {
> struct in6_pktinfo pi6;
> - bcopy(&ip6->ip6_dst, &pi6.ipi6_addr, sizeof(struct in6_addr));
> + memcpy(&pi6.ipi6_addr, &ip6->ip6_dst, sizeof(struct in6_addr));
> if (IN6_IS_SCOPE_EMBED(&pi6.ipi6_addr))
> pi6.ipi6_addr.s6_addr16[1] = 0;
> pi6.ipi6_ifindex = m ? m->m_pkthdr.ph_ifidx : 0;
> Index: mld6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/mld6.c,v
> retrieving revision 1.48
> diff -u -p -r1.48 mld6.c
> --- mld6.c 5 Jul 2016 10:17:14 -0000 1.48
> +++ mld6.c 20 Sep 2016 01:00:37 -0000
> @@ -109,7 +109,7 @@ mld6_init(void)
> hbh_buf[3] = 0;
> hbh_buf[4] = IP6OPT_ROUTER_ALERT;
> hbh_buf[5] = IP6OPT_RTALERT_LEN - 2;
> - bcopy((caddr_t)&rtalert_code, &hbh_buf[6], sizeof(u_int16_t));
> + memcpy(&hbh_buf[6], (caddr_t)&rtalert_code, sizeof(u_int16_t));
>
> ip6_opts.ip6po_hbh = hbh;
> }
> Index: nd6_rtr.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/nd6_rtr.c,v
> retrieving revision 1.145
> diff -u -p -r1.145 nd6_rtr.c
> --- nd6_rtr.c 8 Sep 2016 09:02:42 -0000 1.145
> +++ nd6_rtr.c 20 Sep 2016 01:00:37 -0000
> @@ -1914,7 +1914,7 @@ in6_ifadd(struct nd_prefix *pr, int priv
> ifra.ifra_addr.sin6_family = AF_INET6;
> ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6);
> /* prefix */
> - bcopy(&pr->ndpr_prefix.sin6_addr, &ifra.ifra_addr.sin6_addr,
> + memcpy(&ifra.ifra_addr.sin6_addr, &pr->ndpr_prefix.sin6_addr,
> sizeof(ifra.ifra_addr.sin6_addr));
> ifra.ifra_addr.sin6_addr.s6_addr32[0] &= mask.s6_addr32[0];
> ifra.ifra_addr.sin6_addr.s6_addr32[1] &= mask.s6_addr32[1];
> @@ -1924,7 +1924,7 @@ in6_ifadd(struct nd_prefix *pr, int priv
> /* interface ID */
> if (privacy) {
> ifra.ifra_flags |= IN6_IFF_PRIVACY;
> - bcopy(&pr->ndpr_prefix.sin6_addr, &rand_ifid,
> + memcpy(&rand_ifid, &pr->ndpr_prefix.sin6_addr,
> sizeof(rand_ifid));
> in6_get_rand_ifid(ifp, &rand_ifid);
> ifra.ifra_addr.sin6_addr.s6_addr32[0] |=
> @@ -1949,7 +1949,7 @@ in6_ifadd(struct nd_prefix *pr, int priv
> /* new prefix mask. */
> ifra.ifra_prefixmask.sin6_len = sizeof(struct sockaddr_in6);
> ifra.ifra_prefixmask.sin6_family = AF_INET6;
> - bcopy(&mask, &ifra.ifra_prefixmask.sin6_addr,
> + memcpy(&ifra.ifra_prefixmask.sin6_addr, &mask,
> sizeof(ifra.ifra_prefixmask.sin6_addr));
>
> /*
>