Date: Wed, 11 Jan 2012 21:09:52 +0300 From: Sergey Kandaurov <pluknet@freebsd.org> To: Adrian Chadd <adrian@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r229972 - in head/tools/tools/wtap: . wtap Message-ID: <CAE-mSOJwre0aqC%2B=uyXX_AO=KW9VxWRUi_B2kQVK37AxcX5qVA@mail.gmail.com> In-Reply-To: <201201111751.q0BHpuNF070157@svn.freebsd.org> References: <201201111751.q0BHpuNF070157@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 11 January 2012 21:51, Adrian Chadd <adrian@freebsd.org> wrote: > Author: adrian > Date: Wed Jan 11 17:51:56 2012 > New Revision: 229972 > URL: http://svn.freebsd.org/changeset/base/229972 > > Log: > Bring over a tool to create and destroy wtap instances. > > Submitted by: Monthadar Al Jaberi <monthadar@gmail.com> > > Added: > head/tools/tools/wtap/ > head/tools/tools/wtap/wtap/ > head/tools/tools/wtap/wtap/Makefile (contents, props changed) > head/tools/tools/wtap/wtap/wtap.c (contents, props changed) > > Added: head/tools/tools/wtap/wtap/Makefile > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/tools/tools/wtap/wtap/Makefile Wed Jan 11 17:51:56 2012 (r229972) > @@ -0,0 +1,9 @@ > +# $FreeBSD$ > + > +PROG= wtap > +SRC= wtap.c > +NO_MAN= 1 > + > +CFLAGS+= -I${.CURDIR}/../../../../sys/dev/wtap/ [nitpicking] I assume this is to properly build with if_wtapioctl.h. Maybe better install this header to /usr/include/sys then? > + > +.include <bsd.prog.mk> > > Added: head/tools/tools/wtap/wtap/wtap.c > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/tools/tools/wtap/wtap/wtap.c Wed Jan 11 17:51:56 2012 (r229972) > @@ -0,0 +1,82 @@ > +/*- > + * Copyright (c) 2010-2011 Monthadar Al Jaberi, TerraNet AB > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer, > + * without modification. > + * 2. Redistributions in binary form must reproduce at minimum a disclaimer > + * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any > + * redistribution must be conditioned upon including a substantially > + * similar Disclaimer requirement for further binary redistribution. > + * > + * NO WARRANTY > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY > + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL > + * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, > + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER > + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > + * THE POSSIBILITY OF SUCH DAMAGES. > + * > + * $FreeBSD$ > + */ > +#include <stdio.h> > +#include <stdlib.h> > +#include <fcntl.h> > +#include <sys/ioctl.h> > + > +#include "if_wtapioctl.h" .. to use rather <net/if_wtapioctl.h> > + > +static int dev = -1; > + > +static void create(int id) > +{ > + if(ioctl(dev, WTAPIOCTLCRT, &id) < 0){ > + printf("error creating wtap with id=%d\n", id); > + } > +} > + > +static void delete(int id) > +{ > + if(ioctl(dev, WTAPIOCTLDEL, &id) < 0){ > + printf("error deleting wtap with id=%d\n", id); > + } > +} > + > +int main( int argc, const char* argv[]) > +{ > + if(argc != 3){ > + printf("usage: %s [c | d] wtap_id\n", argv[0]); > + return -1; > + } > + int id = atoi(argv[2]); > + if(!(id >= 0 && id < 64)){ > + printf("wtap_id must be between 0 and 7\n"); > + return -1; > + } This checks to be not larger than 64, but prints a warning to be not larger than 7. > + dev = open("/dev/wtapctl", O_RDONLY); > + if(dev < 0){ > + printf("error opening wtapctl cdev\n"); > + return -1; > + } Perhaps, it makes sense to print errno. > + switch((char)*argv[1]){ > + case 'c': > + create(id); > + break; > + case 'd': > + delete(id); > + break; > + default: > + printf("wtap ioctl: unkown command '%c'\n", *argv[1]); a typo there > + return -1; > + } > + return 0; > +} The code could be better styled. Thanks for your work! -- wbr, pluknet
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAE-mSOJwre0aqC%2B=uyXX_AO=KW9VxWRUi_B2kQVK37AxcX5qVA>
