MCPcopy Create free account
hub / github.com/tailscale/tailcat / Start

Method Start

tailcat.go:1161–1254  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1159}
1160
1161func (lb *locoBackend) Start() error {
1162 if err := lb.ns.Start(nil /* no LocalBackend */); err != nil {
1163 return fmt.Errorf("failed to start netstack: %w", err)
1164 }
1165
1166 e := lb.sys.Engine.Get()
1167 mc := lb.sys.MagicSock.Get()
1168 lb.logf("disco pub key: %v", mc.DiscoPublicKey())
1169
1170 mc.SetPrivateKey(lb.priv)
1171 mc.SetDERPMap(lb.dm)
1172
1173 derpRegion := lb.derpRegionID()
1174
1175 nm := &netmap.NetworkMap{
1176 NodeKey: lb.pub,
1177 }
1178 if lb.serverPub.IsZero() {
1179 // We're the server. (hence the serverPub is zero)
1180 nm.SelfNode = (&tailcfg.Node{
1181 ID: 1,
1182 StableID: "1",
1183 Name: "server.tailcat.",
1184 User: 100,
1185 Key: lb.pub,
1186 DiscoKey: mc.DiscoPublicKey(),
1187 Addresses: []netip.Prefix{lb.addrPrefix},
1188 AllowedIPs: []netip.Prefix{lb.addrPrefix, allIPv6},
1189 HomeDERP: derpRegion,
1190 }).View()
1191 } else {
1192 // We're the client.
1193 serverAddr := tcAddrForKey(lb.serverPub)
1194 serverAddrPrefix := netip.PrefixFrom(serverAddr, serverAddr.BitLen())
1195
1196 nm.SelfNode = (&tailcfg.Node{
1197 ID: 2,
1198 StableID: "2",
1199 Name: "client.tailcat.",
1200 User: 100,
1201 Key: lb.pub,
1202 DiscoKey: mc.DiscoPublicKey(),
1203 Addresses: []netip.Prefix{lb.addrPrefix},
1204 HomeDERP: derpRegion,
1205 }).View()
1206 nm.Peers = append(nm.Peers, (&tailcfg.Node{
1207 ID: 1,
1208 StableID: "1",
1209 Name: "server.tailcat.",
1210 User: 100,
1211 Key: lb.serverPub,
1212 DiscoKey: nodePublicAsDiscoPublic(lb.serverPub),
1213 Addresses: []netip.Prefix{serverAddrPrefix},
1214 AllowedIPs: []netip.Prefix{serverAddrPrefix, allIPv6},
1215 HomeDERP: derpRegion,
1216 }).View())
1217 }
1218 lb.mu.Lock()

Callers

nothing calls this directly

Calls 5

derpRegionIDMethod · 0.95
tcAddrForKeyFunction · 0.85
nodePublicAsDiscoPublicFunction · 0.85
GetMethod · 0.65
StartMethod · 0.45

Tested by

no test coverage detected