On Thu, Aug 26, 2010 at 08:51:50PM +1000, Jonathan Gray wrote:
> On Thu, Aug 26, 2010 at 12:34:19AM +1000, Jonathan Gray wrote:
> > Currently rarpd can only listen on all or one interface, the
> > following lets multiple interfaces be specified like dhcpd.
> 
> previous diff missed usage as pointed out by sthen/jmc
> 

Looks right but take that with a grain of salt since it is IPv6 stuff and
I have no clue about all the IPv6 evilness.

> Index: rarpd.8
> ===================================================================
> RCS file: /cvs/src/usr.sbin/rarpd/rarpd.8,v
> retrieving revision 1.17
> diff -u -p -r1.17 rarpd.8
> --- rarpd.8   23 May 2008 15:23:53 -0000      1.17
> +++ rarpd.8   26 Aug 2010 10:49:47 -0000
> @@ -30,11 +30,11 @@
>  .Sh SYNOPSIS
>  .Nm rarpd
>  .Op Fl adflt
> -.Ar interface
> +.Ar if0 Op Ar ... ifN
>  .Sh DESCRIPTION
>  .Nm
>  services Reverse ARP requests on the Ethernet connected to
> -.Ar interface .
> +the specified interfaces.
>  Upon receiving a request,
>  .Nm
>  maps the target hardware address to an IP address via its name, which
> @@ -58,9 +58,7 @@ The options are as follows:
>  Listen on all the Ethernets attached to the system.
>  If
>  .Fl a
> -is omitted, an
> -.Ar interface
> -must be specified.
> +is omitted, a list of interfaces must be specified.
>  .It Fl d
>  Run in debug mode, with all the output to stderr.
>  This option implies the
> Index: rarpd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/rarpd/rarpd.c,v
> retrieving revision 1.49
> diff -u -p -r1.49 rarpd.c
> --- rarpd.c   27 Oct 2009 23:59:54 -0000      1.49
> +++ rarpd.c   26 Aug 2010 10:49:47 -0000
> @@ -134,14 +134,20 @@ main(int argc, char *argv[])
>                       /* NOTREACHED */
>               }
>       }
> -     ifname = argv[optind++];
> -     if ((aflag && ifname) || (!aflag && ifname == 0))
> +     argc -= optind;
> +     argv += optind;
> +
> +     if ((aflag && argc > 0) || (!aflag && argc == 0))
>               usage();
>  
>       if (aflag)
>               init_all();
>       else
> -             init_one(ifname);
> +             while (argc > 0) {
> +                     init_one(argv[0]);
> +                     argc--;
> +                     argv++;
> +             }
>  
>       if ((!fflag) && (!dflag)) {
>               pid = fork();
> @@ -247,7 +253,7 @@ init_all(void)
>  void
>  usage(void)
>  {
> -     (void) fprintf(stderr, "usage: rarpd [-adflt] interface\n");
> +     (void) fprintf(stderr, "usage: rarpd [-adflt] if0 [... ifN]\n");
>       exit(1);
>  }
> 

-- 
:wq Claudio

Reply via email to