Round 296: Tcpdump ext, Tshark ext, Iftop ext, Nethogs ext, Vnstat ext, Iperf3 ext (20 commands)

ober

900400f4798b863cc94ddeb86fb13d05d29d4a1e

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 3b2a484..5f42709 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 296 — Tcpdump ext, Tshark ext, Iftop ext, Nethogs ext, Vnstat ext, Iperf3 ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| tcpdump-capture | :orange_circle: | Tcpdump capture |
+| tcpdump-filter | :orange_circle: | Set tcpdump filter |
+| tcpdump-read | :orange_circle: | Read PCAP file |
+| tcpdump-write | :orange_circle: | Write PCAP file |
+| tshark-capture | :orange_circle: | Tshark capture |
+| tshark-filter | :orange_circle: | Set tshark filter |
+| tshark-decode | :orange_circle: | Decode PCAP |
+| tshark-stats | :orange_circle: | Show tshark stats |
+| iftop-monitor | :orange_circle: | Monitor bandwidth |
+| iftop-interface | :orange_circle: | Monitor interface |
+| nethogs-monitor | :orange_circle: | Per-process bandwidth |
+| nethogs-pid | :orange_circle: | Monitor PID bandwidth |
+| bmon-monitor | :orange_circle: | Bmon bandwidth monitor |
+| bmon-interface | :orange_circle: | Bmon interface monitor |
+| vnstat-show | :orange_circle: | Show traffic summary |
+| vnstat-daily | :orange_circle: | Daily traffic stats |
+| vnstat-monthly | :orange_circle: | Monthly traffic stats |
+| vnstat-live | :orange_circle: | Live traffic monitor |
+| iperf3-server | :orange_circle: | Start iperf3 server |
+| iperf3-client | :orange_circle: | Run iperf3 client |
+
 ### Round 295 — Nmap ext, Masscan ext, Zmap ext, Netcat ext, Socat ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 30575fb..1a820ab 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22697,4 +22697,52 @@
 
 (def (cmd-socat-relay app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Socat: starting relay")))
\ No newline at end of file
+    (echo-message! echo "Socat: starting relay")))
+
+;;; Round 296 — Nethogs ext, Vnstat ext, Iperf3 ext (batch 2)
+
+(def (cmd-nethogs-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nethogs: monitoring per-process bandwidth")))
+
+(def (cmd-nethogs-pid app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Nethogs: monitoring PID " pid))))))
+
+(def (cmd-bmon-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bmon: monitoring bandwidth")))
+
+(def (cmd-bmon-interface app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Bmon: monitoring " iface))))))
+
+(def (cmd-vnstat-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vnstat: showing traffic summary")))
+
+(def (cmd-vnstat-daily app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vnstat: daily traffic")))
+
+(def (cmd-vnstat-monthly app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vnstat: monthly traffic")))
+
+(def (cmd-vnstat-live app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vnstat: live traffic monitor")))
+
+(def (cmd-iperf3-server app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Iperf3: starting server")))
+
+(def (cmd-iperf3-client app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Server: "
+      (lambda (srv)
+        (echo-message! echo (str "Iperf3: connecting to " srv))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index f38cb82..72d6fb6 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23396,3 +23396,61 @@
       (lambda (probe)
         (echo-message! echo (str "Zmap: probe " probe))))))
 
+;;; Round 296 — Tcpdump ext, Tshark ext, Iftop ext (batch 1)
+
+(def (cmd-tcpdump-capture app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Tcpdump: capturing on " iface))))))
+
+(def (cmd-tcpdump-filter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Filter: "
+      (lambda (flt)
+        (echo-message! echo (str "Tcpdump: filter " flt))))))
+
+(def (cmd-tcpdump-read app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PCAP file: "
+      (lambda (file)
+        (echo-message! echo (str "Tcpdump: reading " file))))))
+
+(def (cmd-tcpdump-write app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Output file: "
+      (lambda (file)
+        (echo-message! echo (str "Tcpdump: writing to " file))))))
+
+(def (cmd-tshark-capture app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Tshark: capturing on " iface))))))
+
+(def (cmd-tshark-filter app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Display filter: "
+      (lambda (flt)
+        (echo-message! echo (str "Tshark: filter " flt))))))
+
+(def (cmd-tshark-decode app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PCAP file: "
+      (lambda (file)
+        (echo-message! echo (str "Tshark: decoding " file))))))
+
+(def (cmd-tshark-stats app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Tshark: showing statistics")))
+
+(def (cmd-iftop-monitor app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Iftop: monitoring bandwidth")))
+
+(def (cmd-iftop-interface app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Iftop: monitoring " iface))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index e4a27e9..09ff74a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7633,4 +7633,25 @@
   (register-command! 'socat-connect cmd-socat-connect)
   (register-command! 'socat-proxy cmd-socat-proxy)
   (register-command! 'socat-relay cmd-socat-relay)
+  ;; Round 296
+  (register-command! 'tcpdump-capture cmd-tcpdump-capture)
+  (register-command! 'tcpdump-filter cmd-tcpdump-filter)
+  (register-command! 'tcpdump-read cmd-tcpdump-read)
+  (register-command! 'tcpdump-write cmd-tcpdump-write)
+  (register-command! 'tshark-capture cmd-tshark-capture)
+  (register-command! 'tshark-filter cmd-tshark-filter)
+  (register-command! 'tshark-decode cmd-tshark-decode)
+  (register-command! 'tshark-stats cmd-tshark-stats)
+  (register-command! 'iftop-monitor cmd-iftop-monitor)
+  (register-command! 'iftop-interface cmd-iftop-interface)
+  (register-command! 'nethogs-monitor cmd-nethogs-monitor)
+  (register-command! 'nethogs-pid cmd-nethogs-pid)
+  (register-command! 'bmon-monitor cmd-bmon-monitor)
+  (register-command! 'bmon-interface cmd-bmon-interface)
+  (register-command! 'vnstat-show cmd-vnstat-show)
+  (register-command! 'vnstat-daily cmd-vnstat-daily)
+  (register-command! 'vnstat-monthly cmd-vnstat-monthly)
+  (register-command! 'vnstat-live cmd-vnstat-live)
+  (register-command! 'iperf3-server cmd-iperf3-server)
+  (register-command! 'iperf3-client cmd-iperf3-client)
 )