--- /dev/null
+diff -urN mrouted-3.9-beta3.0rig/cfparse.y mrouted-3.9-beta3/cfparse.y
+--- mrouted-3.9-beta3.0rig/cfparse.y 1998-03-01 02:48:58.000000000 +0100
++++ mrouted-3.9-beta3/cfparse.y 2009-01-14 21:17:00.000000000 +0100
+@@ -583,8 +583,7 @@
+ if (hp->h_addr_list[1])
+ fatal("Hostname %s does not %s",
+ $1, "map to a unique address");
+-
+- bcopy(hp->h_addr_list[0], &$$,
++ memmove (&$$, hp->h_addr_list[0],
+ hp->h_length);
+ }
+
+diff -urN mrouted-3.9-beta3.0rig/config.c mrouted-3.9-beta3/config.c
+--- mrouted-3.9-beta3.0rig/config.c 1998-01-06 02:57:41.000000000 +0100
++++ mrouted-3.9-beta3/config.c 2009-01-14 21:18:59.000000000 +0100
+@@ -89,7 +89,7 @@
+ * SIOCGIFFLAGS stomps over it because the requests
+ * are returned in a union.)
+ */
+- bcopy(ifrp->ifr_name, ifr.ifr_name, sizeof(ifr.ifr_name));
++ memmove (ifr.ifr_name, ifrp->ifr_name, sizeof(ifr.ifr_name));
+
+ /*
+ * Ignore loopback interfaces and interfaces that do not support
+diff -urN mrouted-3.9-beta3.0rig/defs.h mrouted-3.9-beta3/defs.h
+--- mrouted-3.9-beta3.0rig/defs.h 2009-01-14 21:12:22.000000000 +0100
++++ mrouted-3.9-beta3/defs.h 2009-01-14 21:20:05.000000000 +0100
+@@ -116,8 +116,6 @@
+ #endif /* RSRR */
+
+ #ifdef SYSV
+-#define bcopy(a, b, c) memcpy(b, a, c)
+-#define bzero(s, n) memset((s), 0, (n))
+ #define setlinebuf(s) setvbuf(s, NULL, _IOLBF, 0)
+ #endif
+
+diff -urN mrouted-3.9-beta3.0rig/igmp.c mrouted-3.9-beta3/igmp.c
+--- mrouted-3.9-beta3.0rig/igmp.c 1998-01-06 02:57:43.000000000 +0100
++++ mrouted-3.9-beta3/igmp.c 2009-01-14 21:27:41.000000000 +0100
+@@ -56,7 +56,7 @@
+ k_set_loop(FALSE); /* disable multicast loopback */
+
+ ip = (struct ip *)send_buf;
+- bzero(ip, sizeof(struct ip));
++ memset(ip, 0, sizeof(struct ip));
+ /*
+ * Fields zeroed that aren't filled in later:
+ * - IP ID (let the kernel fill it in)
+@@ -421,7 +421,7 @@
+ }
+ }
+
+- bzero(&sdst, sizeof(sdst));
++ memset(&sdst, 0, sizeof(sdst));
+ sdst.sin_family = AF_INET;
+ #ifdef HAVE_SA_LEN
+ sdst.sin_len = sizeof(sdst);
+diff -urN mrouted-3.9-beta3.0rig/ipip.c mrouted-3.9-beta3/ipip.c
+--- mrouted-3.9-beta3.0rig/ipip.c 1998-01-06 02:57:45.000000000 +0100
++++ mrouted-3.9-beta3/ipip.c 2009-01-14 21:28:19.000000000 +0100
+@@ -61,7 +61,7 @@
+ ip = v->uv_encap_hdr = (struct ip *)malloc(sizeof(struct ip));
+ if (ip == NULL)
+ log(LOG_ERR, 0, "out of memory");
+- bzero(ip, sizeof(struct ip));
++ memset(ip, 0, sizeof(struct ip));
+ /*
+ * Fields zeroed that aren't filled in later:
+ * - IP ID (let the kernel fill it in)
+@@ -111,7 +111,7 @@
+ ip->ip_len = htons(ip->ip_len);
+ #endif
+
+- bzero(&sdst, sizeof(sdst));
++ memset(&sdst, 0, sizeof(sdst));
+ sdst.sin_family = AF_INET;
+ #ifdef HAVE_SA_LEN
+ sdst.sin_len = sizeof(sdst);
+@@ -123,7 +123,7 @@
+ iov[1].iov_base = (caddr_t)send_buf;
+ iov[1].iov_len = MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen;
+
+- bzero(&msg, sizeof(msg));
++ memset(&msg, 0, sizeof(msg));
+ msg.msg_name = (caddr_t)&sdst;
+ msg.msg_namelen = sizeof(sdst);
+ msg.msg_iov = iov;
+diff -urN mrouted-3.9-beta3.0rig/main.c mrouted-3.9-beta3/main.c
+--- mrouted-3.9-beta3.0rig/main.c 2009-01-14 21:12:22.000000000 +0100
++++ mrouted-3.9-beta3/main.c 2009-01-14 21:22:33.000000000 +0100
+@@ -429,7 +429,7 @@
+ gettimeofday(&curtime, NULL);
+ lasttime = curtime;
+ for(;;) {
+- bcopy((char *)&readers, (char *)&rfds, sizeof(rfds));
++ memmove ((char *)&rfds, (char *)&readers, sizeof(rfds));
+ secs = timer_nextTimer();
+ if (secs == -1)
+ timeout = NULL;
+diff -urN mrouted-3.9-beta3.0rig/prune.c mrouted-3.9-beta3/prune.c
+--- mrouted-3.9-beta3.0rig/prune.c 1998-03-01 03:06:32.000000000 +0100
++++ mrouted-3.9-beta3/prune.c 2009-01-14 21:27:06.000000000 +0100
+@@ -2450,7 +2450,7 @@
+ /* copy the packet to the sending buffer */
+ p = send_buf + MIN_IP_HEADER_LEN + IGMP_MINLEN;
+
+- bcopy(data, p, datalen);
++ memmove (p, data, datalen);
+
+ p += datalen;
+
+@@ -2469,7 +2469,7 @@
+ * fill in initial response fields
+ */
+ resp = (struct tr_resp *)p;
+- bzero(resp, sizeof(struct tr_resp));
++ memset(resp, 0, sizeof(struct tr_resp));
+ datalen += RLEN;
+
+ resp->tr_qarr = htonl(((tp.tv_sec + JAN_1970) << 16) +
+diff -urN mrouted-3.9-beta3.0rig/route.c mrouted-3.9-beta3/route.c
+--- mrouted-3.9-beta3.0rig/route.c 1998-01-15 01:08:34.000000000 +0100
++++ mrouted-3.9-beta3/route.c 2009-01-14 21:26:37.000000000 +0100
+@@ -388,7 +388,8 @@
+ else r->rt_originwidth = 1;
+ r->rt_flags = 0;
+ r->rt_dominants = (u_int32 *)(r + 1);
+- bzero(r->rt_dominants, numvifs * sizeof(u_int32));
++ memset(r->rt_dominants, 0, numvifs * sizeof(u_int32));
++
+ r->rt_groups = NULL;
+ VIFM_CLRALL(r->rt_children);
+ NBRM_CLRALL(r->rt_subordinates);
+@@ -968,7 +969,7 @@
+ bh->bh_dst = dst;
+ bh->bh_level = level;
+ bh->bh_datalen = datalen;
+- bcopy(p, (char *)(bh + 1), datalen);
++ memmove ((char *)(bh + 1), p, datalen);
+ v->uv_blasterend += bblen;
+
+ if (v->uv_blastertimer == 0) {
+diff -urN mrouted-3.9-beta3.0rig/rsrr.c mrouted-3.9-beta3/rsrr.c
+--- mrouted-3.9-beta3.0rig/rsrr.c 1998-01-06 02:57:58.000000000 +0100
++++ mrouted-3.9-beta3/rsrr.c 2009-01-14 21:29:18.000000000 +0100
+@@ -81,7 +81,7 @@
+ log(LOG_ERR, errno, "Can't create RSRR socket");
+
+ unlink(RSRR_SERV_PATH);
+- bzero((char *) &serv_addr, sizeof(serv_addr));
++ memset((char *) &serv_addr, 0, sizeof(serv_addr));
+ serv_addr.sun_family = AF_UNIX;
+ strcpy(serv_addr.sun_path, RSRR_SERV_PATH);
+ #ifdef HAVE_SA_LEN
+@@ -107,7 +107,7 @@
+ {
+ register int rsrr_recvlen;
+
+- bzero((char *) &client_addr, sizeof(client_addr));
++ memset((char *) &client_addr, 0, sizeof(client_addr));
+ rsrr_recvlen = recvfrom(rsrr_socket, rsrr_recv_buf, sizeof(rsrr_recv_buf),
+ 0, (struct sockaddr *)&client_addr, &client_length);
+ if (rsrr_recvlen < 0) {