Index: if_ether.c =================================================================== RCS file: /data/fbsd-cvs/ncvs/src/sys/netinet/if_ether.c,v retrieving revision 1.64.2.23 diff -u -r1.64.2.23 if_ether.c --- if_ether.c 11 Apr 2003 07:23:15 -0000 1.64.2.23 +++ if_ether.c 22 Jun 2003 16:34:29 -0000 @@ -556,10 +556,15 @@ * but formerly didn't normally send requests. */ static int log_arp_wrong_iface = 1; +static int log_arp_movements = 1; SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_wrong_iface, CTLFLAG_RW, &log_arp_wrong_iface, 0, "log arp packets arriving on the wrong interface"); +SYSCTL_INT(_net_link_ether_inet, OID_AUTO, log_arp_movements, CTLFLAG_RW, + &log_arp_movements, 0, + "log arp replies from MACs different than the one in the cache"); + static void in_arpinput(m) @@ -664,13 +669,14 @@ } if (sdl->sdl_alen && bcmp(ar_sha(ah), LLADDR(sdl), sdl->sdl_alen)) { - if (rt->rt_expire) - log(LOG_INFO, "arp: %s moved from %*D to %*D on %s%d\n", - inet_ntoa(isaddr), - ifp->if_addrlen, (u_char *)LLADDR(sdl), ":", - ifp->if_addrlen, (u_char *)ar_sha(ah), ":", - ifp->if_name, ifp->if_unit); - else { + if (rt->rt_expire) { + if (log_arp_movements) + log(LOG_INFO, "arp: %s moved from %*D to %*D on %s%d\n", + inet_ntoa(isaddr), + ifp->if_addrlen, (u_char *)LLADDR(sdl), ":", + ifp->if_addrlen, (u_char *)ar_sha(ah), ":", + ifp->if_name, ifp->if_unit); + } else { log(LOG_ERR, "arp: %*D attempts to modify permanent entry for %s on %s%d\n", ifp->if_addrlen, (u_char *)ar_sha(ah), ":",