1511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* 2511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 3511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * The Regents of the University of California. All rights reserved. 4511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 5511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Redistribution and use in source and binary forms, with or without 6511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * modification, are permitted provided that: (1) source code distributions 7511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * retain the above copyright notice and this paragraph in its entirety, (2) 8511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * distributions including binary code include the above copyright notice and 9511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * this paragraph in its entirety in the documentation or other materials 10511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * provided with the distribution, and (3) all advertising materials mentioning 11511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * features or use of this software display the following acknowledgement: 12511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ``This product includes software developed by the University of California, 13511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 14511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * the University nor the names of its contributors may be used to endorse 15511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * or promote products derived from this software without specific prior 16511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * written permission. 17511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 18511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 19511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 20511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */ 21511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 22511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifndef lint 23511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstatic const char copyright[] = 24511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ 25511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallThe Regents of the University of California. All rights reserved.\n"; 26511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif 27511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 28511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#include <pcap.h> 29511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#include <stdio.h> 30511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#include <stdlib.h> 31511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#include <string.h> 32511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#include <stdarg.h> 33511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 34511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* Forwards */ 35511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstatic void error(const char *, ...); 36511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 37511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallint 38511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallmain(void) 39511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall{ 40511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall char ebuf[PCAP_ERRBUF_SIZE]; 41511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall pcap_t *pd; 42511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall int status = 0; 43511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 44511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall pd = pcap_open_live("lo0", 65535, 0, 1000, ebuf); 45511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (pd == NULL) { 46511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall pd = pcap_open_live("lo", 65535, 0, 1000, ebuf); 47511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (pd == NULL) { 48511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall error("Neither lo0 nor lo could be opened: %s", 49511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall ebuf); 50511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall return 2; 51511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } 52511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } 53511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall status = pcap_activate(pd); 54511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (status != PCAP_ERROR_ACTIVATED) { 55511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (status == 0) 56511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall error("pcap_activate() of opened pcap_t succeeded"); 57511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall else if (status == PCAP_ERROR) 58511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_ACTIVATED", 59511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall pcap_geterr(pd)); 60511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall else 61511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_ACTIVATED", 62511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall pcap_statustostr(status)); 63511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } 64511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall return 0; 65511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall} 66511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 67511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/* VARARGS */ 68511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstatic void 69511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallerror(const char *fmt, ...) 70511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall{ 71511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall va_list ap; 72511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall 73511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall (void)fprintf(stderr, "reactivatetest: "); 74511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall va_start(ap, fmt); 75511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall (void)vfprintf(stderr, fmt, ap); 76511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall va_end(ap); 77511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (*fmt) { 78511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall fmt += strlen(fmt); 79511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall if (fmt[-1] != '\n') 80511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall (void)fputc('\n', stderr); 81511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall } 82511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall exit(1); 83511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall /* NOTREACHED */ 84511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall} 85