Date: Thu, 17 Jun 2010 23:35:58 +0200 From: Max Laier <max@love2party.net> To: Max Laier <mlaier@freebsd.org> Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-7@freebsd.org Subject: Re: svn commit: r209271 - stable/7/usr.sbin/arp Message-ID: <201006172335.58726.max@love2party.net> In-Reply-To: <201006172038.o5HKcI1J042794@svn.freebsd.org> References: <201006172038.o5HKcI1J042794@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 17 June 2010 22:38:18 Max Laier wrote: > Author: mlaier > Date: Thu Jun 17 20:38:18 2010 > New Revision: 209271 > URL: http://svn.freebsd.org/changeset/base/209271 > > Log: > MFC r209063: > Cache the last result from if_indextoname for printing. This speeds up > "arp -an" when using a lot of aliases (on a single interface). > > A better fix would include a better interface for if_indextoname than > getting the whole address list from the kernel just to find the one > index->name mapping. > > > Description of fields to fill in above: 76 columns > > --| PR: If a GNATS PR is affected by the change. > > Submitted by: If someone else sent in the change. > > Reviewed by: If someone else reviewed your modification. > > Approved by: If you needed approval for this commit. > > Obtained from: If the change is from a third party. > > MFC after: N [day[s]|week[s]|month[s]]. Request a reminder email. > > Security: Vulnerability reference (one per line) or description. > > Empty fields above will be automatically removed. Woops ... sorry 'bout that. > _M arp > M arp/arp.c > > Modified: > stable/7/usr.sbin/arp/arp.c > Directory Properties: > stable/7/usr.sbin/arp/ (props changed) > > Modified: stable/7/usr.sbin/arp/arp.c > =========================================================================== > === --- stable/7/usr.sbin/arp/arp.c Thu Jun 17 20:10:41 2010 (r209270) +++ > stable/7/usr.sbin/arp/arp.c Thu Jun 17 20:38:18 2010 (r209271) @@ -523,6 > +523,9 @@ search(u_long addr, action_fn *action) > /* > * Display an arp entry > */ > +static char lifname[IF_NAMESIZE]; > +static int64_t lifindex = -1; > + > static void > print_entry(struct sockaddr_dl *sdl, > struct sockaddr_inarp *addr, struct rt_msghdr *rtm) > @@ -530,7 +533,6 @@ print_entry(struct sockaddr_dl *sdl, > const char *host; > struct hostent *hp; > struct iso88025_sockaddr_dl_data *trld; > - char ifname[IF_NAMESIZE]; > int seg; > > if (nflag == 0) > @@ -559,8 +561,12 @@ print_entry(struct sockaddr_dl *sdl, > } > } else > printf("(incomplete)"); > - if (if_indextoname(sdl->sdl_index, ifname) != NULL) > - printf(" on %s", ifname); > + if (sdl->sdl_index != lifindex && > + if_indextoname(sdl->sdl_index, lifname) != NULL) { > + lifindex = sdl->sdl_index; > + printf(" on %s", lifname); > + } else if (sdl->sdl_index == lifindex) > + printf(" on %s", lifname); > if (rtm->rtm_rmx.rmx_expire == 0) > printf(" permanent"); > if (addr->sin_other & SIN_PROXY) > > > !DSPAM:4c1a87f6420841209311444!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006172335.58726.max>