package catalogue // ResolverSeat is the machine's own resolver (novox/hq ADR 0247). const ResolverSeat = "node-resolver" // ResolverFile is the machine's resolver file: the uplink holder's, or the node-resolver holder's where // one is held. const ResolverFile = "/etc/resolv.conf" // resolverVerbs is the contract every holder of node-resolver serves (novox/hq ADR 0247): what is routed // where, route a set of domains, and take a route away. The same verbs are served on the machine itself to // the modules there, so what a VPN pushed never crosses the bus to be routed; on the mesh they are the // operator's way to read and correct the same. func resolverVerbs() []Verb { return []Verb{ {Name: "routes", Description: "What this machine's own resolver sends where: the mesh's resolvers, " + "which answer every name not routed elsewhere, and each link given servers of its own with the " + "domains routed to them. Also the resolver file's outside writes it kept, newest first: when, who " + "wrote it as far as the file says, whether a module took it, and when the resolver's own file was " + "put back.", Input: schema(map[string]string{}, nil), Replaces: []string{"resolvectl status", "resolvectl dns", "resolvectl domain"}}, {Name: "route", Description: "Send these domains, and every name under them, to these servers over " + "this link — and only them: the link is never the machine's default route for names, and the " + "mesh's own domain is refused. Replaces whatever the link was given before. A link that goes away " + "takes its route with it.", Input: schema(map[string]string{ "link": "the network link the servers are reached over, by name (a VPN's tunnel interface)", "domains": "the domains to route there, separated by spaces or commas", "servers": "the servers' addresses, separated by spaces or commas", }, []string{"link", "domains", "servers"}), Replaces: []string{"resolvectl dns", "resolvectl domain", "resolvectl default-route"}}, {Name: "unroute", Description: "Take one link's route away: its domains go back to the mesh's " + "resolvers. Nothing changes when the link has none.", Input: schema(map[string]string{"link": "the network link, by name"}, []string{"link"}), Replaces: []string{"resolvectl revert"}}, } }