diff options
author | 1995-11-13 04:31:41 +0000 | |
---|---|---|
committer | 1995-11-13 04:31:41 +0000 | |
commit | 13e4d6b7c0b2466dd84578b0f32fbf515c5d5fd9 (patch) | |
tree | 4abeeef6a2a787600bc53dc7a5838de4d8ae3810 | |
parent | generic audio man page; from jtk@kolvir.arlington.ma.us; netbsd pr#1752 (diff) | |
download | wireguard-openbsd-13e4d6b7c0b2466dd84578b0f32fbf515c5d5fd9.tar.xz wireguard-openbsd-13e4d6b7c0b2466dd84578b0f32fbf515c5d5fd9.zip |
pcap inject function is a good idea; from scottr@edsi.org; netbsd pr#1747
-rw-r--r-- | lib/libpcap/pcap-bpf.c | 6 | ||||
-rw-r--r-- | lib/libpcap/pcap.3 | 9 | ||||
-rw-r--r-- | lib/libpcap/pcap.h | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/lib/libpcap/pcap-bpf.c b/lib/libpcap/pcap-bpf.c index b73c86cc5a5..6e5c8e2e81f 100644 --- a/lib/libpcap/pcap-bpf.c +++ b/lib/libpcap/pcap-bpf.c @@ -126,6 +126,12 @@ pcap_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) return (n); } +int +pcap_inject(pcap_t *p, const void *buf, size_t len) +{ + return (write(p->fd, buf, len)); +} + static inline int bpf_open(pcap_t *p, char *errbuf) { diff --git a/lib/libpcap/pcap.3 b/lib/libpcap/pcap.3 index ac8c422a901..95a2d8a38e0 100644 --- a/lib/libpcap/pcap.3 +++ b/lib/libpcap/pcap.3 @@ -57,6 +57,10 @@ u_char *sp) .ft .LP .ft B +int pcap_inject(pcap_t *p, void *, size_t) +.ft +.LP +.ft B int pcap_immediate(pcap_t *p) .ft .LP @@ -213,6 +217,11 @@ Note that its calling arguments are suitable for use with (??? this guy is kind of weird.) .ft .PP +.B pcap_inject() +uses +.B write(2) +to inject a raw packet through the network interface. +.PP .B pcap_immediate() sets ``immediate'' mode. If this isn't supported by the under lying packet capture, -1 is diff --git a/lib/libpcap/pcap.h b/lib/libpcap/pcap.h index e839e643d6a..0ff43eebbf0 100644 --- a/lib/libpcap/pcap.h +++ b/lib/libpcap/pcap.h @@ -110,6 +110,7 @@ int pcap_loop(pcap_t *, int, pcap_handler, u_char *); int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *); const u_char* pcap_next(pcap_t *, struct pcap_pkthdr *); +int pcap_inject(pcap_t *, const void *, size_t); int pcap_stats(pcap_t *, struct pcap_stat *); int pcap_setfilter(pcap_t *, struct bpf_program *); void pcap_perror(pcap_t *, char *); |