1 /* 2 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that: (1) source code distributions 7 * retain the above copyright notice and this paragraph in its entirety, (2) 8 * distributions including binary code include the above copyright notice and 9 * this paragraph in its entirety in the documentation or other materials 10 * provided with the distribution, and (3) all advertising materials mentioning 11 * features or use of this software display the following acknowledgement: 12 * ``This product includes software developed by the University of California, 13 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 14 * the University nor the names of its contributors may be used to endorse 15 * or promote products derived from this software without specific prior 16 * written permission. 17 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 18 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 20 */ 21 22 #ifndef lint 23 static const char copyright[] _U_ = 24 "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ 25 The Regents of the University of California. All rights reserved.\n"; 26 #endif 27 28 #include <pcap.h> 29 #include <stdio.h> 30 #include <stdlib.h> 31 #include <string.h> 32 #include <stdarg.h> 33 34 /* Forwards */ 35 static void error(const char *, ...); 36 37 int 38 main(void) 39 { 40 char ebuf[PCAP_ERRBUF_SIZE]; 41 pcap_t *pd; 42 int status = 0; 43 44 pd = pcap_open_live("lo0", 65535, 0, 1000, ebuf); 45 if (pd == NULL) { 46 pd = pcap_open_live("lo", 65535, 0, 1000, ebuf); 47 if (pd == NULL) { 48 error("Neither lo0 nor lo could be opened: %s", 49 ebuf); 50 return 2; 51 } 52 } 53 status = pcap_activate(pd); 54 if (status != PCAP_ERROR_ACTIVATED) { 55 if (status == 0) 56 error("pcap_activate() of opened pcap_t succeeded"); 57 else if (status == PCAP_ERROR) 58 error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_ACTIVATED", 59 pcap_geterr(pd)); 60 else 61 error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_ACTIVATED", 62 pcap_statustostr(status)); 63 } 64 return 0; 65 } 66 67 /* VARARGS */ 68 static void 69 error(const char *fmt, ...) 70 { 71 va_list ap; 72 73 (void)fprintf(stderr, "reactivatetest: "); 74 va_start(ap, fmt); 75 (void)vfprintf(stderr, fmt, ap); 76 va_end(ap); 77 if (*fmt) { 78 fmt += strlen(fmt); 79 if (fmt[-1] != '\n') 80 (void)fputc('\n', stderr); 81 } 82 exit(1); 83 /* NOTREACHED */ 84 } 85