Annotation of embedaddon/hping2/libpcap_stuff.c, revision 1.1.1.1
1.1 misho 1: /*
2: * $smu-mark$
3: * $name: libpcap_stuff.c$
4: * $author: Salvatore Sanfilippo <antirez@invece.org>$
5: * $copyright: Copyright (C) 1999 by Salvatore Sanfilippo$
6: * $license: This software is under GPL version 2 of license$
7: * $date: Fri Nov 5 11:55:48 MET 1999$
8: * $rev: 8$
9: */
10:
11: #include "hping2.h"
12:
13: /* This is not be compiled if the target is linux without libpcap */
14: #if (!defined OSTYPE_LINUX) || (defined FORCE_LIBPCAP)
15: #include <stdio.h>
16: #include <string.h>
17: #include <stdlib.h>
18: #include <sys/ioctl.h>
19: #include <pcap.h>
20: #include <net/bpf.h>
21:
22: #include "globals.h"
23:
24: int open_pcap()
25: {
26: int on;
27:
28: on = 1; /* no warning if BIOCIMMEDIATE will not be compiled */
29: if (opt_debug)
30: printf("DEBUG: pcap_open_live(%s, 99999, 0, 1, %p)\n",
31: ifname, errbuf);
32:
33: pcapfp = pcap_open_live(ifname, 99999, 0, 1, errbuf);
34: if (pcapfp == NULL) {
35: printf("[open_pcap] pcap_open_live: %s\n", errbuf);
36: return -1;
37: }
38: #if (!defined OSTYPE_LINUX) && (!defined __sun__)
39: /* Return the packets to userspace as fast as possible */
40: if (ioctl(pcap_fileno(pcapfp), BIOCIMMEDIATE, &on) == -1)
41: perror("[open_pcap] ioctl(... BIOCIMMEDIATE ...)");
42: #endif
43: return 0;
44: }
45:
46: int close_pcap()
47: {
48: pcap_close(pcapfp);
49: return 0;
50: }
51:
52: int pcap_recv(char *packet, unsigned int size)
53: {
54: char *p = NULL;
55: int pcapsize;
56:
57: if (opt_debug)
58: printf("DEBUG: under pcap_recv()\n");
59:
60: while(p == NULL) {
61: p = (unsigned char*) pcap_next(pcapfp, &hdr);
62: if (p == NULL && opt_debug)
63: printf("DEBUG: [pcap_recv] p = NULL\n");
64: }
65:
66: pcapsize = hdr.caplen;
67:
68: if (pcapsize < size)
69: size = pcapsize;
70:
71: memcpy(packet, p, pcapsize);
72:
73: return pcapsize;
74: }
75: #endif /* ! OSTYPE_LINUX || FORCE_LIBPCAP */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>