Files
mesh-catalog/modules/networkmanager/cmd/uplink-tools/main.go
T
jochen c619a672a3
mesh/merge-gate pass: builds networkmanager, systemd-networkd, sent nowhere; no bus step; 4 wait(s) for a person; every machine composes with the change as…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group feat/node-uplink-verbs delivered: every member is delivered
Serve the uplink seat's verbs from both of its holders (hq ADR 0241)
What a machine resolves through had no tool: the resolver file and who
wrote it, and every link with its default route and the resolvers its
manager knows. Each holder serves the same two node-uplink verbs; the
reading is one text carried by both, held to it by a test, and only
asking the manager for a link's names is each holder's own.
2026-10-07 19:19:52 +02:00

36 lines
1.4 KiB
Go

// The uplink holder's tools bundle: the node-uplink seat's verbs (novox/hq ADR 0241), served by the node's
// runtime as the operator account. uplink.go is every holder's; manager.go is this holder's own. stdout is
// the MCP channel; this says nothing else.
package main
import (
"context"
"fmt"
"os"
stdio "git.novox.be/novox/mesh-sdk/go"
)
func tools(m Machine) []stdio.Tool {
return []stdio.Tool{
{Name: seat + ".resolvers",
Description: "The machine's resolver file as it is now: the resolvers, search domains and options it lists, " +
"whether it is the file the mesh declares, and when it is not, who wrote it as far as the machine shows " +
"— its header, a backup a VPN client left beside it, a link in its place, a known writer running. (r)",
Run: func(map[string]any) (any, error) { return m.ReadResolvers() }},
{Name: seat + ".links",
Description: "Every network link on the machine: its state, its addresses, whether the default route " +
"leaves through it, and the resolvers and search domains the network manager knows for it — a VPN's " +
"tunnel included. (r)",
Run: func(map[string]any) (any, error) { return m.Links(context.Background()) }},
}
}
func main() {
m := Machine{ResolvPath: ResolvConf, Run: execRunner, Running: running, LinkDNS: managerDNS}
if err := stdio.Serve("", tools(m)); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}