What remains of names.go is the naming
The hosts-file writing moved to the node-names fact; what stays is the suffix (configurable, MESH_INTERNAL_SUFFIX, defaulting to .internal which IANA reserved for exactly this), a node's internal name, and the rule for what a node may be called. Several things compose an internal name, and one of them writing the suffix differently would be a name nothing answers to. First attempt at this rewrote the file from memory and silently dropped the configurable suffix. Restored from the original instead — deleting most of a file is git surgery, not paraphrase. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
@@ -29,19 +29,14 @@ import (
|
||||
// how a mesh ends up unable to have a second one.
|
||||
const Requirement = "private-network"
|
||||
|
||||
// Name is the module that answers it with WireGuard, and Names is the one that gives the machines
|
||||
// names. Two modules rather than one, because they are two different things: names would be the
|
||||
// same over any private network, and they are only bundled here by an accident of both being
|
||||
// computed.
|
||||
const (
|
||||
Name = "mesh-wireguard"
|
||||
Names = "mesh-names"
|
||||
)
|
||||
|
||||
// Resolution is what a module asks for when it needs to reach other machines by name. Separate
|
||||
// from Requirement because they are separate jobs: one is whether packets arrive, the other is
|
||||
// whether a name means anything. A machine can want the first without the second.
|
||||
const Resolution = "name-resolution"
|
||||
// Name is the module that answers it with WireGuard.
|
||||
//
|
||||
// **The names went with it.** A mesh-names module used to sit beside this — it wrote /etc/hosts
|
||||
// and ran nothing, which is not a module. Being on the private network is what gives a machine a
|
||||
// name, so this module asks for the `node-names` fact and the mesh writes the file. The
|
||||
// name-resolution provision went the same way: names are facts the mesh computes, not something a
|
||||
// module that runs nowhere can provide.
|
||||
const Name = "mesh-wireguard"
|
||||
|
||||
// Addressing is the mesh handing out addresses on the private network itself.
|
||||
//
|
||||
@@ -131,13 +126,6 @@ func (g *Generator) Resources(node string) ([]map[string]any, bool, error) {
|
||||
return parsed.Resources, true, nil
|
||||
}
|
||||
|
||||
// NameGenerator answers what one node's hosts file is.
|
||||
//
|
||||
// Separate from the interface and the peers because it is a separate concern. A machine's names
|
||||
// come from the mesh knowing every machine, not from how the packets travel — over a different
|
||||
// private network the peers would be written by something else and this would be unchanged.
|
||||
type NameGenerator struct{ nodes []Node }
|
||||
|
||||
// Nodes are the machines this generator was built over, so a caller can say who is on the network.
|
||||
func (g *Generator) Nodes() []Node { return g.nodes }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user