📄 pcaputil.c
字号:
/* pcaputil.c Copyright (c) 2000 Dug Song <dugsong@monkey.org> $Id: pcaputil.c,v 1.1 2000/09/21 03:04:41 dugsong Exp $*/#include <sys/param.h>#include <sys/types.h>#include <sys/ioctl.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <err.h>#include <pcap.h>#ifdef BSD#include <pcap-int.h>#endif#include "pcaputil.h"#ifdef BSDstatic intbpf_immediate(int fd, int on){ return (ioctl(fd, BIOCIMMEDIATE, &on));}#endifintpcap_dloff(pcap_t *pd){ int offset = -1; switch (pcap_datalink(pd)) { case DLT_EN10MB: offset = 14; break; case DLT_IEEE802: offset = 22; break; case DLT_FDDI: offset = 21; break;#ifdef DLT_LOOP case DLT_LOOP:#endif case DLT_NULL: offset = 4; break; default: warnx("unsupported datalink type"); break; } return (offset);}pcap_t *pcap_init(char *intf, char *filter, int snaplen){ pcap_t *pd; u_int net, mask; struct bpf_program fcode; char ebuf[PCAP_ERRBUF_SIZE]; if (intf == NULL && (intf = pcap_lookupdev(ebuf)) == NULL) { warnx("%s", ebuf); return (NULL); } if ((pd = pcap_open_live(intf, snaplen, 1, 512, ebuf)) == NULL) { warnx("%s", ebuf); return (NULL); } if (pcap_lookupnet(intf, &net, &mask, ebuf) == -1) { warnx("%s", ebuf); return (NULL); } if (pcap_compile(pd, &fcode, filter, 1, mask) < 0) { pcap_perror(pd, "pcap_compile"); return (NULL); } if (pcap_setfilter(pd, &fcode) == -1) { pcap_perror(pd, "pcap_compile"); return (NULL); }#ifdef BSD if (bpf_immediate(pd->fd, 1) < 0) { perror("ioctl"); return (NULL); }#endif return (pd);}/* from tcpdump util.c. */char *copy_argv(char **argv){ char **p, *buf, *src, *dst; u_int len = 0; p = argv; if (*p == 0) return (0); while (*p) len += strlen(*p++) + 1; if ((buf = (char *)malloc(len)) == NULL) err(1, "copy_argv: malloc"); p = argv; dst = buf; while ((src = *p++) != NULL) { while ((*dst++ = *src++) != '\0') ; dst[-1] = ' '; } dst[-1] = '\0'; return (buf);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -