diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 7d0a9148bc..3ba103de06 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -136,6 +136,7 @@ PTESTS_SLOW = "\
     libevent \
     libgcrypt \
     libmodule-build-perl \
+    libpcap \
     libpng \
     ${@bb.utils.contains('DISTRO_FEATURES', 'seccomp', 'libseccomp', '',d)} \
     lttng-tools \
diff --git a/meta/recipes-connectivity/libpcap/files/run-ptest b/meta/recipes-connectivity/libpcap/files/run-ptest
new file mode 100644
index 0000000000..cc0e1862ac
--- /dev/null
+++ b/meta/recipes-connectivity/libpcap/files/run-ptest
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+cd "$(dirname "$0")/testprogs" || exit 1
+
+FILTERTEST_BIN="./filtertest"
+TRANSLATETEST_BIN="./translatetest"
+ENUMERATETEST_BIN="./enumeratetest"
+CONFIG_H="../config.h"
+export FILTERTEST_BIN TRANSLATETEST_BIN ENUMERATETEST_BIN CONFIG_H
+
+./TESTrun --passed --skipped 2>&1 | awk '
+    /^Passed tests:/  { section = "PASS"; next }
+    /^Skipped tests:/ { section = "SKIP"; next }
+    /^Failed tests:/  { section = "FAIL"; next }
+    /^-+$/            { section = ""; next }
+    section != "" && /^    / {
+        c = index($0, ": ")
+        if (c >= 45) {
+            label = substr($0, 5, c - 5)
+            sub(/[[:space:]]+$/, "", label)
+            if (label != "")
+                print section ": " label
+        }
+    }
+'
diff --git a/meta/recipes-connectivity/libpcap/libpcap_1.11.0.bb b/meta/recipes-connectivity/libpcap/libpcap_1.11.0.bb
index df63ab68b8..ad4e64861d 100644
--- a/meta/recipes-connectivity/libpcap/libpcap_1.11.0.bb
+++ b/meta/recipes-connectivity/libpcap/libpcap_1.11.0.bb
@@ -10,10 +10,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=5eb289217c160e2920d2e35bddc36453 \
                     file://pcap.h;beginline=1;endline=32;md5=39af3510e011f34b8872f120b1dc31d2"
 DEPENDS = "flex-native bison-native"
 
-SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.xz"
+SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.xz \
+           file://run-ptest \
+           "
 SRC_URI[sha256sum] = "9237f5bae9dcf3a91823d9963ec43b7c0e2e3374ef2ad57d92c8cd39530f4723"
 
-inherit autotools binconfig-disabled pkgconfig
+inherit autotools binconfig-disabled pkgconfig ptest
 
 BINCONFIG = "${bindir}/pcap-config"
 
@@ -36,4 +38,33 @@ do_configure:prepend () {
     sed 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i ${S}/configure.ac
 }
 
+do_compile_ptest() {
+    oe_runmake -C ${B}/testprogs CFLAGS="${CFLAGS} ${LDFLAGS}" \
+        filtertest translatetest enumeratetest
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/testprogs
+    install -d ${D}${PTEST_PATH}/tests
+
+    # Perl harness and its helper modules.
+    install -m 0755 ${S}/testprogs/TESTrun ${D}${PTEST_PATH}/testprogs/
+    install -m 0644 ${S}/testprogs/TESTlib.pm ${D}${PTEST_PATH}/testprogs/
+    install -m 0644 ${S}/testprogs/TESTst.pm ${D}${PTEST_PATH}/testprogs/
+    install -m 0644 ${S}/testprogs/TESTmt.pm ${D}${PTEST_PATH}/testprogs/
+
+    # Offline test programs driven by the harness.
+    install -m 0755 ${B}/testprogs/filtertest ${D}${PTEST_PATH}/testprogs/
+    install -m 0755 ${B}/testprogs/translatetest ${D}${PTEST_PATH}/testprogs/
+    install -m 0755 ${B}/testprogs/enumeratetest ${D}${PTEST_PATH}/testprogs/
+
+    # Savefiles used by the filter tests (SAVEFILE_DIR is testprogs/../tests).
+    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/
+
+    # config.h is read by TESTrun for feature-based test skipping.
+    install -m 0644 ${B}/config.h ${D}${PTEST_PATH}/config.h
+}
+
+RDEPENDS:${PN}-ptest += "perl perl-modules coreutils diffutils"
+
 BBCLASSEXTEND = "native nativesdk"
