Round 294: OpenVPN ext, StrongSwan ext, IPsec ext, PPTP ext, L2TP ext (20 commands)

ober

de67cedb99aa07d873ae19d315638d385f2dffdc

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b597101..23adc6a 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 294 — OpenVPN ext, StrongSwan ext, IPsec ext, PPTP ext, L2TP ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| openvpn-start | :orange_circle: | Start OpenVPN |
+| openvpn-stop | :orange_circle: | Stop OpenVPN |
+| openvpn-status | :orange_circle: | Show OpenVPN status |
+| openvpn-config | :orange_circle: | View OpenVPN config |
+| strongswan-start | :orange_circle: | Start StrongSwan |
+| strongswan-stop | :orange_circle: | Stop StrongSwan |
+| strongswan-status | :orange_circle: | Show StrongSwan status |
+| strongswan-reload | :orange_circle: | Reload StrongSwan |
+| ipsec-status | :orange_circle: | Show IPsec status |
+| ipsec-up | :orange_circle: | Bring up IPsec conn |
+| ipsec-down | :orange_circle: | Bring down IPsec conn |
+| ipsec-list | :orange_circle: | List IPsec SAs |
+| pptp-connect | :orange_circle: | Connect PPTP |
+| pptp-disconnect | :orange_circle: | Disconnect PPTP |
+| pptp-status | :orange_circle: | Show PPTP status |
+| l2tp-connect | :orange_circle: | Connect L2TP |
+| l2tp-disconnect | :orange_circle: | Disconnect L2TP |
+| l2tp-status | :orange_circle: | Show L2TP status |
+| l2tp-tunnel-list | :orange_circle: | List L2TP tunnels |
+| l2tp-session-list | :orange_circle: | List L2TP sessions |
+
 ### Round 293 — VLAN ext, Bond ext, MacVLAN ext, VXLAN ext, WireGuard ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 3df5efd..1c3123a 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22591,4 +22591,52 @@
 
 (def (cmd-wireguard-status app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "WireGuard: showing status")))
\ No newline at end of file
+    (echo-message! echo "WireGuard: showing status")))
+
+;;; Round 294 — IPsec ext, PPTP ext, L2TP ext (batch 2)
+
+(def (cmd-ipsec-down app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Connection: "
+      (lambda (conn)
+        (echo-message! echo (str "IPsec: bringing down " conn))))))
+
+(def (cmd-ipsec-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "IPsec: listing SAs")))
+
+(def (cmd-pptp-connect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Server: "
+      (lambda (srv)
+        (echo-message! echo (str "PPTP: connecting to " srv))))))
+
+(def (cmd-pptp-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PPTP: disconnecting")))
+
+(def (cmd-pptp-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PPTP: showing status")))
+
+(def (cmd-l2tp-connect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Server: "
+      (lambda (srv)
+        (echo-message! echo (str "L2TP: connecting to " srv))))))
+
+(def (cmd-l2tp-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "L2TP: disconnecting")))
+
+(def (cmd-l2tp-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "L2TP: showing status")))
+
+(def (cmd-l2tp-tunnel-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "L2TP: listing tunnels")))
+
+(def (cmd-l2tp-session-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "L2TP: listing sessions")))
\ 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 c480d9e..feb0c80 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23288,3 +23288,49 @@
       (lambda (name)
         (echo-message! echo (str "MacVLAN: deleting " name))))))
 
+;;; Round 294 — OpenVPN ext, StrongSwan ext, IPsec ext (batch 1)
+
+(def (cmd-openvpn-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Config file: "
+      (lambda (cfg)
+        (echo-message! echo (str "OpenVPN: starting " cfg))))))
+
+(def (cmd-openvpn-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OpenVPN: stopping")))
+
+(def (cmd-openvpn-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OpenVPN: showing status")))
+
+(def (cmd-openvpn-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OpenVPN: viewing configuration")))
+
+(def (cmd-strongswan-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "StrongSwan: starting")))
+
+(def (cmd-strongswan-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "StrongSwan: stopping")))
+
+(def (cmd-strongswan-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "StrongSwan: showing status")))
+
+(def (cmd-strongswan-reload app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "StrongSwan: reloading config")))
+
+(def (cmd-ipsec-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "IPsec: showing status")))
+
+(def (cmd-ipsec-up app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Connection: "
+      (lambda (conn)
+        (echo-message! echo (str "IPsec: bringing up " conn))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index a337dcd..1a8875e 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7591,4 +7591,25 @@
   (register-command! 'wireguard-peer-add cmd-wireguard-peer-add)
   (register-command! 'wireguard-peer-remove cmd-wireguard-peer-remove)
   (register-command! 'wireguard-status cmd-wireguard-status)
+  ;; Round 294
+  (register-command! 'openvpn-start cmd-openvpn-start)
+  (register-command! 'openvpn-stop cmd-openvpn-stop)
+  (register-command! 'openvpn-status cmd-openvpn-status)
+  (register-command! 'openvpn-config cmd-openvpn-config)
+  (register-command! 'strongswan-start cmd-strongswan-start)
+  (register-command! 'strongswan-stop cmd-strongswan-stop)
+  (register-command! 'strongswan-status cmd-strongswan-status)
+  (register-command! 'strongswan-reload cmd-strongswan-reload)
+  (register-command! 'ipsec-status cmd-ipsec-status)
+  (register-command! 'ipsec-up cmd-ipsec-up)
+  (register-command! 'ipsec-down cmd-ipsec-down)
+  (register-command! 'ipsec-list cmd-ipsec-list)
+  (register-command! 'pptp-connect cmd-pptp-connect)
+  (register-command! 'pptp-disconnect cmd-pptp-disconnect)
+  (register-command! 'pptp-status cmd-pptp-status)
+  (register-command! 'l2tp-connect cmd-l2tp-connect)
+  (register-command! 'l2tp-disconnect cmd-l2tp-disconnect)
+  (register-command! 'l2tp-status cmd-l2tp-status)
+  (register-command! 'l2tp-tunnel-list cmd-l2tp-tunnel-list)
+  (register-command! 'l2tp-session-list cmd-l2tp-session-list)
 )