1229972Sadrian/*- 2229972Sadrian * Copyright (c) 2010-2011 Monthadar Al Jaberi, TerraNet AB 3229972Sadrian * All rights reserved. 4229972Sadrian * 5229972Sadrian * Redistribution and use in source and binary forms, with or without 6229972Sadrian * modification, are permitted provided that the following conditions 7229972Sadrian * are met: 8229972Sadrian * 1. Redistributions of source code must retain the above copyright 9229972Sadrian * notice, this list of conditions and the following disclaimer, 10229972Sadrian * without modification. 11229972Sadrian * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12229972Sadrian * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 13229972Sadrian * redistribution must be conditioned upon including a substantially 14229972Sadrian * similar Disclaimer requirement for further binary redistribution. 15229972Sadrian * 16229972Sadrian * NO WARRANTY 17229972Sadrian * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18229972Sadrian * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19229972Sadrian * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 20229972Sadrian * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 21229972Sadrian * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 22229972Sadrian * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23229972Sadrian * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24229972Sadrian * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25229972Sadrian * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26229972Sadrian * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 27229972Sadrian * THE POSSIBILITY OF SUCH DAMAGES. 28229972Sadrian * 29229972Sadrian * $FreeBSD$ 30229972Sadrian */ 31229972Sadrian#include <stdio.h> 32229972Sadrian#include <stdlib.h> 33229972Sadrian#include <fcntl.h> 34229972Sadrian#include <sys/ioctl.h> 35229972Sadrian 36229972Sadrian#include "if_wtapioctl.h" 37229972Sadrian 38229972Sadrianstatic int dev = -1; 39229972Sadrian 40229972Sadrianstatic void create(int id) 41229972Sadrian{ 42229972Sadrian if(ioctl(dev, WTAPIOCTLCRT, &id) < 0){ 43229972Sadrian printf("error creating wtap with id=%d\n", id); 44229972Sadrian } 45229972Sadrian} 46229972Sadrian 47229972Sadrianstatic void delete(int id) 48229972Sadrian{ 49229972Sadrian if(ioctl(dev, WTAPIOCTLDEL, &id) < 0){ 50229972Sadrian printf("error deleting wtap with id=%d\n", id); 51229972Sadrian } 52229972Sadrian} 53229972Sadrian 54229972Sadrianint main( int argc, const char* argv[]) 55229972Sadrian{ 56229972Sadrian if(argc != 3){ 57229972Sadrian printf("usage: %s [c | d] wtap_id\n", argv[0]); 58229972Sadrian return -1; 59229972Sadrian } 60229972Sadrian int id = atoi(argv[2]); 61229972Sadrian if(!(id >= 0 && id < 64)){ 62229972Sadrian printf("wtap_id must be between 0 and 7\n"); 63229972Sadrian return -1; 64229972Sadrian } 65229972Sadrian dev = open("/dev/wtapctl", O_RDONLY); 66229972Sadrian if(dev < 0){ 67229972Sadrian printf("error opening wtapctl cdev\n"); 68229972Sadrian return -1; 69229972Sadrian } 70229972Sadrian switch((char)*argv[1]){ 71229972Sadrian case 'c': 72229972Sadrian create(id); 73229972Sadrian break; 74229972Sadrian case 'd': 75229972Sadrian delete(id); 76229972Sadrian break; 77229972Sadrian default: 78298881Spfg printf("wtap ioctl: unknown command '%c'\n", *argv[1]); 79229972Sadrian return -1; 80229972Sadrian } 81229972Sadrian return 0; 82229972Sadrian} 83