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
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.
36 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|