summaryrefslogtreecommitdiff
path: root/regress/lib/libpthread
diff options
context:
space:
mode:
authorMarco S Hyman <marc@cvs.openbsd.org>2001-11-11 20:20:54 +0000
committerMarco S Hyman <marc@cvs.openbsd.org>2001-11-11 20:20:54 +0000
commit22893dc58d818f447b92c50b32754ec8ef010a34 (patch)
tree965920a956f53bc4127378217158702e2462c11c /regress/lib/libpthread
parent92f9066a4ef297de3c39d6e5f9fd965796fc4b57 (diff)
bring back test, this time in the public domain
Diffstat (limited to 'regress/lib/libpthread')
-rw-r--r--regress/lib/libpthread/Makefile4
-rw-r--r--regress/lib/libpthread/pcap/Makefile6
-rw-r--r--regress/lib/libpthread/pcap/pcap.c62
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");
+}