>Number: 158500 >Category: bin >Synopsis: Add -p to arp(8) to hide permanent entries >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Jun 29 18:30:26 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Jille Timmermans >Release: FreeBSD 8.0-STABLE i386 >Organization: >Environment: System: FreeBSD 8.0-STABLE FreeBSD 8.0-STABLE #0 r204041
>Description: I have 36 aliases on my network interfaces which result in 36 permanent arp entries. When I want to see hosts on my network I don't care about the permanent entries, so I'd like an option to hide them. >How-To-Repeat: arp -pa >Fix: --- arp.diff begins here --- Index: arp.c =================================================================== --- arp.c (revision 204041) +++ arp.c (working copy) @@ -99,6 +99,7 @@ static int valid_type(int type); static int nflag; /* no reverse dns lookups */ +static int pflag = 0; /* hide permanemt entries */ static char *rifname; static int expire_time, flags, doing_proxy, proxy_only; @@ -119,7 +120,7 @@ int rtn = 0; int aflag = 0; /* do it for all entries */ - while ((ch = getopt(argc, argv, "andfsSi:")) != -1) + while ((ch = getopt(argc, argv, "andfpsSi:")) != -1) switch(ch) { case 'a': aflag = 1; @@ -130,6 +131,9 @@ case 'n': nflag = 1; break; + case 'p': + pflag = 1; + break; case 'S': SETFUNC(F_REPLACE); break; @@ -161,6 +165,10 @@ err(1, "if_nametoindex(%s)", rifname); } } + if (pflag) { + if (func != F_GET && !(func == F_DELETE && aflag)) + errx(1, "-p not applicable to this operation"); + } switch (func) { case F_GET: if (aflag) { @@ -540,6 +548,10 @@ if (rifname && if_indextoname(sdl->sdl_index, ifname) && strcmp(ifname, rifname)) continue; + if (pflag) { + if (rtm->rtm_rmx.rmx_expire == 0) + continue; + } if (addr) { if (addr != sin2->sin_addr.s_addr) continue; @@ -653,10 +665,10 @@ usage(void) { fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n", - "usage: arp [-n] [-i interface] hostname", - " arp [-n] [-i interface] -a", + "usage: arp [-np] [-i interface] hostname", + " arp [-np] [-i interface] -a", " arp -d hostname [pub]", - " arp -d [-i interface] -a", + " arp -d [-p] [-i interface] -a", " arp -s hostname ether_addr [temp] [reject | blackhole] [pub [only]]", " arp -S hostname ether_addr [temp] [reject | blackhole] [pub [only]]", " arp -f filename"); Index: arp.8 =================================================================== --- arp.8 (revision 204041) +++ arp.8 (working copy) @@ -36,11 +36,11 @@ .Nd address resolution display and control .Sh SYNOPSIS .Nm -.Op Fl n +.Op Fl np .Op Fl i Ar interface .Ar hostname .Nm -.Op Fl n +.Op Fl np .Op Fl i Ar interface .Fl a .Nm @@ -48,6 +48,7 @@ .Op Cm pub .Nm .Fl d +.Op Fl p .Op Fl i Ar interface .Fl a .Nm @@ -111,6 +112,8 @@ Show network addresses as numbers (normally .Nm attempts to display addresses symbolically). +.It Fl p +Hide permanent entries. .It Fl s Ar hostname ether_addr Create an .Tn ARP --- arp.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"