Round 293: VLAN ext, Bond ext, MacVLAN ext, VXLAN ext, WireGuard ext (20 commands)

ober

ccbe106b79315aae35701c57dd177992e15056e7

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index dcda212..b597101 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 293 — VLAN ext, Bond ext, MacVLAN ext, VXLAN ext, WireGuard ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| vlan-list | :orange_circle: | List VLANs |
+| vlan-add | :orange_circle: | Add VLAN |
+| vlan-remove | :orange_circle: | Remove VLAN |
+| vlan-info | :orange_circle: | Show VLAN info |
+| bond-list | :orange_circle: | List bond interfaces |
+| bond-create | :orange_circle: | Create bond |
+| bond-add-slave | :orange_circle: | Add bond slave |
+| bond-remove-slave | :orange_circle: | Remove bond slave |
+| macvlan-create | :orange_circle: | Create MacVLAN |
+| macvlan-delete | :orange_circle: | Delete MacVLAN |
+| ipvlan-create | :orange_circle: | Create IPVLAN |
+| ipvlan-delete | :orange_circle: | Delete IPVLAN |
+| vxlan-create | :orange_circle: | Create VXLAN tunnel |
+| vxlan-delete | :orange_circle: | Delete VXLAN tunnel |
+| vxlan-list | :orange_circle: | List VXLAN tunnels |
+| wireguard-genkey | :orange_circle: | Generate WireGuard key |
+| wireguard-show | :orange_circle: | Show WireGuard interfaces |
+| wireguard-peer-add | :orange_circle: | Add WireGuard peer |
+| wireguard-peer-remove | :orange_circle: | Remove WireGuard peer |
+| wireguard-status | :orange_circle: | Show WireGuard status |
+
 ### Round 292 — TC ext, IP Rule ext, IP Route ext, IP Link ext, Bridge ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 69d35f0..3df5efd 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -22537,4 +22537,58 @@
 
 (def (cmd-bridge-vlan app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Bridge: showing VLAN entries")))
\ No newline at end of file
+    (echo-message! echo "Bridge: showing VLAN entries")))
+
+;;; Round 293 — VXLAN ext, WireGuard ext (batch 2)
+
+(def (cmd-ipvlan-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "IPVLAN: creating " name))))))
+
+(def (cmd-ipvlan-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "IPVLAN: deleting " name))))))
+
+(def (cmd-vxlan-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "VNI: "
+      (lambda (vni)
+        (echo-message! echo (str "VXLAN: creating VNI " vni))))))
+
+(def (cmd-vxlan-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "VNI: "
+      (lambda (vni)
+        (echo-message! echo (str "VXLAN: deleting VNI " vni))))))
+
+(def (cmd-vxlan-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "VXLAN: listing tunnels")))
+
+(def (cmd-wireguard-genkey app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WireGuard: generating key pair")))
+
+(def (cmd-wireguard-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WireGuard: showing interfaces")))
+
+(def (cmd-wireguard-peer-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Public key: "
+      (lambda (key)
+        (echo-message! echo (str "WireGuard: adding peer " key))))))
+
+(def (cmd-wireguard-peer-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Public key: "
+      (lambda (key)
+        (echo-message! echo (str "WireGuard: removing peer " key))))))
+
+(def (cmd-wireguard-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WireGuard: showing status")))
\ 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 c963d6a..c480d9e 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -23230,3 +23230,61 @@
       (lambda (route)
         (echo-message! echo (str "IP: adding route " route))))))
 
+;;; Round 293 — VLAN ext, Bond ext, MacVLAN ext (batch 1)
+
+(def (cmd-vlan-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "VLAN: listing VLANs")))
+
+(def (cmd-vlan-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "VLAN ID: "
+      (lambda (id)
+        (echo-message! echo (str "VLAN: adding VLAN " id))))))
+
+(def (cmd-vlan-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "VLAN ID: "
+      (lambda (id)
+        (echo-message! echo (str "VLAN: removing VLAN " id))))))
+
+(def (cmd-vlan-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "VLAN ID: "
+      (lambda (id)
+        (echo-message! echo (str "VLAN: info for VLAN " id))))))
+
+(def (cmd-bond-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bond: listing bond interfaces")))
+
+(def (cmd-bond-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Bond name: "
+      (lambda (name)
+        (echo-message! echo (str "Bond: creating " name))))))
+
+(def (cmd-bond-add-slave app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Slave interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Bond: adding slave " iface))))))
+
+(def (cmd-bond-remove-slave app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Slave interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Bond: removing slave " iface))))))
+
+(def (cmd-macvlan-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "MacVLAN: creating " name))))))
+
+(def (cmd-macvlan-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Name: "
+      (lambda (name)
+        (echo-message! echo (str "MacVLAN: deleting " name))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 4eb5230..a337dcd 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7570,4 +7570,25 @@
   (register-command! 'bridge-add cmd-bridge-add)
   (register-command! 'bridge-fdb cmd-bridge-fdb)
   (register-command! 'bridge-vlan cmd-bridge-vlan)
+  ;; Round 293
+  (register-command! 'vlan-list cmd-vlan-list)
+  (register-command! 'vlan-add cmd-vlan-add)
+  (register-command! 'vlan-remove cmd-vlan-remove)
+  (register-command! 'vlan-info cmd-vlan-info)
+  (register-command! 'bond-list cmd-bond-list)
+  (register-command! 'bond-create cmd-bond-create)
+  (register-command! 'bond-add-slave cmd-bond-add-slave)
+  (register-command! 'bond-remove-slave cmd-bond-remove-slave)
+  (register-command! 'macvlan-create cmd-macvlan-create)
+  (register-command! 'macvlan-delete cmd-macvlan-delete)
+  (register-command! 'ipvlan-create cmd-ipvlan-create)
+  (register-command! 'ipvlan-delete cmd-ipvlan-delete)
+  (register-command! 'vxlan-create cmd-vxlan-create)
+  (register-command! 'vxlan-delete cmd-vxlan-delete)
+  (register-command! 'vxlan-list cmd-vxlan-list)
+  (register-command! 'wireguard-genkey cmd-wireguard-genkey)
+  (register-command! 'wireguard-show cmd-wireguard-show)
+  (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)
 )