diff options
author | Marco S Hyman <marc@cvs.openbsd.org> | 2001-11-11 20:20:54 +0000 |
---|---|---|
committer | Marco S Hyman <marc@cvs.openbsd.org> | 2001-11-11 20:20:54 +0000 |
commit | 22893dc58d818f447b92c50b32754ec8ef010a34 (patch) | |
tree | 965920a956f53bc4127378217158702e2462c11c /regress/lib/libpthread | |
parent | 92f9066a4ef297de3c39d6e5f9fd965796fc4b57 (diff) |
bring back test, this time in the public domain
Diffstat (limited to 'regress/lib/libpthread')
-rw-r--r-- | regress/lib/libpthread/Makefile | 4 | ||||
-rw-r--r-- | regress/lib/libpthread/pcap/Makefile | 6 | ||||
-rw-r--r-- | regress/lib/libpthread/pcap/pcap.c | 62 |
3 files changed, 70 insertions, 2 deletions
diff --git a/regress/lib/libpthread/Makefile b/regress/lib/libpthread/Makefile index f09a5177bfd..bcfe218a6d0 100644 --- a/regress/lib/libpthread/Makefile +++ b/regress/lib/libpthread/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.6 2001/11/11 01:16:26 marc Exp $ +# $OpenBSD: Makefile,v 1.7 2001/11/11 20:20:53 marc Exp $ -SUBDIR= cancel close cwd execve fork group netdb poll \ +SUBDIR= cancel close cwd execve fork group netdb pcap poll \ preemption pthread_cond_timedwait pthread_create \ pthread_join pthread_mutex readdir select setjmp signal \ sigsuspend sigwait sleep socket stdarg stdio switch system diff --git a/regress/lib/libpthread/pcap/Makefile b/regress/lib/libpthread/pcap/Makefile new file mode 100644 index 00000000000..4178e00d368 --- /dev/null +++ b/regress/lib/libpthread/pcap/Makefile @@ -0,0 +1,6 @@ +# $OpenBSD: Makefile,v 1.3 2001/11/11 20:20:53 marc Exp $ + +PROG= pcap +SRCS= pcap.c + +.include <bsd.prog.mk> diff --git a/regress/lib/libpthread/pcap/pcap.c b/regress/lib/libpthread/pcap/pcap.c new file mode 100644 index 00000000000..5c7f865e74f --- /dev/null +++ b/regress/lib/libpthread/pcap/pcap.c @@ -0,0 +1,62 @@ +/* $OpenBSD: pcap.c,v 1.3 2001/11/11 20:20:53 marc Exp $ */ +/* + * Placed in the PUBLIC DOMAIN + */ + +#include <pcap.h> +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include "test.h" + +#define LOOPBACK_IF "lo0" +#define SNAPLEN 96 +#define NO_PROMISC 0 +#define PKTCNT 3 + +volatile int packet_count = 0; + +void +packet_ignore(u_char *tag, const struct pcap_pkthdr *hdr, const u_char *data) +{ + packet_count += 1; +} + +void * +pcap_thread(void *arg) +{ + char errbuf[PCAP_ERRBUF_SIZE]; + pcap_t *handle; + + SET_NAME("pcap_thread"); + handle = pcap_open_live(LOOPBACK_IF, SNAPLEN, NO_PROMISC, 0, errbuf); + if (!handle) + PANIC("You may need to run this test as UID 0 (root)"); + ASSERT(pcap_loop(handle, PKTCNT, packet_ignore, 0) != -1); + return 0; +} + +void * +ping_thread(void *arg) +{ + SET_NAME("ping_thread"); + ASSERT(system("ping -c 3 127.0.0.1") == 0); + sleep(2); + ASSERT(packet_count == 3); + SUCCEED; +} + +int +main(int argc, char **argv) +{ + pthread_t pcap; + pthread_t ping; + + CHECKr(pthread_create(&pcap, NULL, pcap_thread, NULL)); + sleep(1); + CHECKr(pthread_create(&ping, NULL, ping_thread, NULL)); + while (1) + ; + PANIC("while"); +} |