On 2026/01/17 17:20, Sebastian Reitenbach wrote:
commentary inline, updated diff below
> C++ Library: stdc++
alarm bells here, libstdc++ is wrong for amd64
| -V= 2016-07-R1
| -DISTNAME= kismet-${V}
| -PKGNAME= kismet-${V:S,-,,g}
| +V= 2025-09-R1
| +DISTNAME= kismet-${V}
| +PKGNAME= kismet-${V:S,-,,g}
| +CATEGORIES= net security
| CATEGORIES= net security
| -REVISION= 1
|
| -HOMEPAGE= https://www.kismetwireless.net/
| -SITES= ${HOMEPAGE}code/
| -EXTRACT_SUFX= .tar.xz
| +HOMEPAGE= https://www.kismetwireless.net/
| +SITES= ${HOMEPAGE}code/
| +EXTRACT_SUFX= .tar.xz
these replace correct tabs with spaces, should go back to tabs
CATEGORIES is doubled
| -WANTLIB+= c m panel pcap ${COMPILER_LIBCXX} curses util pcre
| -LIB_DEPENDS= devel/pcre
| -RUN_DEPENDS= net/wireshark,-text
| +WANTLIB+= c m pcap ${COMPILER_LIBCXX} util
| +WANTLIB += crypto rtlsdr
| +WANTLIB += pcre2-8 sqlite3 ssl
| +WANTLIB += websockets z atomic usb-1.0
| +WANTLIB += mosquitto
WANTLIB could do with being more neat
libatomic is for GCC, this needs patching (I opted to disable by default
in autoconf and add it for ports-gcc builds; might actually only be
needed on a subset of archs though)
| +LIB_DEPENDS= comms/rtl-sdr \
| + lang/gcc/8,-libs \
gcc libs should not be listed directly. if it's needed e.g. on ports-gcc
archs it should come from the gcc module.
| + net/mosquitto \
| + www/libwebsockets
| +RUN_DEPENDS= comms/rtl_433 \
| + devel/py-protobuf${MODPY_FLAVOR} \
MODPY_FLAVOR is no more
| + net/wireshark,-text \
| + net/py-websockets
|
| .include <bsd.port.arch.mk>
|
| -post-configure:
| - ${SUBST_CMD} ${WRKSRC}/conf/kismet.conf \
| - ${WRKSRC}/man/kismet_drone.conf.5
| - cd ${WRKSRC} && ${GMAKE} depend
| -
| post-install:
| ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/kismet
| - ${INSTALL_DATA} ${WRKSRC}/README \
| + ${INSTALL_DATA} ${WRKSRC}/README.SSL \
| ${PREFIX}/share/doc/kismet
have left for now but I don't think that file is really worth
installing
| @cd ${WRKSRC} && ${GMAKE} binsuidinstall
set INSTALL_TARGET instead
| +- // rtl_433 -F json -M level -d X -f Y [additional]
| +- unsigned int num_args = 9;
| ++ // rtl_433 -F json -M level -s 1024k -d X -f Y [additional]
| ++ unsigned int num_args = 11;
| +
| + // Channel, if any
| + char *channel = NULL;
| +@@ -452,6 +452,8 @@ int open_callback(kis_capture_handler_t *caph, uint32_
| + local433->rtl_argv[n++] = strdup("json");
| + local433->rtl_argv[n++] = strdup("-M");
| + local433->rtl_argv[n++] = strdup("level");
| ++ local433->rtl_argv[n++] = strdup("-s");
| ++ local433->rtl_argv[n++] = strdup("1024k");
I haven't touched this but would it be better to patch in rtl_433?
| +lib/pkgconfig/kismet.pc
I haven't touched this yet, but VERSION is broken, they forgot to run
tools/mkversion.sh before rolling release tarballs
| --- /dev/null 1 Jan 1970 00:00:00 -0000
| +++ pkg/README 17 Jan 2026 16:14:55 -0000
remember to regen PLIST after adding a readme
updated diff below, fixing the above plus a few other little bits, does
this still work for you?
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/kismet/Makefile,v
diff -u -p -r1.53 Makefile
--- Makefile 27 Sep 2023 14:18:12 -0000 1.53
+++ Makefile 18 Jan 2026 14:52:55 -0000
@@ -1,16 +1,11 @@
-# Much help came from Alexandre Anriot, Robert Nagy, Bernd Ahlers,
-# and, last but not least, Pedro la Peu.
+DPB_PROPERTIES= parallel
COMMENT= 802.11 layer2 wireless network detector, sniffer, and IDS
-# No wireless capabilities
-NOT_FOR_ARCHS= m88k
-
-V= 2016-07-R1
+V= 2025-09-R1
DISTNAME= kismet-${V}
PKGNAME= kismet-${V:S,-,,g}
CATEGORIES= net security
-REVISION= 1
HOMEPAGE= https://www.kismetwireless.net/
SITES= ${HOMEPAGE}code/
@@ -18,47 +13,52 @@ EXTRACT_SUFX= .tar.xz
MAINTAINER= Sebastian Reitenbach <[email protected]>
-# GPL
+# GPLv2+
PERMIT_PACKAGE= Yes
-COMPILER = base-clang ports-gcc base-gcc
-
-# "old" is required for setting --sysconfdir
-CONFIGURE_STYLE= gnu old
+WANTLIB += ${COMPILER_LIBCXX} c crypto m mosquitto pcap pcre2-8
+WANTLIB += rtlsdr sqlite3 ssl usb-1.0 util websockets z
-CONFDIR= ${SYSCONFDIR}/kismet
-SUBST_VARS+= CONFDIR
+# C++20
+COMPILER= base-clang ports-gcc
-CONFIGURE_ARGS= --sysconfdir=${CONFDIR} \
- --mandir=${PREFIX}/man \
- --with-suidgroup=_kismet
+CONFIGURE_STYLE= autoreconf
+AUTOCONF_VERSION= 2.71
+AUTOMAKE_VERSION= 1.16
+SYSCONFDIR= ${BASESYSCONFDIR}/kismet
-CONFIGURE_ENV= CPPFLAGS="-I${X11BASE}/include -I${LOCALBASE}/include" \
- LDFLAGS="-L${X11BASE}/lib -L${LOCALBASE}/lib"
+CONFIGURE_ARGS= --mandir=${PREFIX}/man \
+ --with-suidgroup=_kismet \
+ --disable-wifi-coconut
-USE_GMAKE= Yes
+LDFLAGS_ports-gcc= -latomic
+LDFLAGS= -L${X11BASE}/lib -L${LOCALBASE}/lib
${LDFLAGS_${CHOSEN_COMPILER}}
-SAMPLES_DIR= ${DESTDIR}${LOCALBASE}/share/examples/kismet
-FAKE_FLAGS+= ETC=${SAMPLES_DIR}
+CONFIGURE_ENV= CPPFLAGS="-I${X11BASE}/include -I${LOCALBASE}/include" \
+ LDFLAGS="${LDFLAGS}"
-# They don't have tests.
-NO_TEST= Yes
+NO_TEST= Yes
+USE_GMAKE= Yes
-WANTLIB+= c m panel pcap ${COMPILER_LIBCXX} curses util pcre
-LIB_DEPENDS= devel/pcre
-RUN_DEPENDS= net/wireshark,-text
+FAKE_FLAGS+= ETC="${WRKINST}${PREFIX}/share/examples/kismet"
-.include <bsd.port.arch.mk>
+LIB_DEPENDS= comms/rtl-sdr \
+ net/mosquitto \
+ www/libwebsockets
+RUN_DEPENDS= comms/rtl_433 \
+ devel/py-protobuf \
+ net/wireshark,-text \
+ net/py-websockets
-post-configure:
- ${SUBST_CMD} ${WRKSRC}/conf/kismet.conf \
- ${WRKSRC}/man/kismet_drone.conf.5
- cd ${WRKSRC} && ${GMAKE} depend
+INSTALL_TARGET= install binsuidinstall
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/kismet
- ${INSTALL_DATA} ${WRKSRC}/README \
+ ${INSTALL_DATA} ${WRKSRC}/README.SSL \
${PREFIX}/share/doc/kismet
- @cd ${WRKSRC} && ${GMAKE} binsuidinstall
.include <bsd.port.mk>
+
+.if ${CHOSEN_COMPILER} == ports-gcc
+WANTLIB += atomic
+.endif
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/kismet/distinfo,v
diff -u -p -r1.9 distinfo
--- distinfo 3 Mar 2019 23:11:04 -0000 1.9
+++ distinfo 18 Jan 2026 14:52:55 -0000
@@ -1,2 +1,2 @@
-SHA256 (kismet-2016-07-R1.tar.xz) =
vbIfFTMR8f87FmIb8NZ0D2Y2m/CYKwoonJoSr4hH4jc=
-SIZE (kismet-2016-07-R1.tar.xz) = 709364
+SHA256 (kismet-2025-09-R1.tar.xz) =
RwOlitEbd3rwQBmk8bEU7EWRwFqhymucf/V0P/PRSuE=
+SIZE (kismet-2025-09-R1.tar.xz) = 11479700
Index: patches/patch-capture_framework_c
===================================================================
RCS file: patches/patch-capture_framework_c
diff -N patches/patch-capture_framework_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-capture_framework_c 18 Jan 2026 14:52:55 -0000
@@ -0,0 +1,13 @@
+https://github.com/kismetwireless/kismet/pull/590
+
+Index: capture_framework.c
+--- capture_framework.c.orig
++++ capture_framework.c
+@@ -2484,6 +2484,7 @@ void ws_connect_attempt(kis_capture_handler_t *caph) {
+ return;
+ }
+
++ memset(&caph->lwsci, 0, sizeof(struct lws_client_connect_info));
+ caph->lwsci.context = caph->lwscontext;
+ caph->lwsci.port = caph->remote_port;
+ caph->lwsci.address = caph->remote_host;
Index: patches/patch-capture_nrf_51822_nrf_51822_h
===================================================================
RCS file: patches/patch-capture_nrf_51822_nrf_51822_h
diff -N patches/patch-capture_nrf_51822_nrf_51822_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-capture_nrf_51822_nrf_51822_h 18 Jan 2026 14:52:55 -0000
@@ -0,0 +1,14 @@
+https://github.com/kismetwireless/kismet/pull/588
+
+Index: capture_nrf_51822/nrf_51822.h
+--- capture_nrf_51822/nrf_51822.h.orig
++++ capture_nrf_51822/nrf_51822.h
+@@ -66,7 +66,7 @@
+ #define EVENT_PACKET_ADVERTISING 0x02
+ #define EVENT_PACKET_DATA 0x06
+
+-#define D_BAUDRATE B1000000
++#define D_BAUDRATE B460800
+
+ #define _POSIX_SOURCE 1 /* POSIX compliant source */
+
Index: patches/patch-capture_openbsd_wifi_capture_openbsd_wifi_c
===================================================================
RCS file: patches/patch-capture_openbsd_wifi_capture_openbsd_wifi_c
diff -N patches/patch-capture_openbsd_wifi_capture_openbsd_wifi_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-capture_openbsd_wifi_capture_openbsd_wifi_c 18 Jan 2026
14:52:55 -0000
@@ -0,0 +1,60 @@
+https://github.com/kismetwireless/kismet/pull/581
+Index: capture_openbsd_wifi/capture_openbsd_wifi.c
+--- capture_openbsd_wifi/capture_openbsd_wifi.c.orig
++++ capture_openbsd_wifi/capture_openbsd_wifi.c
+@@ -686,7 +686,7 @@ enum wifi_chan_band wifi_freq_to_band(unsigned int in_
+
+ /* Convert a string into a local interpretation; allocate ret_localchan.
+ */
+-void *chantranslate_callback(kis_capture_handler_t *caph, char *chanstr) {
++void *chantranslate_callback(kis_capture_handler_t *caph, const char
*chanstr) {
+ local_wifi_t *local_wifi = (local_wifi_t *) caph->userdata;
+ local_channel_t *ret_localchan = NULL;
+ unsigned int parsechan;
+@@ -786,7 +786,7 @@ int chancontrol_callback(kis_capture_handler_t *caph,
+ /* Send a config response with a reconstituted channel if we're
+ * configuring the interface; re-use errstr as a buffer */
+ local_channel_to_str(channel, errstr);
+- cf_send_configresp(caph, seqno, 1, NULL, errstr);
++ cf_send_configresp(caph, seqno, 1, errstr);
+ }
+
+ return 1;
+@@ -794,7 +794,7 @@ int chancontrol_callback(kis_capture_handler_t *caph,
+
+
+ int probe_callback(kis_capture_handler_t *caph, uint32_t seqno, char
*definition,
+- char *msg, char **uuid, KismetExternal__Command *frame,
++ char *msg, char **uuid,
+ cf_params_interface_t **ret_interface,
+ cf_params_spectrum_t **ret_spectrum) {
+ return 1;
+@@ -814,7 +814,7 @@ int build_explicit_filters(char **stringmacs, int num_
+
+
+ int open_callback(kis_capture_handler_t *caph, uint32_t seqno, char
*definition,
+- char *msg, uint32_t *dlt, char **uuid, KismetExternal__Command *frame,
++ char *msg, uint32_t *dlt, char **uuid,
+ cf_params_interface_t **ret_interface,
+ cf_params_spectrum_t **ret_spectrum) {
+ /* Try to open an interface for monitoring
+@@ -1497,11 +1497,14 @@ void pcap_dispatch_cb(u_char *user, const struct pcap_
+ ts.tv_sec = header->ts.tv_sec;
+ ts.tv_usec = header->ts.tv_usec;
+ while (1) {
+- if ((ret = cf_send_data(caph,
+- NULL, NULL, NULL,
+- ts,
+- local_wifi->datalink_type,
+- header->caplen, (uint8_t *) data)) < 0) {
++ if ((ret = cf_send_data(caph,
++ NULL, 0,
++ NULL, NULL,
++ ts,
++ local_wifi->datalink_type,
++ header->len,
++ header->caplen,
++ (uint8_t *) data)) < 0) {
+ pcap_breakloop(local_wifi->pd);
+ fprintf(stderr, "%s %s/%s could not send packet to Kismet server,
terminating.",
+ local_wifi->name, local_wifi->interface,
local_wifi->cap_interface);
Index: patches/patch-capture_sdr_rtl433_v2_capture_sdr_rtl433_v2_c
===================================================================
RCS file: patches/patch-capture_sdr_rtl433_v2_capture_sdr_rtl433_v2_c
diff -N patches/patch-capture_sdr_rtl433_v2_capture_sdr_rtl433_v2_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-capture_sdr_rtl433_v2_capture_sdr_rtl433_v2_c 18 Jan 2026
14:52:55 -0000
@@ -0,0 +1,35 @@
+https://github.com/kismetwireless/kismet/pull/593
+https://github.com/kismetwireless/kismet/pull/594
+
+Index: capture_sdr_rtl433_v2/capture_sdr_rtl433_v2.c
+--- capture_sdr_rtl433_v2/capture_sdr_rtl433_v2.c.orig
++++ capture_sdr_rtl433_v2/capture_sdr_rtl433_v2.c
+@@ -342,8 +342,8 @@ int open_callback(kis_capture_handler_t *caph, uint32_
+
+ char buf[STATUS_MAX];
+
+- // rtl_433 -F json -M level -d X -f Y [additional]
+- unsigned int num_args = 9;
++ // rtl_433 -F json -M level -s 1024k -d X -f Y [additional]
++ unsigned int num_args = 11;
+
+ // Channel, if any
+ char *channel = NULL;
+@@ -452,6 +452,8 @@ int open_callback(kis_capture_handler_t *caph, uint32_
+ local433->rtl_argv[n++] = strdup("json");
+ local433->rtl_argv[n++] = strdup("-M");
+ local433->rtl_argv[n++] = strdup("level");
++ local433->rtl_argv[n++] = strdup("-s");
++ local433->rtl_argv[n++] = strdup("1024k");
+ local433->rtl_argv[n++] = strdup("-f");
+ snprintf(buf, STATUS_MAX, "%lu", local433->freq);
+ local433->rtl_argv[n++] = strdup(buf);
+@@ -488,8 +490,6 @@ void capture_thread(kis_capture_handler_t *caph) {
+
+ wrap_cond_wait(&local433->rtl433_valid_cond,
+ &local433->rtl433_valid_cond_mutex);
+- pthread_mutex_unlock(&local433->rtl433_valid_cond_mutex);
+-
+ }
+
+ int main(int argc, char *argv[]) {
Index: patches/patch-capture_sdr_rtladsb_v2_capture_sdr_rtladsb_v2_c
===================================================================
RCS file: patches/patch-capture_sdr_rtladsb_v2_capture_sdr_rtladsb_v2_c
diff -N patches/patch-capture_sdr_rtladsb_v2_capture_sdr_rtladsb_v2_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-capture_sdr_rtladsb_v2_capture_sdr_rtladsb_v2_c 18 Jan
2026 14:52:55 -0000
@@ -0,0 +1,43 @@
+https://github.com/kismetwireless/kismet/pull/591
+
+Index: capture_sdr_rtladsb_v2/capture_sdr_rtladsb_v2.c
+--- capture_sdr_rtladsb_v2/capture_sdr_rtladsb_v2.c.orig
++++ capture_sdr_rtladsb_v2/capture_sdr_rtladsb_v2.c
+@@ -453,13 +453,12 @@ static void rtlsdr_callback(unsigned char *buf, uint32
+ kis_capture_handler_t *caph = (kis_capture_handler_t *) ctx;
+ local_adsb_t *adsb = (local_adsb_t *) caph->userdata;
+
+- if (caph->spindown || adsb->do_exit) {
+- return;
+- }
++ if (caph->spindown || adsb->do_exit) return;
+
++ pthread_mutex_lock(&adsb->ready_mutex);
+ memcpy(adsb->buffer, buf, len);
+-
+- wrap_cond_signal(&adsb->ready, &adsb->ready_mutex);
++ pthread_cond_signal(&adsb->ready);
++ pthread_mutex_unlock(&adsb->ready_mutex);
+ }
+
+ static void *rtlsdr_demod_thread(void *arg) {
+@@ -467,15 +466,16 @@ static void *rtlsdr_demod_thread(void *arg) {
+ local_adsb_t *adsb = (local_adsb_t *) caph->userdata;
+
+ int len;
+-
+ while (!caph->spindown && !adsb->do_exit) {
+- wrap_cond_wait(&adsb->ready, &adsb->ready_mutex);
++ pthread_mutex_lock(&adsb->ready_mutex);
++ pthread_cond_wait(&adsb->ready, &adsb->ready_mutex);
++
+ len = magnitude(caph, adsb->buffer, DEFAULT_BUF_LENGTH);
+ manchester(caph, (uint16_t *) adsb->buffer, len);
+ messages(caph, (uint16_t *) adsb->buffer, len);
++
+ pthread_mutex_unlock(&adsb->ready_mutex);
+ }
+-
+ rtlsdr_cancel_async(adsb->dev);
+ return NULL;
+ }
Index: patches/patch-conf_kismet_conf_in
===================================================================
RCS file: patches/patch-conf_kismet_conf_in
diff -N patches/patch-conf_kismet_conf_in
--- patches/patch-conf_kismet_conf_in 11 Mar 2022 19:46:11 -0000 1.8
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,44 +0,0 @@
-Index: conf/kismet.conf.in
---- conf/kismet.conf.in.orig
-+++ conf/kismet.conf.in
-@@ -11,7 +11,7 @@ version=2009-newcore
- # servername=Kismet Server
-
- # Prefix of where we log (as used in the logtemplate later)
--# logprefix=/some/path/to/logs
-+logprefix=${LOCALSTATEDIR}/log/kismet
-
- # Do we process the contents of data frames? If this is enabled, data
- # frames will be truncated to the headers only immediately after frame type
-@@ -30,6 +30,8 @@ allowplugins=true
- # ncsource=wlan0
- # ncsource=wifi0:type=madwifi
- # ncsource=wlan0:name=intel,hop=false,channel=11
-+# Generic OpenBSD example
-+# ncsource=rum0:type=radiotap_bsd
-
- # Comma-separated list of sources to enable. This is only needed if you
defined
- # multiple sources and only want to enable some of them. By default, all
defined
-@@ -122,10 +124,7 @@ maxbacklog=5000
- # OUI file, expected format 00:11:22<tab>manufname
- # IEEE OUI file used to look up manufacturer info. We default to the
- # wireshark one since most people have that.
--ouifile=/etc/manuf
--ouifile=/usr/share/wireshark/wireshark/manuf
--ouifile=/usr/share/wireshark/manuf
--ouifile=/Applications/Wireshark.app/Contents/Resources/share/wireshark/manuf
-+ouifile=${LOCALBASE}/share/wireshark/manuf
-
- # Do we have a GPS?
- gps=true
-@@ -278,8 +277,8 @@ alertbacklog=50
- logtypes=pcapdump,gpsxml,netxml,nettxt,alert
-
- # Format of the pcap dump (PPI or 80211)
--pcapdumpformat=ppi
--# pcapdumpformat=80211
-+# pcapdumpformat=ppi
-+pcapdumpformat=80211
-
- # Default log title
- logdefault=Kismet
Index: patches/patch-config_h_in
===================================================================
RCS file: patches/patch-config_h_in
diff -N patches/patch-config_h_in
--- patches/patch-config_h_in 11 Mar 2022 19:46:11 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-shut up:
-warning: using directive refers to implicitly-defined namespace 'std'
-
-Index: config.h.in
---- config.h.in.orig
-+++ config.h.in
-@@ -317,6 +317,7 @@
-
- /* Namespace (on non-obj-c files) */
- #ifndef __IN_OBJC_FILE__
-+#include <iosfwd>
- using namespace std;
- #define __STL_USE_NAMESPACES
- #endif
Index: patches/patch-configure_ac
===================================================================
RCS file: patches/patch-configure_ac
diff -N patches/patch-configure_ac
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-configure_ac 18 Jan 2026 14:52:55 -0000
@@ -0,0 +1,61 @@
+- don't force -O3
+- GCC's libatomic should not be pulled in just because it exists
+- libstdc++ should n9t be explicitly linked (use "c++" as a linker instead)
+
+Index: configure.ac
+--- configure.ac.orig
++++ configure.ac
+@@ -228,9 +228,6 @@ AS_IF([test x"$GCC_MAJOR" = x"13" -o x"$GCC_MAJOR" = x
+
+ AC_SUBST(PLUGINLDFLAGS)
+
+-CXXFLAGS="$CXXFLAGS -O3"
+-CFLAGS="$CFLAGS -O3"
+-
+ AC_CONFIG_SRCDIR([kismet_server.cc])
+ AC_CONFIG_HEADERS([config.h])
+
+@@ -637,22 +634,6 @@ AC_CHECK_LIB([z], [deflate],
+ AC_MSG_ERROR([libz is required and could not be found]))
+ LIBS="$LIBS -lz"
+
+-# Do we need -latomic
+-AC_MSG_CHECKING([for libatomic])
+-OLIBS="$LIBS"
+-LIBS="$LIBS -latomic"
+-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+- ]],
+- [[
+- return 0;
+- ]] )], [have_atomic=yes], [have_atomic=no])
+-if test "$have_atomic" = "yes"; then
+- AC_MSG_RESULT([yes])
+-else
+- AC_MSG_RESULT([no])
+- LIBS="$OLIBS"
+-fi
+-
+ # We need threads
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS="-lpthread"
+@@ -700,19 +681,7 @@ else
+ AC_SUBST(LIBMLIB)
+ fi
+
+-# Do we use libstdc++?
+-# We need to swap to the g++ compiler here
+-oCC="$CC"
+-CC="$CXX"
+-AC_CHECK_LIB([stdc++], [main],
+- foundcxxl="stdc++" CXXLIBS="$CXXLIBS -lstdc++")
+-
+-AS_IF([test "$foundcxxl"x = "x" -a "$caponly"x != "yes"x],
+- [
+- AC_MSG_ERROR(No standard stdc++ libraries found.)
+- ], []
+-)
+-CC="$oCC"
++CXXLIBS=
+ AC_SUBST(CXXLIBS)
+
+ # Does the compiler handle various std::foo namespaces properly?
Index: patches/patch-kaitaistream_cc
===================================================================
RCS file: patches/patch-kaitaistream_cc
diff -N patches/patch-kaitaistream_cc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kaitaistream_cc 18 Jan 2026 14:52:55 -0000
@@ -0,0 +1,21 @@
+https://github.com/kismetwireless/kismet/pull/592
+
+Index: kaitaistream.cc
+--- kaitaistream.cc.orig
++++ kaitaistream.cc
+@@ -35,9 +35,15 @@
+ // Supposed to work on NetBSD: https://man.netbsd.org/NetBSD-10.0/bswap16.3
+ #include <sys/endian.h>
+ #include <sys/types.h>
++#if defined(__OpenBSD__)
++#define bswap_16(x) swap16(x)
++#define bswap_32(x) swap32(x)
++#define bswap_64(x) swap64(x)
++#else
+ #define bswap_16(x) bswap16(x)
+ #define bswap_32(x) bswap32(x)
+ #define bswap_64(x) bswap64(x)
++#endif
+ #define __BYTE_ORDER BYTE_ORDER
+ #define __BIG_ENDIAN BIG_ENDIAN
+ #define __LITTLE_ENDIAN LITTLE_ENDIAN
Index: patches/patch-kis_panel_widgets_cc
===================================================================
RCS file: patches/patch-kis_panel_widgets_cc
diff -N patches/patch-kis_panel_widgets_cc
--- patches/patch-kis_panel_widgets_cc 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-explicitly cast
-
-Index: kis_panel_widgets.cc
---- kis_panel_widgets.cc.orig
-+++ kis_panel_widgets.cc
-@@ -2582,7 +2582,7 @@ int Kis_Single_Input::KeyPress(int in_key) {
- // and if we have room, insert it and scroll to the right
- if ((int) text.length() < max_len &&
- filter_map.find(in_key) != filter_map.end()) {
-- char ins[2] = { in_key, 0 };
-+ char ins[2] = { (char)in_key, 0 };
- text.insert(inp_pos, ins);
- inp_pos++;
-
Index: patches/patch-macaddr_h
===================================================================
RCS file: patches/patch-macaddr_h
diff -N patches/patch-macaddr_h
--- patches/patch-macaddr_h 11 Mar 2022 19:46:11 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-silence clan warning
-
-Index: macaddr.h
---- macaddr.h.orig
-+++ macaddr.h
-@@ -185,7 +185,7 @@ struct mac_addr {
- }
-
- inline mac_addr(int in) {
-- in = in; // Silence gcc
-+ static_cast<void>(in);
- longmac = 0;
- longmask = 0;
- error = 0;
Index: patches/patch-man_kismet_drone_conf_5
===================================================================
RCS file: patches/patch-man_kismet_drone_conf_5
diff -N patches/patch-man_kismet_drone_conf_5
--- patches/patch-man_kismet_drone_conf_5 11 Mar 2022 19:46:11 -0000
1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: man/kismet_drone.conf.5
---- man/kismet_drone.conf.5.orig
-+++ man/kismet_drone.conf.5
-@@ -6,7 +6,7 @@
- .SH DESCRIPTION
- kismet_drone uses a minimalized configuration file, similar in options to the
- main kismet server configuration file. By default, the drone config is in
--/usr/local/etc/kismet.conf. A default configuration is included with Kismet
but
-+${SYSCONFDIR}/kismet/kismet.conf. A default configuration is included with
Kismet but
- it is likely you will need to modify it to suit your hardware and preferences.
- .SH CONFIGURATION FILE FORMAT
- All entries are of the format directive = value
Index: patches/patch-netracker_h
===================================================================
RCS file: patches/patch-netracker_h
diff -N patches/patch-netracker_h
--- patches/patch-netracker_h 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-it's forward declared twice
-
-Index: netracker.h
---- netracker.h.orig
-+++ netracker.h
-@@ -306,9 +306,6 @@ class Netracker { (public)
- int dirty;
- };
-
-- // Fwd def for our map
-- class tracked_client;
--
- class ssid_alert_data {
- public:
- ssid_alert_data() {
Index: patches/patch-packetsource_bsdrt_cc
===================================================================
RCS file: patches/patch-packetsource_bsdrt_cc
diff -N patches/patch-packetsource_bsdrt_cc
--- patches/patch-packetsource_bsdrt_cc 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,36 +0,0 @@
-IFM_MAKEMODE is not defined on OpenBSD, just copying it from Linux
-doesn't help, since our IFM_MSHIFT etc. operate on ULL, but mode
-apparently only is of type int
-
-Index: packetsource_bsdrt.cc
---- packetsource_bsdrt.cc.orig
-+++ packetsource_bsdrt.cc
-@@ -138,7 +138,7 @@ int Radiotap_BSD_Controller::GetMediaOpt(int& options,
- int Radiotap_BSD_Controller::SetMediaOpt(int options, int mode) {
- struct ifmediareq ifmr;
- struct ifreq ifr;
-- int *mwords;
-+ uint64_t *mwords;
-
- if (CheckSocket() == 0)
- return 0;
-@@ -160,7 +160,7 @@ int Radiotap_BSD_Controller::SetMediaOpt(int options,
- return 0;
- }
-
-- mwords = new int[ifmr.ifm_count];
-+ mwords = new uint64_t[ifmr.ifm_count];
- if (mwords == NULL) {
- _MSG("BSD interface control cannot malloc interface array, out
of "
- "memory or other badness.", MSGFLAG_PRINTERROR);
-@@ -179,6 +179,10 @@ int Radiotap_BSD_Controller::SetMediaOpt(int options,
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, dev.c_str(), sizeof(ifr.ifr_name));
- ifr.ifr_media = (ifmr.ifm_current &~ IFM_OMASK) | options;
-+#ifndef IFM_MAKEMODE
-+#define IFM_MAKEMODE(mode) \
-+ ((((unsigned long long)mode) << IFM_MSHIFT) & IFM_MMASK)
-+#endif
- ifr.ifr_media = (ifr.ifr_media &~ IFM_MMASK) | IFM_MAKEMODE(mode);
-
- if (ioctl(sock, SIOCSIFMEDIA, (caddr_t) &ifr) < 0) {
Index: patches/patch-packetsource_pcap_cc
===================================================================
RCS file: patches/patch-packetsource_pcap_cc
diff -N patches/patch-packetsource_pcap_cc
--- patches/patch-packetsource_pcap_cc 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Index: packetsource_pcap.cc
---- packetsource_pcap.cc.orig
-+++ packetsource_pcap.cc
-@@ -60,6 +60,10 @@ extern "C" {
- #include <netinet/if_ether.h>
- #include <dev/ic/if_wi_ieee.h>
-
-+#ifndef IEEE80211_CHAN_TURBO
-+#define IEEE80211_CHAN_TURBO 0x0010
-+#endif
-+
- #ifdef HAVE_RADIOTAP
- #include <net80211/ieee80211.h>
- #include <net80211/ieee80211_ioctl.h>
Index: patches/patch-tcpclient_cc
===================================================================
RCS file: patches/patch-tcpclient_cc
diff -N patches/patch-tcpclient_cc
--- patches/patch-tcpclient_cc 11 Mar 2022 19:46:11 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-Index: tcpclient.cc
---- tcpclient.cc.orig
-+++ tcpclient.cc
-@@ -75,7 +75,7 @@ int TcpClient::Connect(const char *in_remotehost, shor
- local_sock.sin_addr.s_addr = htonl(INADDR_ANY);
- local_sock.sin_port = htons(0);
-
-- if (bind(cli_fd, (struct sockaddr *) &local_sock, sizeof(local_sock)) <
0) {
-+ if (::bind(cli_fd, (struct sockaddr *) &local_sock, sizeof(local_sock)) <
0) {
- snprintf(errstr, 1024, "TCP client bind() failed: %s",
strerror(errno));
- globalreg->messagebus->InjectMessage(errstr, MSGFLAG_ERROR);
- close(cli_fd);
-@@ -170,7 +170,7 @@ int TcpClient::ConnectSync(const char *in_remotehost,
- local_sock.sin_addr.s_addr = htonl(INADDR_ANY);
- local_sock.sin_port = htons(0);
-
-- if (bind(cli_fd, (struct sockaddr *) &local_sock, sizeof(local_sock)) <
0) {
-+ if (::bind(cli_fd, (struct sockaddr *) &local_sock, sizeof(local_sock)) <
0) {
- snprintf(errstr, 1024, "TCP client bind() failed: %s",
strerror(errno));
- globalreg->messagebus->InjectMessage(errstr, MSGFLAG_ERROR);
- close(cli_fd);
Index: patches/patch-tcpserver_cc
===================================================================
RCS file: patches/patch-tcpserver_cc
diff -N patches/patch-tcpserver_cc
--- patches/patch-tcpserver_cc 11 Mar 2022 19:46:11 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: tcpserver.cc
---- tcpserver.cc.orig
-+++ tcpserver.cc
-@@ -84,7 +84,7 @@ int TcpServer::EnableServer() {
- }
-
- // Bind the socket
-- if (bind(serv_fd, (struct sockaddr *) &serv_sock, sizeof(serv_sock)) < 0)
{
-+ if (::bind(serv_fd, (struct sockaddr *) &serv_sock, sizeof(serv_sock)) <
0) {
- snprintf(errstr, STATUS_MAX, "TCP server bind() failed: %s",
- strerror(errno));
- globalreg->messagebus->InjectMessage(errstr, MSGFLAG_ERROR);
Index: patches/patch-unixdomainserver_cc
===================================================================
RCS file: patches/patch-unixdomainserver_cc
diff -N patches/patch-unixdomainserver_cc
--- patches/patch-unixdomainserver_cc 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: unixdomainserver.cc
---- unixdomainserver.cc.orig
-+++ unixdomainserver.cc
-@@ -64,7 +64,7 @@ int UnixDomainServer::EnableServer() {
- }
-
- // Bind the socket
-- if (bind(serv_fd, (struct sockaddr *) &serv_sock, sizeof(serv_sock)) < 0)
{
-+ if (::bind(serv_fd, (struct sockaddr *) &serv_sock, sizeof(serv_sock)) <
0) {
- _MSG("Unix domain server bind() failed: " + string(strerror(errno)),
- MSGFLAG_ERROR);
- return -1;
Index: patches/patch-uuid_h
===================================================================
RCS file: patches/patch-uuid_h
diff -N patches/patch-uuid_h
--- patches/patch-uuid_h 11 Mar 2022 19:46:11 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-silence warnings
-
-Index: uuid.h
---- uuid.h.orig
-+++ uuid.h
-@@ -113,7 +113,9 @@ class uuid { (public)
- char ids[38];
- snprintf(ids, 38,
"%08x-%04hx-%04hx-%04hx-%02hx%02hx%02hx%02hx%02hx%02hx",
- (unsigned int) *time_low, *time_mid, *time_hi,
*clock_seq,
-- node[0], node[1], node[2], node[3], node[4],
node[5]);
-+ (unsigned short)node[0], (unsigned
short)node[1],
-+ (unsigned short)node[2], (unsigned
short)node[3],
-+ (unsigned short)node[4], (unsigned
short)node[5]);
- return string(ids);
- }
-
Index: pkg/DESCR
===================================================================
RCS file: /cvs/ports/net/kismet/pkg/DESCR,v
diff -u -p -r1.3 DESCR
--- pkg/DESCR 3 Mar 2019 23:11:04 -0000 1.3
+++ pkg/DESCR 18 Jan 2026 14:52:55 -0000
@@ -1,9 +1,6 @@
-Kismet is an 802.11 layer2 wireless network detector, sniffer, and
-intrusion detection system. Kismet will work with any wireless card
-which supports raw monitoring (rfmon) mode, and can sniff 802.11b,
-802.11a, and 802.11g traffic.
+Kismet is an open source sniffer, WIDS, wardriver, and packet capture
+tool for Wi-Fi, Bluetooth, BTLE, wireless thermometers, airplanes, power
+meters, Zigbee, and more.
-Kismet identifies networks by passively collecting packets and detecting
-standard named networks, detecting (and given time, decloaking) hidden
-networks, and infering the presence of nonbeaconing networks via data
-traffic.
+Kismet can operate both headless as a standalone capture and WIDS
+system, or with a full modern web-based UI.
Index: pkg/MESSAGE
===================================================================
RCS file: /cvs/ports/net/kismet/pkg/MESSAGE,v
diff -u -p -r1.3 MESSAGE
--- pkg/MESSAGE 3 Mar 2019 23:11:04 -0000 1.3
+++ pkg/MESSAGE 18 Jan 2026 14:52:55 -0000
@@ -1,4 +1,4 @@
-${PREFIX}/bin/kismet_capture has been installed setuid root, with read/execute
+${PREFIX}/bin/kismet_cap_* have been installed setuid root, with read/execute
access granted only to users in the _kismet group. For normal interactive
use of Kismet, add your username to this group:
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/kismet/pkg/PLIST,v
diff -u -p -r1.5 PLIST
--- pkg/PLIST 8 Nov 2022 11:14:58 -0000 1.5
+++ pkg/PLIST 18 Jan 2026 14:52:55 -0000
@@ -1,44 +1,236 @@
+@conflict kismet-gpsmap-*
@pkgpath net/kismet
@pkgpath net/kismet,-main
@pkgpath net/kismet,-gpsmap
-@conflict kismet-gpsmap-*
@newgroup _kismet:547
-@newuser _kismet:547:_kismet::Kismet WLAN detector:/nonexistent:/sbin/nologin
-bin/kismet
+@newuser _kismet:547:_kismet::Kismet Wireless
detector:/nonexistent:/sbin/nologin
+@bin bin/kismet
+@bin bin/kismet_cap_antsdr_droneid
+@mode 4550
+@group _kismet
+@bin bin/kismet_cap_freaklabs_zigbee
+@mode
+@group
+@bin bin/kismet_cap_kismetdb
+@mode 4550
+@group _kismet
+@bin bin/kismet_cap_nrf_51822
+@bin bin/kismet_cap_nrf_52840
+@bin bin/kismet_cap_nrf_mousejack
+@bin bin/kismet_cap_nxp_kw41z
+@bin bin/kismet_cap_openbsd_wifi
+@mode
+@group
+@bin bin/kismet_cap_pcapfile
+@mode 4550
+@group _kismet
+@bin bin/kismet_cap_radiacode_usb
+@bin bin/kismet_cap_rz_killerbee
+@bin bin/kismet_cap_sdr_rtl433
+@bin bin/kismet_cap_sdr_rtladsb
+@mode
+@group
+@bin bin/kismet_cap_serial_radview
@mode 4550
@group _kismet
-@bin bin/kismet_capture
+@bin bin/kismet_cap_ti_cc_2531
+@bin bin/kismet_cap_ti_cc_2540
@mode
@group
-@bin bin/kismet_client
-@bin bin/kismet_drone
-@bin bin/kismet_server
-@man man/man1/kismet.1
-@man man/man1/kismet_drone.1
-@man man/man5/kismet.conf.5
-@man man/man5/kismet_drone.conf.5
+@bin bin/kismet_discovery
+bin/kismet_server
+@bin bin/kismetdb_clean
+@bin bin/kismetdb_dump_devices
+@bin bin/kismetdb_statistics
+@bin bin/kismetdb_strip_packets
+@bin bin/kismetdb_to_gpx
+@bin bin/kismetdb_to_kml
+@bin bin/kismetdb_to_pcap
+@bin bin/kismetdb_to_wiglecsv
+lib/pkgconfig/kismet.pc
share/doc/kismet/
-share/doc/kismet/README
+share/doc/kismet/README.SSL
+share/doc/pkg-readmes/${PKGSTEM}
share/examples/kismet/
@mode 770
-@sample ${CONFDIR}/
+@sample ${SYSCONFDIR}/
@mode
share/examples/kismet/kismet.conf
-@sample ${CONFDIR}/kismet.conf
-share/examples/kismet/kismet_drone.conf
-@sample ${CONFDIR}/kismet_drone.conf
+@sample ${SYSCONFDIR}/kismet.conf
+share/examples/kismet/kismet_80211.conf
+@sample ${SYSCONFDIR}/kismet_80211.conf
+share/examples/kismet/kismet_alerts.conf
+@sample ${SYSCONFDIR}/kismet_alerts.conf
+share/examples/kismet/kismet_filter.conf
+@sample ${SYSCONFDIR}/kismet_filter.conf
+share/examples/kismet/kismet_httpd.conf
+@sample ${SYSCONFDIR}/kismet_httpd.conf
+share/examples/kismet/kismet_logging.conf
+@sample ${SYSCONFDIR}/kismet_logging.conf
+share/examples/kismet/kismet_memory.conf
+@sample ${SYSCONFDIR}/kismet_memory.conf
+share/examples/kismet/kismet_uav.conf
+@sample ${SYSCONFDIR}/kismet_uav.conf
+share/examples/kismet/kismet_wardrive.conf
+@sample ${SYSCONFDIR}/kismet_wardrive.conf
share/kismet/
-share/kismet/wav/
-share/kismet/wav/alert.wav
@mode 770
@owner _kismet
@group _kismet
@sample /var/log/kismet/
+@extraunexec rm -rf ${LOCALSTATEDIR}/log/kismet
@mode
@owner
@group
-share/kismet/wav/gpslock.wav
-share/kismet/wav/gpslost.wav
-share/kismet/wav/new.wav
-share/kismet/wav/packet.wav
-@extraunexec rm -rf ${LOCALSTATEDIR}/log/kismet
+share/kismet/httpd/
+share/kismet/httpd/channels.html
+share/kismet/httpd/credit.html
+share/kismet/httpd/css/
+share/kismet/httpd/css/Control.Loading.css
+share/kismet/httpd/css/dark.css
+share/kismet/httpd/css/fontawesome.min.css
+share/kismet/httpd/css/grid.css
+share/kismet/httpd/css/ie.css
+share/kismet/httpd/css/ie6.css
+share/kismet/httpd/css/images/
+share/kismet/httpd/css/images/collapsed.gif
+share/kismet/httpd/css/images/expanded.gif
+share/kismet/httpd/css/images/ui-icons_222222_256x240.png
+share/kismet/httpd/css/images/ui-icons_444444_256x240.png
+share/kismet/httpd/css/images/ui-icons_4b8e0b_256x240.png
+share/kismet/httpd/css/images/ui-icons_555555_256x240.png
+share/kismet/httpd/css/images/ui-icons_777620_256x240.png
+share/kismet/httpd/css/images/ui-icons_777777_256x240.png
+share/kismet/httpd/css/images/ui-icons_a83300_256x240.png
+share/kismet/httpd/css/images/ui-icons_cc0000_256x240.png
+share/kismet/httpd/css/images/ui-icons_cccccc_256x240.png
+share/kismet/httpd/css/images/ui-icons_ffffff_256x240.png
+share/kismet/httpd/css/images/uiTabsArrow.png
+share/kismet/httpd/css/jquery-ui.min.css
+share/kismet/httpd/css/jquery.contextMenu.min.css
+share/kismet/httpd/css/jquery.jspanel.min.css
+share/kismet/httpd/css/jquery.kismet.alert.css
+share/kismet/httpd/css/jquery.kismet.auth.css
+share/kismet/httpd/css/jquery.kismet.battery.css
+share/kismet/httpd/css/jquery.kismet.channeldisplay.css
+share/kismet/httpd/css/jquery.kismet.gps.css
+share/kismet/httpd/css/jquery.kismet.messagebus.css
+share/kismet/httpd/css/jqueryui-editable.css
+share/kismet/httpd/css/kismet-dark.css
+share/kismet/httpd/css/kismet.adsb.css
+share/kismet/httpd/css/kismet.css
+share/kismet/httpd/css/kismet.ui.base.css
+share/kismet/httpd/css/kismet.ui.datasources.css
+share/kismet/httpd/css/kismet.ui.gadgets.css
+share/kismet/httpd/css/kismet.ui.iconbar.css
+share/kismet/httpd/css/kismet.ui.radiation.css
+share/kismet/httpd/css/kismet.ui.settings.css
+share/kismet/httpd/css/kismet.ui.sidebar.css
+share/kismet/httpd/css/kismet.ui.tabpane.css
+share/kismet/httpd/css/layout-default-1.4.0.css
+share/kismet/httpd/css/layout.css
+share/kismet/httpd/css/leaflet.css
+share/kismet/httpd/css/light.css
+share/kismet/httpd/css/morris.css
+share/kismet/httpd/css/nav.css
+share/kismet/httpd/css/pushmenu.css
+share/kismet/httpd/css/regular.min.css
+share/kismet/httpd/css/reset.css
+share/kismet/httpd/css/solid.min.css
+share/kismet/httpd/css/spectrum.css
+share/kismet/httpd/css/tabulator.min.css
+share/kismet/httpd/css/tabulator_midnight.min.css
+share/kismet/httpd/css/text.css
+share/kismet/httpd/css/tooltipster.bundle.min.css
+share/kismet/httpd/css/v4-font-face.min.css
+share/kismet/httpd/css/v4-shims.min.css
+share/kismet/httpd/favicon.ico
+share/kismet/httpd/fonts/
+share/kismet/httpd/fonts/jsglyph.eot
+share/kismet/httpd/fonts/jsglyph.svg
+share/kismet/httpd/fonts/jsglyph.ttf
+share/kismet/httpd/fonts/jsglyph.woff
+share/kismet/httpd/images/
+share/kismet/httpd/images/bluetooth-solid-icon-dark.svg
+share/kismet/httpd/images/bluetooth-solid-icon.svg
+share/kismet/httpd/images/collapsed.gif
+share/kismet/httpd/images/expanded.gif
+share/kismet/httpd/images/icon_no_battery_power.svg
+share/kismet/httpd/images/sort_asc.png
+share/kismet/httpd/images/sort_asc_disabled.png
+share/kismet/httpd/images/sort_both.png
+share/kismet/httpd/images/sort_desc.png
+share/kismet/httpd/images/sort_desc_disabled.png
+share/kismet/httpd/images/uiTabsArrow.png
+share/kismet/httpd/images/zigbee-icon-dark.svg
+share/kismet/httpd/images/zigbee-icon-light.svg
+share/kismet/httpd/index.html
+share/kismet/httpd/js/
+share/kismet/httpd/js/Control.Loading.js
+share/kismet/httpd/js/Leaflet.MultiOptionsPolyline.min.js
+share/kismet/httpd/js/chart.umd.js
+share/kismet/httpd/js/chroma.min.js
+share/kismet/httpd/js/clipboard.min.js
+share/kismet/httpd/js/d3.v3.min.js
+share/kismet/httpd/js/jcanvas.min.js
+share/kismet/httpd/js/jquery-3.7.1.min.js
+share/kismet/httpd/js/jquery-fluid16.js
+share/kismet/httpd/js/jquery-ui.min.js
+share/kismet/httpd/js/jquery.ajax.binary.js
+share/kismet/httpd/js/jquery.contextMenu.min.js
+share/kismet/httpd/js/jquery.debounce.min.js
+share/kismet/httpd/js/jquery.jspanel-compiled.min.js
+share/kismet/httpd/js/jquery.kismet.alert.js
+share/kismet/httpd/js/jquery.kismet.battery.js
+share/kismet/httpd/js/jquery.kismet.channeldisplay.js
+share/kismet/httpd/js/jquery.kismet.devicedata.js
+share/kismet/httpd/js/jquery.kismet.gps.js
+share/kismet/httpd/js/jquery.kismet.messagebus.js
+share/kismet/httpd/js/jquery.kismet.packetrate.js
+share/kismet/httpd/js/jquery.layout-latest.js
+share/kismet/httpd/js/jquery.sparkline.min.js
+share/kismet/httpd/js/jquery.storageapi.min.js
+share/kismet/httpd/js/jquery.ui.position.min.js
+share/kismet/httpd/js/jquery.ui.touch-punch.min.js
+share/kismet/httpd/js/jqueryui-editable.min.js
+share/kismet/httpd/js/js.storage.min.js
+share/kismet/httpd/js/kismet.ui.802_15_4.js
+share/kismet/httpd/js/kismet.ui.adsb.js
+share/kismet/httpd/js/kismet.ui.alerts.js
+share/kismet/httpd/js/kismet.ui.base.js
+share/kismet/httpd/js/kismet.ui.bluetooth.js
+share/kismet/httpd/js/kismet.ui.btle.js
+share/kismet/httpd/js/kismet.ui.datasources.js
+share/kismet/httpd/js/kismet.ui.dot11.js
+share/kismet/httpd/js/kismet.ui.gadgets.js
+share/kismet/httpd/js/kismet.ui.iconbar.js
+share/kismet/httpd/js/kismet.ui.js
+share/kismet/httpd/js/kismet.ui.meter.js
+share/kismet/httpd/js/kismet.ui.radiation.js
+share/kismet/httpd/js/kismet.ui.sensor.js
+share/kismet/httpd/js/kismet.ui.settings.js
+share/kismet/httpd/js/kismet.ui.sidebar.js
+share/kismet/httpd/js/kismet.ui.tabpane.js
+share/kismet/httpd/js/kismet.ui.theme.js
+share/kismet/httpd/js/kismet.ui.uav.js
+share/kismet/httpd/js/kismet.ui.walkthrough.js
+share/kismet/httpd/js/kismet.ui.zwave.js
+share/kismet/httpd/js/kismet.units.js
+share/kismet/httpd/js/kismet.utils.js
+share/kismet/httpd/js/leaflet.js
+share/kismet/httpd/js/msgpack.js
+share/kismet/httpd/js/pushmenu.js
+share/kismet/httpd/js/raphael.min.js
+share/kismet/httpd/js/simple-expand.min.js
+share/kismet/httpd/js/spectrum.js
+share/kismet/httpd/js/tabulator.min.js
+share/kismet/httpd/js/tooltipster.bundle.min.js
+share/kismet/httpd/webfonts/
+share/kismet/httpd/webfonts/fa-regular-400.ttf
+share/kismet/httpd/webfonts/fa-regular-400.woff2
+share/kismet/httpd/webfonts/fa-solid-900.ttf
+share/kismet/httpd/webfonts/fa-solid-900.woff2
+share/kismet/httpd/webfonts/fa-v4compatibility.ttf
+share/kismet/httpd/webfonts/fa-v4compatibility.woff2
+share/kismet/kismet_adsb_icao.txt.gz
+share/kismet/kismet_manuf.txt.gz
Index: pkg/README
===================================================================
RCS file: pkg/README
diff -N pkg/README
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/README 18 Jan 2026 14:52:55 -0000
@@ -0,0 +1,18 @@
++-------------------------------------------------------------------------------
+| Running ${PKGSTEM} on OpenBSD
++-------------------------------------------------------------------------------
+
+known to work capture drivers
+=============================
+
+The following capture drivers are known to work:
+ * openbsd_wifi (autodetected)
+ * sdr_rtladsb (autodetected)
+ * sdr_rtl433 (autodetected)
+ * nrf_51822 (not autodetected)
+ * use with:
+ * -c nrf51822:type=nrf51822,device=/dev/cuaU0,name=adafruit
+
+
+Many other capture drivers are enabled. They are untested,
+but may work as well.