Annotation of embedaddon/hping2/libpcap_stuff.c, revision 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>