SYMBOL INDEX (3826 symbols across 236 files) FILE: .github/workflows/gh-action-integration-generator.go function expandTests (line 44) | func expandTests(tests []string) []string { function findTests (line 62) | func findTests() []string { function updateYAML (line 90) | func updateYAML(tests []string, jobName string, testPath string) { function main (line 115) | func main() { FILE: cmd/headscale/cli/api_key.go constant DefaultAPIKeyExpiry (line 16) | DefaultAPIKeyExpiry = "90d" function init (line 19) | func init() { function apiKeyIDOrPrefix (line 105) | func apiKeyIDOrPrefix(cmd *cobra.Command) (uint64, string, error) { FILE: cmd/headscale/cli/auth.go function init (line 11) | func init() { FILE: cmd/headscale/cli/configtest.go function init (line 9) | func init() { FILE: cmd/headscale/cli/debug.go function init (line 12) | func init() { FILE: cmd/headscale/cli/dump_config.go function init (line 10) | func init() { FILE: cmd/headscale/cli/generate.go function init (line 10) | func init() { FILE: cmd/headscale/cli/health.go function init (line 11) | func init() { FILE: cmd/headscale/cli/mockoidc.go type Error (line 20) | type Error method Error (line 22) | func (e Error) Error() string { return string(e) } constant errMockOidcClientIDNotDefined (line 25) | errMockOidcClientIDNotDefined = Error("MOCKOIDC_CLIENT_ID not defined") constant errMockOidcClientSecretNotDefined (line 26) | errMockOidcClientSecretNotDefined = Error("MOCKOIDC_CLIENT_SECRET not de... constant errMockOidcPortNotDefined (line 27) | errMockOidcPortNotDefined = Error("MOCKOIDC_PORT not defined") constant errMockOidcUsersNotDefined (line 28) | errMockOidcUsersNotDefined = Error("MOCKOIDC_USERS not defined") constant refreshTTL (line 29) | refreshTTL = 60 * time.Minute function init (line 34) | func init() { function mockOIDC (line 52) | func mockOIDC() error { function getMockOIDC (line 128) | func getMockOIDC(clientID string, clientSecret string, users []mockoidc.... FILE: cmd/headscale/cli/nodes.go function init (line 20) | func init() { function nodesToPtables (line 305) | func nodesToPtables( function nodeRoutesToPtables (line 437) | func nodeRoutesToPtables( FILE: cmd/headscale/cli/policy.go constant bypassFlag (line 17) | bypassFlag = "bypass-grpc-and-access-database-directly" function bypassDatabase (line 25) | func bypassDatabase() (*db.HSDatabase, error) { function init (line 39) | func init() { FILE: cmd/headscale/cli/preauthkeys.go constant DefaultPreAuthKeyExpiry (line 16) | DefaultPreAuthKeyExpiry = "1h" function init (line 19) | func init() { FILE: cmd/headscale/cli/pterm_style.go function ColourTime (line 9) | func ColourTime(date time.Time) string { FILE: cmd/headscale/cli/root.go function init (line 19) | func init() { function initConfig (line 47) | func initConfig() { function isPreReleaseVersion (line 103) | func isPreReleaseVersion(version string) bool { function filterPreReleasesIfStable (line 118) | func filterPreReleasesIfStable(versionFunc func() string) func(string) b... function Execute (line 150) | func Execute() { FILE: cmd/headscale/cli/root_test.go function TestFilterPreReleasesIfStable (line 7) | func TestFilterPreReleasesIfStable(t *testing.T) { function TestIsPreReleaseVersion (line 216) | func TestIsPreReleaseVersion(t *testing.T) { FILE: cmd/headscale/cli/serve.go function init (line 12) | func init() { FILE: cmd/headscale/cli/users.go function usernameAndIDFlag (line 24) | func usernameAndIDFlag(cmd *cobra.Command) { function usernameAndIDFromFlag (line 30) | func usernameAndIDFromFlag(cmd *cobra.Command) (uint64, string, error) { function init (line 47) | func init() { FILE: cmd/headscale/cli/utils.go constant HeadscaleDateTimeFormat (line 28) | HeadscaleDateTimeFormat = "2006-01-02 15:04:05" constant SocketWritePermissions (line 29) | SocketWritePermissions = 0o666 constant outputFormatJSON (line 31) | outputFormatJSON = "json" constant outputFormatJSONLine (line 32) | outputFormatJSONLine = "json-line" constant outputFormatYAML (line 33) | outputFormatYAML = "yaml" function mustMarkRequired (line 44) | func mustMarkRequired(cmd *cobra.Command, names ...string) { function newHeadscaleServerWithConfig (line 53) | func newHeadscaleServerWithConfig() (*hscontrol.Headscale, error) { function grpcRunE (line 73) | func grpcRunE( function newHeadscaleCLIWithConfig (line 88) | func newHeadscaleCLIWithConfig() (context.Context, v1.HeadscaleServiceCl... function formatOutput (line 187) | func formatOutput(result any, override string, outputFormat string) (str... function printOutput (line 217) | func printOutput(cmd *cobra.Command, result any, override string) error { function expirationFromFlag (line 232) | func expirationFromFlag(cmd *cobra.Command) (*timestamppb.Timestamp, err... function confirmAction (line 245) | func confirmAction(cmd *cobra.Command, prompt string) bool { function printListOutput (line 257) | func printListOutput( function printError (line 273) | func printError(err error, outputFormat string) { function hasMachineOutputFlag (line 298) | func hasMachineOutputFlag() bool { type tokenAuth (line 308) | type tokenAuth struct method GetRequestMetadata (line 313) | func (t tokenAuth) GetRequestMetadata( method RequireTransportSecurity (line 322) | func (tokenAuth) RequireTransportSecurity() bool { FILE: cmd/headscale/cli/version.go function init (line 8) | func init() { FILE: cmd/headscale/headscale.go function main (line 13) | func main() { FILE: cmd/headscale/headscale_test.go function TestConfigFileLoading (line 16) | func TestConfigFileLoading(t *testing.T) { function TestConfigLoading (line 48) | func TestConfigLoading(t *testing.T) { FILE: cmd/hi/cleanup.go function cleanupBeforeTest (line 22) | func cleanupBeforeTest(ctx context.Context) error { function cleanupAfterTest (line 36) | func cleanupAfterTest(ctx context.Context, cli *client.Client, container... function killTestContainers (line 57) | func killTestContainers(ctx context.Context) error { function killTestContainersByRunID (line 111) | func killTestContainersByRunID(ctx context.Context, runID string) error { function cleanupStaleTestContainers (line 153) | func cleanupStaleTestContainers(ctx context.Context) error { constant containerRemoveInitialInterval (line 203) | containerRemoveInitialInterval = 100 * time.Millisecond constant containerRemoveMaxElapsedTime (line 204) | containerRemoveMaxElapsedTime = 2 * time.Second function removeContainerWithRetry (line 208) | func removeContainerWithRetry(ctx context.Context, cli *client.Client, c... function pruneDockerNetworks (line 227) | func pruneDockerNetworks(ctx context.Context) error { function cleanOldImages (line 249) | func cleanOldImages(ctx context.Context) error { function cleanCacheVolume (line 301) | func cleanCacheVolume(ctx context.Context) error { function cleanupSuccessfulTestArtifacts (line 335) | func cleanupSuccessfulTestArtifacts(logsDir string, verbose bool) error { function getDirSize (line 415) | func getDirSize(path string) (int64, error) { FILE: cmd/hi/docker.go constant defaultDirPerm (line 25) | defaultDirPerm = 0o755 function runTestContainer (line 37) | func runTestContainer(ctx context.Context, config *RunConfig) error { function buildGoTestCommand (line 205) | func buildGoTestCommand(config *RunConfig) []string { function createGoTestContainer (line 223) | func createGoTestContainer(ctx context.Context, cli *client.Client, conf... function streamAndWait (line 321) | func streamAndWait(ctx context.Context, cli *client.Client, containerID ... function waitForContainerFinalization (line 350) | func waitForContainerFinalization(ctx context.Context, cli *client.Clien... function isContainerFinalized (line 412) | func isContainerFinalized(state *container.State) bool { function findProjectRoot (line 418) | func findProjectRoot(startPath string) string { function boolToInt (line 435) | func boolToInt(b bool) int { type DockerContext (line 444) | type DockerContext struct function createDockerClient (line 452) | func createDockerClient(ctx context.Context) (*client.Client, error) { function getCurrentDockerContext (line 484) | func getCurrentDockerContext(ctx context.Context) (*DockerContext, error) { function getDockerSocketPath (line 505) | func getDockerSocketPath() string { function checkImageAvailableLocally (line 512) | func checkImageAvailableLocally(ctx context.Context, cli *client.Client,... function ensureImageAvailable (line 526) | func ensureImageAvailable(ctx context.Context, cli *client.Client, image... function listControlFiles (line 570) | func listControlFiles(logsDir string) { function extractArtifactsFromContainers (line 630) | func extractArtifactsFromContainers(ctx context.Context, testContainerID... type testContainer (line 672) | type testContainer struct function getCurrentTestContainers (line 678) | func getCurrentTestContainers(containers []container.Summary, testContai... function extractContainerArtifacts (line 728) | func extractContainerArtifacts(ctx context.Context, cli *client.Client, ... function extractContainerLogs (line 756) | func extractContainerLogs(ctx context.Context, cli *client.Client, conta... function extractContainerFiles (line 803) | func extractContainerFiles(ctx context.Context, cli *client.Client, cont... FILE: cmd/hi/doctor.go type DoctorResult (line 15) | type DoctorResult struct function runDoctorCheck (line 23) | func runDoctorCheck(ctx context.Context) error { function checkDockerBinary (line 65) | func checkDockerBinary() DoctorResult { function checkDockerDaemon (line 88) | func checkDockerDaemon(ctx context.Context) DoctorResult { function checkDockerContext (line 127) | func checkDockerContext(ctx context.Context) DoctorResult { function checkDockerSocket (line 157) | func checkDockerSocket(ctx context.Context) DoctorResult { function checkGolangImage (line 194) | func checkGolangImage(ctx context.Context) DoctorResult { function checkGoInstallation (line 254) | func checkGoInstallation(ctx context.Context) DoctorResult { function checkGitRepository (line 289) | func checkGitRepository(ctx context.Context) DoctorResult { function checkRequiredFiles (line 313) | func checkRequiredFiles(ctx context.Context) DoctorResult { function displayDoctorResults (line 352) | func displayDoctorResults(results []DoctorResult) { FILE: cmd/hi/main.go function main (line 13) | func main() { function cleanAll (line 81) | func cleanAll(ctx context.Context) error { FILE: cmd/hi/run.go type RunConfig (line 16) | type RunConfig struct function runIntegrationTest (line 33) | func runIntegrationTest(env *command.Env) error { function detectGoVersion (line 68) | func detectGoVersion() string { function splitLines (line 98) | func splitLines(s string) []string { function indexOf (line 121) | func indexOf(s, substr string) int { FILE: cmd/hi/stats.go type ContainerStats (line 25) | type ContainerStats struct type StatsSample (line 33) | type StatsSample struct type StatsCollector (line 40) | type StatsCollector struct method StartCollection (line 64) | func (sc *StatsCollector) StartCollection(ctx context.Context, runID s... method StopCollection (line 92) | func (sc *StatsCollector) StopCollection() { method monitorExistingContainers (line 116) | func (sc *StatsCollector) monitorExistingContainers(ctx context.Contex... method monitorDockerEvents (line 136) | func (sc *StatsCollector) monitorDockerEvents(ctx context.Context, run... method shouldMonitorContainer (line 185) | func (sc *StatsCollector) shouldMonitorContainer(cont types.Container,... method startStatsForContainer (line 203) | func (sc *StatsCollector) startStatsForContainer(ctx context.Context, ... method collectStatsForContainer (line 230) | func (sc *StatsCollector) collectStatsForContainer(ctx context.Context... method GetSummary (line 348) | func (sc *StatsCollector) GetSummary() []ContainerStatsSummary { method PrintSummary (line 430) | func (sc *StatsCollector) PrintSummary() { method CheckMemoryLimits (line 452) | func (sc *StatsCollector) CheckMemoryLimits(hsLimitMB, tsLimitMB float... method PrintSummaryAndCheckLimits (line 484) | func (sc *StatsCollector) PrintSummaryAndCheckLimits(hsLimitMB, tsLimi... method Close (line 490) | func (sc *StatsCollector) Close() error { function NewStatsCollector (line 50) | func NewStatsCollector(ctx context.Context) (*StatsCollector, error) { function calculateCPUPercent (line 306) | func calculateCPUPercent(prevStats, stats *container.Stats) float64 { //... type ContainerStatsSummary (line 326) | type ContainerStatsSummary struct type MemoryViolation (line 334) | type MemoryViolation struct type StatsSummary (line 341) | type StatsSummary struct function calculateStatsSummary (line 401) | func calculateStatsSummary(values []float64) StatsSummary { FILE: cmd/mapresponses/main.go type MapConfig (line 15) | type MapConfig struct function main (line 24) | func main() { function runOnline (line 45) | func runOnline(env *command.Env) error { FILE: gen/go/headscale/v1/apikey.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type ApiKey (line 25) | type ApiKey struct method Reset (line 36) | func (x *ApiKey) Reset() { method String (line 43) | func (x *ApiKey) String() string { method ProtoMessage (line 47) | func (*ApiKey) ProtoMessage() {} method ProtoReflect (line 49) | func (x *ApiKey) ProtoReflect() protoreflect.Message { method Descriptor (line 62) | func (*ApiKey) Descriptor() ([]byte, []int) { method GetId (line 66) | func (x *ApiKey) GetId() uint64 { method GetPrefix (line 73) | func (x *ApiKey) GetPrefix() string { method GetExpiration (line 80) | func (x *ApiKey) GetExpiration() *timestamppb.Timestamp { method GetCreatedAt (line 87) | func (x *ApiKey) GetCreatedAt() *timestamppb.Timestamp { method GetLastSeen (line 94) | func (x *ApiKey) GetLastSeen() *timestamppb.Timestamp { type CreateApiKeyRequest (line 101) | type CreateApiKeyRequest struct method Reset (line 108) | func (x *CreateApiKeyRequest) Reset() { method String (line 115) | func (x *CreateApiKeyRequest) String() string { method ProtoMessage (line 119) | func (*CreateApiKeyRequest) ProtoMessage() {} method ProtoReflect (line 121) | func (x *CreateApiKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 134) | func (*CreateApiKeyRequest) Descriptor() ([]byte, []int) { method GetExpiration (line 138) | func (x *CreateApiKeyRequest) GetExpiration() *timestamppb.Timestamp { type CreateApiKeyResponse (line 145) | type CreateApiKeyResponse struct method Reset (line 152) | func (x *CreateApiKeyResponse) Reset() { method String (line 159) | func (x *CreateApiKeyResponse) String() string { method ProtoMessage (line 163) | func (*CreateApiKeyResponse) ProtoMessage() {} method ProtoReflect (line 165) | func (x *CreateApiKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 178) | func (*CreateApiKeyResponse) Descriptor() ([]byte, []int) { method GetApiKey (line 182) | func (x *CreateApiKeyResponse) GetApiKey() string { type ExpireApiKeyRequest (line 189) | type ExpireApiKeyRequest struct method Reset (line 197) | func (x *ExpireApiKeyRequest) Reset() { method String (line 204) | func (x *ExpireApiKeyRequest) String() string { method ProtoMessage (line 208) | func (*ExpireApiKeyRequest) ProtoMessage() {} method ProtoReflect (line 210) | func (x *ExpireApiKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 223) | func (*ExpireApiKeyRequest) Descriptor() ([]byte, []int) { method GetPrefix (line 227) | func (x *ExpireApiKeyRequest) GetPrefix() string { method GetId (line 234) | func (x *ExpireApiKeyRequest) GetId() uint64 { type ExpireApiKeyResponse (line 241) | type ExpireApiKeyResponse struct method Reset (line 247) | func (x *ExpireApiKeyResponse) Reset() { method String (line 254) | func (x *ExpireApiKeyResponse) String() string { method ProtoMessage (line 258) | func (*ExpireApiKeyResponse) ProtoMessage() {} method ProtoReflect (line 260) | func (x *ExpireApiKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 273) | func (*ExpireApiKeyResponse) Descriptor() ([]byte, []int) { type ListApiKeysRequest (line 277) | type ListApiKeysRequest struct method Reset (line 283) | func (x *ListApiKeysRequest) Reset() { method String (line 290) | func (x *ListApiKeysRequest) String() string { method ProtoMessage (line 294) | func (*ListApiKeysRequest) ProtoMessage() {} method ProtoReflect (line 296) | func (x *ListApiKeysRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 309) | func (*ListApiKeysRequest) Descriptor() ([]byte, []int) { type ListApiKeysResponse (line 313) | type ListApiKeysResponse struct method Reset (line 320) | func (x *ListApiKeysResponse) Reset() { method String (line 327) | func (x *ListApiKeysResponse) String() string { method ProtoMessage (line 331) | func (*ListApiKeysResponse) ProtoMessage() {} method ProtoReflect (line 333) | func (x *ListApiKeysResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 346) | func (*ListApiKeysResponse) Descriptor() ([]byte, []int) { method GetApiKeys (line 350) | func (x *ListApiKeysResponse) GetApiKeys() []*ApiKey { type DeleteApiKeyRequest (line 357) | type DeleteApiKeyRequest struct method Reset (line 365) | func (x *DeleteApiKeyRequest) Reset() { method String (line 372) | func (x *DeleteApiKeyRequest) String() string { method ProtoMessage (line 376) | func (*DeleteApiKeyRequest) ProtoMessage() {} method ProtoReflect (line 378) | func (x *DeleteApiKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 391) | func (*DeleteApiKeyRequest) Descriptor() ([]byte, []int) { method GetPrefix (line 395) | func (x *DeleteApiKeyRequest) GetPrefix() string { method GetId (line 402) | func (x *DeleteApiKeyRequest) GetId() uint64 { type DeleteApiKeyResponse (line 409) | type DeleteApiKeyResponse struct method Reset (line 415) | func (x *DeleteApiKeyResponse) Reset() { method String (line 422) | func (x *DeleteApiKeyResponse) String() string { method ProtoMessage (line 426) | func (*DeleteApiKeyResponse) ProtoMessage() {} method ProtoReflect (line 428) | func (x *DeleteApiKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 441) | func (*DeleteApiKeyResponse) Descriptor() ([]byte, []int) { constant file_headscale_v1_apikey_proto_rawDesc (line 447) | file_headscale_v1_apikey_proto_rawDesc = "" + function file_headscale_v1_apikey_proto_rawDescGZIP (line 482) | func file_headscale_v1_apikey_proto_rawDescGZIP() []byte { function init (line 515) | func init() { file_headscale_v1_apikey_proto_init() } function file_headscale_v1_apikey_proto_init (line 516) | func file_headscale_v1_apikey_proto_init() { FILE: gen/go/headscale/v1/auth.pb.go constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type AuthRegisterRequest (line 24) | type AuthRegisterRequest struct method Reset (line 32) | func (x *AuthRegisterRequest) Reset() { method String (line 39) | func (x *AuthRegisterRequest) String() string { method ProtoMessage (line 43) | func (*AuthRegisterRequest) ProtoMessage() {} method ProtoReflect (line 45) | func (x *AuthRegisterRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 58) | func (*AuthRegisterRequest) Descriptor() ([]byte, []int) { method GetUser (line 62) | func (x *AuthRegisterRequest) GetUser() string { method GetAuthId (line 69) | func (x *AuthRegisterRequest) GetAuthId() string { type AuthRegisterResponse (line 76) | type AuthRegisterResponse struct method Reset (line 83) | func (x *AuthRegisterResponse) Reset() { method String (line 90) | func (x *AuthRegisterResponse) String() string { method ProtoMessage (line 94) | func (*AuthRegisterResponse) ProtoMessage() {} method ProtoReflect (line 96) | func (x *AuthRegisterResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 109) | func (*AuthRegisterResponse) Descriptor() ([]byte, []int) { method GetNode (line 113) | func (x *AuthRegisterResponse) GetNode() *Node { type AuthApproveRequest (line 120) | type AuthApproveRequest struct method Reset (line 127) | func (x *AuthApproveRequest) Reset() { method String (line 134) | func (x *AuthApproveRequest) String() string { method ProtoMessage (line 138) | func (*AuthApproveRequest) ProtoMessage() {} method ProtoReflect (line 140) | func (x *AuthApproveRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 153) | func (*AuthApproveRequest) Descriptor() ([]byte, []int) { method GetAuthId (line 157) | func (x *AuthApproveRequest) GetAuthId() string { type AuthApproveResponse (line 164) | type AuthApproveResponse struct method Reset (line 170) | func (x *AuthApproveResponse) Reset() { method String (line 177) | func (x *AuthApproveResponse) String() string { method ProtoMessage (line 181) | func (*AuthApproveResponse) ProtoMessage() {} method ProtoReflect (line 183) | func (x *AuthApproveResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 196) | func (*AuthApproveResponse) Descriptor() ([]byte, []int) { type AuthRejectRequest (line 200) | type AuthRejectRequest struct method Reset (line 207) | func (x *AuthRejectRequest) Reset() { method String (line 214) | func (x *AuthRejectRequest) String() string { method ProtoMessage (line 218) | func (*AuthRejectRequest) ProtoMessage() {} method ProtoReflect (line 220) | func (x *AuthRejectRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 233) | func (*AuthRejectRequest) Descriptor() ([]byte, []int) { method GetAuthId (line 237) | func (x *AuthRejectRequest) GetAuthId() string { type AuthRejectResponse (line 244) | type AuthRejectResponse struct method Reset (line 250) | func (x *AuthRejectResponse) Reset() { method String (line 257) | func (x *AuthRejectResponse) String() string { method ProtoMessage (line 261) | func (*AuthRejectResponse) ProtoMessage() {} method ProtoReflect (line 263) | func (x *AuthRejectResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 276) | func (*AuthRejectResponse) Descriptor() ([]byte, []int) { constant file_headscale_v1_auth_proto_rawDesc (line 282) | file_headscale_v1_auth_proto_rawDesc = "" + function file_headscale_v1_auth_proto_rawDescGZIP (line 302) | func file_headscale_v1_auth_proto_rawDescGZIP() []byte { function init (line 328) | func init() { file_headscale_v1_auth_proto_init() } function file_headscale_v1_auth_proto_init (line 329) | func file_headscale_v1_auth_proto_init() { FILE: gen/go/headscale/v1/device.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type Latency (line 25) | type Latency struct method Reset (line 33) | func (x *Latency) Reset() { method String (line 40) | func (x *Latency) String() string { method ProtoMessage (line 44) | func (*Latency) ProtoMessage() {} method ProtoReflect (line 46) | func (x *Latency) ProtoReflect() protoreflect.Message { method Descriptor (line 59) | func (*Latency) Descriptor() ([]byte, []int) { method GetLatencyMs (line 63) | func (x *Latency) GetLatencyMs() float32 { method GetPreferred (line 70) | func (x *Latency) GetPreferred() bool { type ClientSupports (line 77) | type ClientSupports struct method Reset (line 89) | func (x *ClientSupports) Reset() { method String (line 96) | func (x *ClientSupports) String() string { method ProtoMessage (line 100) | func (*ClientSupports) ProtoMessage() {} method ProtoReflect (line 102) | func (x *ClientSupports) ProtoReflect() protoreflect.Message { method Descriptor (line 115) | func (*ClientSupports) Descriptor() ([]byte, []int) { method GetHairPinning (line 119) | func (x *ClientSupports) GetHairPinning() bool { method GetIpv6 (line 126) | func (x *ClientSupports) GetIpv6() bool { method GetPcp (line 133) | func (x *ClientSupports) GetPcp() bool { method GetPmp (line 140) | func (x *ClientSupports) GetPmp() bool { method GetUdp (line 147) | func (x *ClientSupports) GetUdp() bool { method GetUpnp (line 154) | func (x *ClientSupports) GetUpnp() bool { type ClientConnectivity (line 161) | type ClientConnectivity struct method Reset (line 172) | func (x *ClientConnectivity) Reset() { method String (line 179) | func (x *ClientConnectivity) String() string { method ProtoMessage (line 183) | func (*ClientConnectivity) ProtoMessage() {} method ProtoReflect (line 185) | func (x *ClientConnectivity) ProtoReflect() protoreflect.Message { method Descriptor (line 198) | func (*ClientConnectivity) Descriptor() ([]byte, []int) { method GetEndpoints (line 202) | func (x *ClientConnectivity) GetEndpoints() []string { method GetDerp (line 209) | func (x *ClientConnectivity) GetDerp() string { method GetMappingVariesByDestIp (line 216) | func (x *ClientConnectivity) GetMappingVariesByDestIp() bool { method GetLatency (line 223) | func (x *ClientConnectivity) GetLatency() map[string]*Latency { method GetClientSupports (line 230) | func (x *ClientConnectivity) GetClientSupports() *ClientSupports { type GetDeviceRequest (line 237) | type GetDeviceRequest struct method Reset (line 244) | func (x *GetDeviceRequest) Reset() { method String (line 251) | func (x *GetDeviceRequest) String() string { method ProtoMessage (line 255) | func (*GetDeviceRequest) ProtoMessage() {} method ProtoReflect (line 257) | func (x *GetDeviceRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 270) | func (*GetDeviceRequest) Descriptor() ([]byte, []int) { method GetId (line 274) | func (x *GetDeviceRequest) GetId() string { type GetDeviceResponse (line 281) | type GetDeviceResponse struct method Reset (line 307) | func (x *GetDeviceResponse) Reset() { method String (line 314) | func (x *GetDeviceResponse) String() string { method ProtoMessage (line 318) | func (*GetDeviceResponse) ProtoMessage() {} method ProtoReflect (line 320) | func (x *GetDeviceResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 333) | func (*GetDeviceResponse) Descriptor() ([]byte, []int) { method GetAddresses (line 337) | func (x *GetDeviceResponse) GetAddresses() []string { method GetId (line 344) | func (x *GetDeviceResponse) GetId() string { method GetUser (line 351) | func (x *GetDeviceResponse) GetUser() string { method GetName (line 358) | func (x *GetDeviceResponse) GetName() string { method GetHostname (line 365) | func (x *GetDeviceResponse) GetHostname() string { method GetClientVersion (line 372) | func (x *GetDeviceResponse) GetClientVersion() string { method GetUpdateAvailable (line 379) | func (x *GetDeviceResponse) GetUpdateAvailable() bool { method GetOs (line 386) | func (x *GetDeviceResponse) GetOs() string { method GetCreated (line 393) | func (x *GetDeviceResponse) GetCreated() *timestamppb.Timestamp { method GetLastSeen (line 400) | func (x *GetDeviceResponse) GetLastSeen() *timestamppb.Timestamp { method GetKeyExpiryDisabled (line 407) | func (x *GetDeviceResponse) GetKeyExpiryDisabled() bool { method GetExpires (line 414) | func (x *GetDeviceResponse) GetExpires() *timestamppb.Timestamp { method GetAuthorized (line 421) | func (x *GetDeviceResponse) GetAuthorized() bool { method GetIsExternal (line 428) | func (x *GetDeviceResponse) GetIsExternal() bool { method GetMachineKey (line 435) | func (x *GetDeviceResponse) GetMachineKey() string { method GetNodeKey (line 442) | func (x *GetDeviceResponse) GetNodeKey() string { method GetBlocksIncomingConnections (line 449) | func (x *GetDeviceResponse) GetBlocksIncomingConnections() bool { method GetEnabledRoutes (line 456) | func (x *GetDeviceResponse) GetEnabledRoutes() []string { method GetAdvertisedRoutes (line 463) | func (x *GetDeviceResponse) GetAdvertisedRoutes() []string { method GetClientConnectivity (line 470) | func (x *GetDeviceResponse) GetClientConnectivity() *ClientConnectivity { type DeleteDeviceRequest (line 477) | type DeleteDeviceRequest struct method Reset (line 484) | func (x *DeleteDeviceRequest) Reset() { method String (line 491) | func (x *DeleteDeviceRequest) String() string { method ProtoMessage (line 495) | func (*DeleteDeviceRequest) ProtoMessage() {} method ProtoReflect (line 497) | func (x *DeleteDeviceRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 510) | func (*DeleteDeviceRequest) Descriptor() ([]byte, []int) { method GetId (line 514) | func (x *DeleteDeviceRequest) GetId() string { type DeleteDeviceResponse (line 521) | type DeleteDeviceResponse struct method Reset (line 527) | func (x *DeleteDeviceResponse) Reset() { method String (line 534) | func (x *DeleteDeviceResponse) String() string { method ProtoMessage (line 538) | func (*DeleteDeviceResponse) ProtoMessage() {} method ProtoReflect (line 540) | func (x *DeleteDeviceResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 553) | func (*DeleteDeviceResponse) Descriptor() ([]byte, []int) { type GetDeviceRoutesRequest (line 557) | type GetDeviceRoutesRequest struct method Reset (line 564) | func (x *GetDeviceRoutesRequest) Reset() { method String (line 571) | func (x *GetDeviceRoutesRequest) String() string { method ProtoMessage (line 575) | func (*GetDeviceRoutesRequest) ProtoMessage() {} method ProtoReflect (line 577) | func (x *GetDeviceRoutesRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 590) | func (*GetDeviceRoutesRequest) Descriptor() ([]byte, []int) { method GetId (line 594) | func (x *GetDeviceRoutesRequest) GetId() string { type GetDeviceRoutesResponse (line 601) | type GetDeviceRoutesResponse struct method Reset (line 609) | func (x *GetDeviceRoutesResponse) Reset() { method String (line 616) | func (x *GetDeviceRoutesResponse) String() string { method ProtoMessage (line 620) | func (*GetDeviceRoutesResponse) ProtoMessage() {} method ProtoReflect (line 622) | func (x *GetDeviceRoutesResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 635) | func (*GetDeviceRoutesResponse) Descriptor() ([]byte, []int) { method GetEnabledRoutes (line 639) | func (x *GetDeviceRoutesResponse) GetEnabledRoutes() []string { method GetAdvertisedRoutes (line 646) | func (x *GetDeviceRoutesResponse) GetAdvertisedRoutes() []string { type EnableDeviceRoutesRequest (line 653) | type EnableDeviceRoutesRequest struct method Reset (line 661) | func (x *EnableDeviceRoutesRequest) Reset() { method String (line 668) | func (x *EnableDeviceRoutesRequest) String() string { method ProtoMessage (line 672) | func (*EnableDeviceRoutesRequest) ProtoMessage() {} method ProtoReflect (line 674) | func (x *EnableDeviceRoutesRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 687) | func (*EnableDeviceRoutesRequest) Descriptor() ([]byte, []int) { method GetId (line 691) | func (x *EnableDeviceRoutesRequest) GetId() string { method GetRoutes (line 698) | func (x *EnableDeviceRoutesRequest) GetRoutes() []string { type EnableDeviceRoutesResponse (line 705) | type EnableDeviceRoutesResponse struct method Reset (line 713) | func (x *EnableDeviceRoutesResponse) Reset() { method String (line 720) | func (x *EnableDeviceRoutesResponse) String() string { method ProtoMessage (line 724) | func (*EnableDeviceRoutesResponse) ProtoMessage() {} method ProtoReflect (line 726) | func (x *EnableDeviceRoutesResponse) ProtoReflect() protoreflect.Messa... method Descriptor (line 739) | func (*EnableDeviceRoutesResponse) Descriptor() ([]byte, []int) { method GetEnabledRoutes (line 743) | func (x *EnableDeviceRoutesResponse) GetEnabledRoutes() []string { method GetAdvertisedRoutes (line 750) | func (x *EnableDeviceRoutesResponse) GetAdvertisedRoutes() []string { constant file_headscale_v1_device_proto_rawDesc (line 759) | file_headscale_v1_device_proto_rawDesc = "" + function file_headscale_v1_device_proto_rawDescGZIP (line 830) | func file_headscale_v1_device_proto_rawDescGZIP() []byte { function init (line 868) | func init() { file_headscale_v1_device_proto_init() } function file_headscale_v1_device_proto_init (line 869) | func file_headscale_v1_device_proto_init() { FILE: gen/go/headscale/v1/headscale.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type HealthRequest (line 25) | type HealthRequest struct method Reset (line 31) | func (x *HealthRequest) Reset() { method String (line 38) | func (x *HealthRequest) String() string { method ProtoMessage (line 42) | func (*HealthRequest) ProtoMessage() {} method ProtoReflect (line 44) | func (x *HealthRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 57) | func (*HealthRequest) Descriptor() ([]byte, []int) { type HealthResponse (line 61) | type HealthResponse struct method Reset (line 68) | func (x *HealthResponse) Reset() { method String (line 75) | func (x *HealthResponse) String() string { method ProtoMessage (line 79) | func (*HealthResponse) ProtoMessage() {} method ProtoReflect (line 81) | func (x *HealthResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 94) | func (*HealthResponse) Descriptor() ([]byte, []int) { method GetDatabaseConnectivity (line 98) | func (x *HealthResponse) GetDatabaseConnectivity() bool { constant file_headscale_v1_headscale_proto_rawDesc (line 107) | file_headscale_v1_headscale_proto_rawDesc = "" + function file_headscale_v1_headscale_proto_rawDescGZIP (line 155) | func file_headscale_v1_headscale_proto_rawDescGZIP() []byte { function init (line 285) | func init() { file_headscale_v1_headscale_proto_init() } function file_headscale_v1_headscale_proto_init (line 286) | func file_headscale_v1_headscale_proto_init() { FILE: gen/go/headscale/v1/headscale.pb.gw.go function request_HeadscaleService_CreateUser_0 (line 38) | func request_HeadscaleService_CreateUser_0(ctx context.Context, marshale... function local_request_HeadscaleService_CreateUser_0 (line 53) | func local_request_HeadscaleService_CreateUser_0(ctx context.Context, ma... function request_HeadscaleService_RenameUser_0 (line 65) | func request_HeadscaleService_RenameUser_0(ctx context.Context, marshale... function local_request_HeadscaleService_RenameUser_0 (line 94) | func local_request_HeadscaleService_RenameUser_0(ctx context.Context, ma... function request_HeadscaleService_DeleteUser_0 (line 120) | func request_HeadscaleService_DeleteUser_0(ctx context.Context, marshale... function local_request_HeadscaleService_DeleteUser_0 (line 141) | func local_request_HeadscaleService_DeleteUser_0(ctx context.Context, ma... function request_HeadscaleService_ListUsers_0 (line 161) | func request_HeadscaleService_ListUsers_0(ctx context.Context, marshaler... function local_request_HeadscaleService_ListUsers_0 (line 179) | func local_request_HeadscaleService_ListUsers_0(ctx context.Context, mar... function request_HeadscaleService_CreatePreAuthKey_0 (line 194) | func request_HeadscaleService_CreatePreAuthKey_0(ctx context.Context, ma... function local_request_HeadscaleService_CreatePreAuthKey_0 (line 209) | func local_request_HeadscaleService_CreatePreAuthKey_0(ctx context.Conte... function request_HeadscaleService_ExpirePreAuthKey_0 (line 221) | func request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Context, ma... function local_request_HeadscaleService_ExpirePreAuthKey_0 (line 236) | func local_request_HeadscaleService_ExpirePreAuthKey_0(ctx context.Conte... function request_HeadscaleService_DeletePreAuthKey_0 (line 250) | func request_HeadscaleService_DeletePreAuthKey_0(ctx context.Context, ma... function local_request_HeadscaleService_DeletePreAuthKey_0 (line 268) | func local_request_HeadscaleService_DeletePreAuthKey_0(ctx context.Conte... function request_HeadscaleService_ListPreAuthKeys_0 (line 283) | func request_HeadscaleService_ListPreAuthKeys_0(ctx context.Context, mar... function local_request_HeadscaleService_ListPreAuthKeys_0 (line 295) | func local_request_HeadscaleService_ListPreAuthKeys_0(ctx context.Contex... function request_HeadscaleService_DebugCreateNode_0 (line 304) | func request_HeadscaleService_DebugCreateNode_0(ctx context.Context, mar... function local_request_HeadscaleService_DebugCreateNode_0 (line 319) | func local_request_HeadscaleService_DebugCreateNode_0(ctx context.Contex... function request_HeadscaleService_GetNode_0 (line 331) | func request_HeadscaleService_GetNode_0(ctx context.Context, marshaler r... function local_request_HeadscaleService_GetNode_0 (line 352) | func local_request_HeadscaleService_GetNode_0(ctx context.Context, marsh... function request_HeadscaleService_SetTags_0 (line 370) | func request_HeadscaleService_SetTags_0(ctx context.Context, marshaler r... function local_request_HeadscaleService_SetTags_0 (line 394) | func local_request_HeadscaleService_SetTags_0(ctx context.Context, marsh... function request_HeadscaleService_SetApprovedRoutes_0 (line 415) | func request_HeadscaleService_SetApprovedRoutes_0(ctx context.Context, m... function local_request_HeadscaleService_SetApprovedRoutes_0 (line 439) | func local_request_HeadscaleService_SetApprovedRoutes_0(ctx context.Cont... function request_HeadscaleService_RegisterNode_0 (line 462) | func request_HeadscaleService_RegisterNode_0(ctx context.Context, marsha... function local_request_HeadscaleService_RegisterNode_0 (line 480) | func local_request_HeadscaleService_RegisterNode_0(ctx context.Context, ... function request_HeadscaleService_DeleteNode_0 (line 495) | func request_HeadscaleService_DeleteNode_0(ctx context.Context, marshale... function local_request_HeadscaleService_DeleteNode_0 (line 516) | func local_request_HeadscaleService_DeleteNode_0(ctx context.Context, ma... function request_HeadscaleService_ExpireNode_0 (line 536) | func request_HeadscaleService_ExpireNode_0(ctx context.Context, marshale... function local_request_HeadscaleService_ExpireNode_0 (line 563) | func local_request_HeadscaleService_ExpireNode_0(ctx context.Context, ma... function request_HeadscaleService_RenameNode_0 (line 587) | func request_HeadscaleService_RenameNode_0(ctx context.Context, marshale... function local_request_HeadscaleService_RenameNode_0 (line 616) | func local_request_HeadscaleService_RenameNode_0(ctx context.Context, ma... function request_HeadscaleService_ListNodes_0 (line 644) | func request_HeadscaleService_ListNodes_0(ctx context.Context, marshaler... function local_request_HeadscaleService_ListNodes_0 (line 662) | func local_request_HeadscaleService_ListNodes_0(ctx context.Context, mar... function request_HeadscaleService_BackfillNodeIPs_0 (line 679) | func request_HeadscaleService_BackfillNodeIPs_0(ctx context.Context, mar... function local_request_HeadscaleService_BackfillNodeIPs_0 (line 697) | func local_request_HeadscaleService_BackfillNodeIPs_0(ctx context.Contex... function request_HeadscaleService_AuthRegister_0 (line 712) | func request_HeadscaleService_AuthRegister_0(ctx context.Context, marsha... function local_request_HeadscaleService_AuthRegister_0 (line 727) | func local_request_HeadscaleService_AuthRegister_0(ctx context.Context, ... function request_HeadscaleService_AuthApprove_0 (line 739) | func request_HeadscaleService_AuthApprove_0(ctx context.Context, marshal... function local_request_HeadscaleService_AuthApprove_0 (line 754) | func local_request_HeadscaleService_AuthApprove_0(ctx context.Context, m... function request_HeadscaleService_AuthReject_0 (line 766) | func request_HeadscaleService_AuthReject_0(ctx context.Context, marshale... function local_request_HeadscaleService_AuthReject_0 (line 781) | func local_request_HeadscaleService_AuthReject_0(ctx context.Context, ma... function request_HeadscaleService_CreateApiKey_0 (line 793) | func request_HeadscaleService_CreateApiKey_0(ctx context.Context, marsha... function local_request_HeadscaleService_CreateApiKey_0 (line 808) | func local_request_HeadscaleService_CreateApiKey_0(ctx context.Context, ... function request_HeadscaleService_ExpireApiKey_0 (line 820) | func request_HeadscaleService_ExpireApiKey_0(ctx context.Context, marsha... function local_request_HeadscaleService_ExpireApiKey_0 (line 835) | func local_request_HeadscaleService_ExpireApiKey_0(ctx context.Context, ... function request_HeadscaleService_ListApiKeys_0 (line 847) | func request_HeadscaleService_ListApiKeys_0(ctx context.Context, marshal... function local_request_HeadscaleService_ListApiKeys_0 (line 859) | func local_request_HeadscaleService_ListApiKeys_0(ctx context.Context, m... function request_HeadscaleService_DeleteApiKey_0 (line 870) | func request_HeadscaleService_DeleteApiKey_0(ctx context.Context, marsha... function local_request_HeadscaleService_DeleteApiKey_0 (line 897) | func local_request_HeadscaleService_DeleteApiKey_0(ctx context.Context, ... function request_HeadscaleService_GetPolicy_0 (line 921) | func request_HeadscaleService_GetPolicy_0(ctx context.Context, marshaler... function local_request_HeadscaleService_GetPolicy_0 (line 933) | func local_request_HeadscaleService_GetPolicy_0(ctx context.Context, mar... function request_HeadscaleService_SetPolicy_0 (line 942) | func request_HeadscaleService_SetPolicy_0(ctx context.Context, marshaler... function local_request_HeadscaleService_SetPolicy_0 (line 957) | func local_request_HeadscaleService_SetPolicy_0(ctx context.Context, mar... function request_HeadscaleService_Health_0 (line 969) | func request_HeadscaleService_Health_0(ctx context.Context, marshaler ru... function local_request_HeadscaleService_Health_0 (line 981) | func local_request_HeadscaleService_Health_0(ctx context.Context, marsha... function RegisterHeadscaleServiceHandlerServer (line 995) | func RegisterHeadscaleServiceHandlerServer(ctx context.Context, mux *run... function RegisterHeadscaleServiceHandlerFromEndpoint (line 1562) | func RegisterHeadscaleServiceHandlerFromEndpoint(ctx context.Context, mu... function RegisterHeadscaleServiceHandler (line 1586) | func RegisterHeadscaleServiceHandler(ctx context.Context, mux *runtime.S... function RegisterHeadscaleServiceHandlerClient (line 1595) | func RegisterHeadscaleServiceHandlerClient(ctx context.Context, mux *run... FILE: gen/go/headscale/v1/headscale_grpc.pb.go constant _ (line 19) | _ = grpc.SupportPackageIsVersion9 constant HeadscaleService_CreateUser_FullMethodName (line 22) | HeadscaleService_CreateUser_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_RenameUser_FullMethodName (line 23) | HeadscaleService_RenameUser_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_DeleteUser_FullMethodName (line 24) | HeadscaleService_DeleteUser_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ListUsers_FullMethodName (line 25) | HeadscaleService_ListUsers_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_CreatePreAuthKey_FullMethodName (line 26) | HeadscaleService_CreatePreAuthKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ExpirePreAuthKey_FullMethodName (line 27) | HeadscaleService_ExpirePreAuthKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_DeletePreAuthKey_FullMethodName (line 28) | HeadscaleService_DeletePreAuthKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ListPreAuthKeys_FullMethodName (line 29) | HeadscaleService_ListPreAuthKeys_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_DebugCreateNode_FullMethodName (line 30) | HeadscaleService_DebugCreateNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_GetNode_FullMethodName (line 31) | HeadscaleService_GetNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_SetTags_FullMethodName (line 32) | HeadscaleService_SetTags_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_SetApprovedRoutes_FullMethodName (line 33) | HeadscaleService_SetApprovedRoutes_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_RegisterNode_FullMethodName (line 34) | HeadscaleService_RegisterNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_DeleteNode_FullMethodName (line 35) | HeadscaleService_DeleteNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ExpireNode_FullMethodName (line 36) | HeadscaleService_ExpireNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_RenameNode_FullMethodName (line 37) | HeadscaleService_RenameNode_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ListNodes_FullMethodName (line 38) | HeadscaleService_ListNodes_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_BackfillNodeIPs_FullMethodName (line 39) | HeadscaleService_BackfillNodeIPs_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_AuthRegister_FullMethodName (line 40) | HeadscaleService_AuthRegister_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_AuthApprove_FullMethodName (line 41) | HeadscaleService_AuthApprove_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_AuthReject_FullMethodName (line 42) | HeadscaleService_AuthReject_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_CreateApiKey_FullMethodName (line 43) | HeadscaleService_CreateApiKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ExpireApiKey_FullMethodName (line 44) | HeadscaleService_ExpireApiKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_ListApiKeys_FullMethodName (line 45) | HeadscaleService_ListApiKeys_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_DeleteApiKey_FullMethodName (line 46) | HeadscaleService_DeleteApiKey_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_GetPolicy_FullMethodName (line 47) | HeadscaleService_GetPolicy_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_SetPolicy_FullMethodName (line 48) | HeadscaleService_SetPolicy_FullMethodName = "/headscale.v1.Heads... constant HeadscaleService_Health_FullMethodName (line 49) | HeadscaleService_Health_FullMethodName = "/headscale.v1.Heads... type HeadscaleServiceClient (line 55) | type HeadscaleServiceClient interface type headscaleServiceClient (line 93) | type headscaleServiceClient struct method CreateUser (line 101) | func (c *headscaleServiceClient) CreateUser(ctx context.Context, in *C... method RenameUser (line 111) | func (c *headscaleServiceClient) RenameUser(ctx context.Context, in *R... method DeleteUser (line 121) | func (c *headscaleServiceClient) DeleteUser(ctx context.Context, in *D... method ListUsers (line 131) | func (c *headscaleServiceClient) ListUsers(ctx context.Context, in *Li... method CreatePreAuthKey (line 141) | func (c *headscaleServiceClient) CreatePreAuthKey(ctx context.Context,... method ExpirePreAuthKey (line 151) | func (c *headscaleServiceClient) ExpirePreAuthKey(ctx context.Context,... method DeletePreAuthKey (line 161) | func (c *headscaleServiceClient) DeletePreAuthKey(ctx context.Context,... method ListPreAuthKeys (line 171) | func (c *headscaleServiceClient) ListPreAuthKeys(ctx context.Context, ... method DebugCreateNode (line 181) | func (c *headscaleServiceClient) DebugCreateNode(ctx context.Context, ... method GetNode (line 191) | func (c *headscaleServiceClient) GetNode(ctx context.Context, in *GetN... method SetTags (line 201) | func (c *headscaleServiceClient) SetTags(ctx context.Context, in *SetT... method SetApprovedRoutes (line 211) | func (c *headscaleServiceClient) SetApprovedRoutes(ctx context.Context... method RegisterNode (line 221) | func (c *headscaleServiceClient) RegisterNode(ctx context.Context, in ... method DeleteNode (line 231) | func (c *headscaleServiceClient) DeleteNode(ctx context.Context, in *D... method ExpireNode (line 241) | func (c *headscaleServiceClient) ExpireNode(ctx context.Context, in *E... method RenameNode (line 251) | func (c *headscaleServiceClient) RenameNode(ctx context.Context, in *R... method ListNodes (line 261) | func (c *headscaleServiceClient) ListNodes(ctx context.Context, in *Li... method BackfillNodeIPs (line 271) | func (c *headscaleServiceClient) BackfillNodeIPs(ctx context.Context, ... method AuthRegister (line 281) | func (c *headscaleServiceClient) AuthRegister(ctx context.Context, in ... method AuthApprove (line 291) | func (c *headscaleServiceClient) AuthApprove(ctx context.Context, in *... method AuthReject (line 301) | func (c *headscaleServiceClient) AuthReject(ctx context.Context, in *A... method CreateApiKey (line 311) | func (c *headscaleServiceClient) CreateApiKey(ctx context.Context, in ... method ExpireApiKey (line 321) | func (c *headscaleServiceClient) ExpireApiKey(ctx context.Context, in ... method ListApiKeys (line 331) | func (c *headscaleServiceClient) ListApiKeys(ctx context.Context, in *... method DeleteApiKey (line 341) | func (c *headscaleServiceClient) DeleteApiKey(ctx context.Context, in ... method GetPolicy (line 351) | func (c *headscaleServiceClient) GetPolicy(ctx context.Context, in *Ge... method SetPolicy (line 361) | func (c *headscaleServiceClient) SetPolicy(ctx context.Context, in *Se... method Health (line 371) | func (c *headscaleServiceClient) Health(ctx context.Context, in *Healt... function NewHeadscaleServiceClient (line 97) | func NewHeadscaleServiceClient(cc grpc.ClientConnInterface) HeadscaleSer... type HeadscaleServiceServer (line 384) | type HeadscaleServiceServer interface type UnimplementedHeadscaleServiceServer (line 428) | type UnimplementedHeadscaleServiceServer struct method CreateUser (line 430) | func (UnimplementedHeadscaleServiceServer) CreateUser(context.Context,... method RenameUser (line 433) | func (UnimplementedHeadscaleServiceServer) RenameUser(context.Context,... method DeleteUser (line 436) | func (UnimplementedHeadscaleServiceServer) DeleteUser(context.Context,... method ListUsers (line 439) | func (UnimplementedHeadscaleServiceServer) ListUsers(context.Context, ... method CreatePreAuthKey (line 442) | func (UnimplementedHeadscaleServiceServer) CreatePreAuthKey(context.Co... method ExpirePreAuthKey (line 445) | func (UnimplementedHeadscaleServiceServer) ExpirePreAuthKey(context.Co... method DeletePreAuthKey (line 448) | func (UnimplementedHeadscaleServiceServer) DeletePreAuthKey(context.Co... method ListPreAuthKeys (line 451) | func (UnimplementedHeadscaleServiceServer) ListPreAuthKeys(context.Con... method DebugCreateNode (line 454) | func (UnimplementedHeadscaleServiceServer) DebugCreateNode(context.Con... method GetNode (line 457) | func (UnimplementedHeadscaleServiceServer) GetNode(context.Context, *G... method SetTags (line 460) | func (UnimplementedHeadscaleServiceServer) SetTags(context.Context, *S... method SetApprovedRoutes (line 463) | func (UnimplementedHeadscaleServiceServer) SetApprovedRoutes(context.C... method RegisterNode (line 466) | func (UnimplementedHeadscaleServiceServer) RegisterNode(context.Contex... method DeleteNode (line 469) | func (UnimplementedHeadscaleServiceServer) DeleteNode(context.Context,... method ExpireNode (line 472) | func (UnimplementedHeadscaleServiceServer) ExpireNode(context.Context,... method RenameNode (line 475) | func (UnimplementedHeadscaleServiceServer) RenameNode(context.Context,... method ListNodes (line 478) | func (UnimplementedHeadscaleServiceServer) ListNodes(context.Context, ... method BackfillNodeIPs (line 481) | func (UnimplementedHeadscaleServiceServer) BackfillNodeIPs(context.Con... method AuthRegister (line 484) | func (UnimplementedHeadscaleServiceServer) AuthRegister(context.Contex... method AuthApprove (line 487) | func (UnimplementedHeadscaleServiceServer) AuthApprove(context.Context... method AuthReject (line 490) | func (UnimplementedHeadscaleServiceServer) AuthReject(context.Context,... method CreateApiKey (line 493) | func (UnimplementedHeadscaleServiceServer) CreateApiKey(context.Contex... method ExpireApiKey (line 496) | func (UnimplementedHeadscaleServiceServer) ExpireApiKey(context.Contex... method ListApiKeys (line 499) | func (UnimplementedHeadscaleServiceServer) ListApiKeys(context.Context... method DeleteApiKey (line 502) | func (UnimplementedHeadscaleServiceServer) DeleteApiKey(context.Contex... method GetPolicy (line 505) | func (UnimplementedHeadscaleServiceServer) GetPolicy(context.Context, ... method SetPolicy (line 508) | func (UnimplementedHeadscaleServiceServer) SetPolicy(context.Context, ... method Health (line 511) | func (UnimplementedHeadscaleServiceServer) Health(context.Context, *He... method mustEmbedUnimplementedHeadscaleServiceServer (line 514) | func (UnimplementedHeadscaleServiceServer) mustEmbedUnimplementedHeads... method testEmbeddedByValue (line 515) | func (UnimplementedHeadscaleServiceServer) testEmbeddedByValue() ... type UnsafeHeadscaleServiceServer (line 520) | type UnsafeHeadscaleServiceServer interface function RegisterHeadscaleServiceServer (line 524) | func RegisterHeadscaleServiceServer(s grpc.ServiceRegistrar, srv Headsca... function _HeadscaleService_CreateUser_Handler (line 535) | func _HeadscaleService_CreateUser_Handler(srv interface{}, ctx context.C... function _HeadscaleService_RenameUser_Handler (line 553) | func _HeadscaleService_RenameUser_Handler(srv interface{}, ctx context.C... function _HeadscaleService_DeleteUser_Handler (line 571) | func _HeadscaleService_DeleteUser_Handler(srv interface{}, ctx context.C... function _HeadscaleService_ListUsers_Handler (line 589) | func _HeadscaleService_ListUsers_Handler(srv interface{}, ctx context.Co... function _HeadscaleService_CreatePreAuthKey_Handler (line 607) | func _HeadscaleService_CreatePreAuthKey_Handler(srv interface{}, ctx con... function _HeadscaleService_ExpirePreAuthKey_Handler (line 625) | func _HeadscaleService_ExpirePreAuthKey_Handler(srv interface{}, ctx con... function _HeadscaleService_DeletePreAuthKey_Handler (line 643) | func _HeadscaleService_DeletePreAuthKey_Handler(srv interface{}, ctx con... function _HeadscaleService_ListPreAuthKeys_Handler (line 661) | func _HeadscaleService_ListPreAuthKeys_Handler(srv interface{}, ctx cont... function _HeadscaleService_DebugCreateNode_Handler (line 679) | func _HeadscaleService_DebugCreateNode_Handler(srv interface{}, ctx cont... function _HeadscaleService_GetNode_Handler (line 697) | func _HeadscaleService_GetNode_Handler(srv interface{}, ctx context.Cont... function _HeadscaleService_SetTags_Handler (line 715) | func _HeadscaleService_SetTags_Handler(srv interface{}, ctx context.Cont... function _HeadscaleService_SetApprovedRoutes_Handler (line 733) | func _HeadscaleService_SetApprovedRoutes_Handler(srv interface{}, ctx co... function _HeadscaleService_RegisterNode_Handler (line 751) | func _HeadscaleService_RegisterNode_Handler(srv interface{}, ctx context... function _HeadscaleService_DeleteNode_Handler (line 769) | func _HeadscaleService_DeleteNode_Handler(srv interface{}, ctx context.C... function _HeadscaleService_ExpireNode_Handler (line 787) | func _HeadscaleService_ExpireNode_Handler(srv interface{}, ctx context.C... function _HeadscaleService_RenameNode_Handler (line 805) | func _HeadscaleService_RenameNode_Handler(srv interface{}, ctx context.C... function _HeadscaleService_ListNodes_Handler (line 823) | func _HeadscaleService_ListNodes_Handler(srv interface{}, ctx context.Co... function _HeadscaleService_BackfillNodeIPs_Handler (line 841) | func _HeadscaleService_BackfillNodeIPs_Handler(srv interface{}, ctx cont... function _HeadscaleService_AuthRegister_Handler (line 859) | func _HeadscaleService_AuthRegister_Handler(srv interface{}, ctx context... function _HeadscaleService_AuthApprove_Handler (line 877) | func _HeadscaleService_AuthApprove_Handler(srv interface{}, ctx context.... function _HeadscaleService_AuthReject_Handler (line 895) | func _HeadscaleService_AuthReject_Handler(srv interface{}, ctx context.C... function _HeadscaleService_CreateApiKey_Handler (line 913) | func _HeadscaleService_CreateApiKey_Handler(srv interface{}, ctx context... function _HeadscaleService_ExpireApiKey_Handler (line 931) | func _HeadscaleService_ExpireApiKey_Handler(srv interface{}, ctx context... function _HeadscaleService_ListApiKeys_Handler (line 949) | func _HeadscaleService_ListApiKeys_Handler(srv interface{}, ctx context.... function _HeadscaleService_DeleteApiKey_Handler (line 967) | func _HeadscaleService_DeleteApiKey_Handler(srv interface{}, ctx context... function _HeadscaleService_GetPolicy_Handler (line 985) | func _HeadscaleService_GetPolicy_Handler(srv interface{}, ctx context.Co... function _HeadscaleService_SetPolicy_Handler (line 1003) | func _HeadscaleService_SetPolicy_Handler(srv interface{}, ctx context.Co... function _HeadscaleService_Health_Handler (line 1021) | func _HeadscaleService_Health_Handler(srv interface{}, ctx context.Conte... FILE: gen/go/headscale/v1/node.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type RegisterMethod (line 25) | type RegisterMethod method Enum (line 50) | func (x RegisterMethod) Enum() *RegisterMethod { method String (line 56) | func (x RegisterMethod) String() string { method Descriptor (line 60) | func (RegisterMethod) Descriptor() protoreflect.EnumDescriptor { method Type (line 64) | func (RegisterMethod) Type() protoreflect.EnumType { method Number (line 68) | func (x RegisterMethod) Number() protoreflect.EnumNumber { method EnumDescriptor (line 73) | func (RegisterMethod) EnumDescriptor() ([]byte, []int) { constant RegisterMethod_REGISTER_METHOD_UNSPECIFIED (line 28) | RegisterMethod_REGISTER_METHOD_UNSPECIFIED RegisterMethod = 0 constant RegisterMethod_REGISTER_METHOD_AUTH_KEY (line 29) | RegisterMethod_REGISTER_METHOD_AUTH_KEY RegisterMethod = 1 constant RegisterMethod_REGISTER_METHOD_CLI (line 30) | RegisterMethod_REGISTER_METHOD_CLI RegisterMethod = 2 constant RegisterMethod_REGISTER_METHOD_OIDC (line 31) | RegisterMethod_REGISTER_METHOD_OIDC RegisterMethod = 3 type Node (line 77) | type Node struct method Reset (line 105) | func (x *Node) Reset() { method String (line 112) | func (x *Node) String() string { method ProtoMessage (line 116) | func (*Node) ProtoMessage() {} method ProtoReflect (line 118) | func (x *Node) ProtoReflect() protoreflect.Message { method Descriptor (line 131) | func (*Node) Descriptor() ([]byte, []int) { method GetId (line 135) | func (x *Node) GetId() uint64 { method GetMachineKey (line 142) | func (x *Node) GetMachineKey() string { method GetNodeKey (line 149) | func (x *Node) GetNodeKey() string { method GetDiscoKey (line 156) | func (x *Node) GetDiscoKey() string { method GetIpAddresses (line 163) | func (x *Node) GetIpAddresses() []string { method GetName (line 170) | func (x *Node) GetName() string { method GetUser (line 177) | func (x *Node) GetUser() *User { method GetLastSeen (line 184) | func (x *Node) GetLastSeen() *timestamppb.Timestamp { method GetExpiry (line 191) | func (x *Node) GetExpiry() *timestamppb.Timestamp { method GetPreAuthKey (line 198) | func (x *Node) GetPreAuthKey() *PreAuthKey { method GetCreatedAt (line 205) | func (x *Node) GetCreatedAt() *timestamppb.Timestamp { method GetRegisterMethod (line 212) | func (x *Node) GetRegisterMethod() RegisterMethod { method GetGivenName (line 219) | func (x *Node) GetGivenName() string { method GetOnline (line 226) | func (x *Node) GetOnline() bool { method GetApprovedRoutes (line 233) | func (x *Node) GetApprovedRoutes() []string { method GetAvailableRoutes (line 240) | func (x *Node) GetAvailableRoutes() []string { method GetSubnetRoutes (line 247) | func (x *Node) GetSubnetRoutes() []string { method GetTags (line 254) | func (x *Node) GetTags() []string { type RegisterNodeRequest (line 261) | type RegisterNodeRequest struct method Reset (line 269) | func (x *RegisterNodeRequest) Reset() { method String (line 276) | func (x *RegisterNodeRequest) String() string { method ProtoMessage (line 280) | func (*RegisterNodeRequest) ProtoMessage() {} method ProtoReflect (line 282) | func (x *RegisterNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 295) | func (*RegisterNodeRequest) Descriptor() ([]byte, []int) { method GetUser (line 299) | func (x *RegisterNodeRequest) GetUser() string { method GetKey (line 306) | func (x *RegisterNodeRequest) GetKey() string { type RegisterNodeResponse (line 313) | type RegisterNodeResponse struct method Reset (line 320) | func (x *RegisterNodeResponse) Reset() { method String (line 327) | func (x *RegisterNodeResponse) String() string { method ProtoMessage (line 331) | func (*RegisterNodeResponse) ProtoMessage() {} method ProtoReflect (line 333) | func (x *RegisterNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 346) | func (*RegisterNodeResponse) Descriptor() ([]byte, []int) { method GetNode (line 350) | func (x *RegisterNodeResponse) GetNode() *Node { type GetNodeRequest (line 357) | type GetNodeRequest struct method Reset (line 364) | func (x *GetNodeRequest) Reset() { method String (line 371) | func (x *GetNodeRequest) String() string { method ProtoMessage (line 375) | func (*GetNodeRequest) ProtoMessage() {} method ProtoReflect (line 377) | func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 390) | func (*GetNodeRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 394) | func (x *GetNodeRequest) GetNodeId() uint64 { type GetNodeResponse (line 401) | type GetNodeResponse struct method Reset (line 408) | func (x *GetNodeResponse) Reset() { method String (line 415) | func (x *GetNodeResponse) String() string { method ProtoMessage (line 419) | func (*GetNodeResponse) ProtoMessage() {} method ProtoReflect (line 421) | func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 434) | func (*GetNodeResponse) Descriptor() ([]byte, []int) { method GetNode (line 438) | func (x *GetNodeResponse) GetNode() *Node { type SetTagsRequest (line 445) | type SetTagsRequest struct method Reset (line 453) | func (x *SetTagsRequest) Reset() { method String (line 460) | func (x *SetTagsRequest) String() string { method ProtoMessage (line 464) | func (*SetTagsRequest) ProtoMessage() {} method ProtoReflect (line 466) | func (x *SetTagsRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 479) | func (*SetTagsRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 483) | func (x *SetTagsRequest) GetNodeId() uint64 { method GetTags (line 490) | func (x *SetTagsRequest) GetTags() []string { type SetTagsResponse (line 497) | type SetTagsResponse struct method Reset (line 504) | func (x *SetTagsResponse) Reset() { method String (line 511) | func (x *SetTagsResponse) String() string { method ProtoMessage (line 515) | func (*SetTagsResponse) ProtoMessage() {} method ProtoReflect (line 517) | func (x *SetTagsResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 530) | func (*SetTagsResponse) Descriptor() ([]byte, []int) { method GetNode (line 534) | func (x *SetTagsResponse) GetNode() *Node { type SetApprovedRoutesRequest (line 541) | type SetApprovedRoutesRequest struct method Reset (line 549) | func (x *SetApprovedRoutesRequest) Reset() { method String (line 556) | func (x *SetApprovedRoutesRequest) String() string { method ProtoMessage (line 560) | func (*SetApprovedRoutesRequest) ProtoMessage() {} method ProtoReflect (line 562) | func (x *SetApprovedRoutesRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 575) | func (*SetApprovedRoutesRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 579) | func (x *SetApprovedRoutesRequest) GetNodeId() uint64 { method GetRoutes (line 586) | func (x *SetApprovedRoutesRequest) GetRoutes() []string { type SetApprovedRoutesResponse (line 593) | type SetApprovedRoutesResponse struct method Reset (line 600) | func (x *SetApprovedRoutesResponse) Reset() { method String (line 607) | func (x *SetApprovedRoutesResponse) String() string { method ProtoMessage (line 611) | func (*SetApprovedRoutesResponse) ProtoMessage() {} method ProtoReflect (line 613) | func (x *SetApprovedRoutesResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 626) | func (*SetApprovedRoutesResponse) Descriptor() ([]byte, []int) { method GetNode (line 630) | func (x *SetApprovedRoutesResponse) GetNode() *Node { type DeleteNodeRequest (line 637) | type DeleteNodeRequest struct method Reset (line 644) | func (x *DeleteNodeRequest) Reset() { method String (line 651) | func (x *DeleteNodeRequest) String() string { method ProtoMessage (line 655) | func (*DeleteNodeRequest) ProtoMessage() {} method ProtoReflect (line 657) | func (x *DeleteNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 670) | func (*DeleteNodeRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 674) | func (x *DeleteNodeRequest) GetNodeId() uint64 { type DeleteNodeResponse (line 681) | type DeleteNodeResponse struct method Reset (line 687) | func (x *DeleteNodeResponse) Reset() { method String (line 694) | func (x *DeleteNodeResponse) String() string { method ProtoMessage (line 698) | func (*DeleteNodeResponse) ProtoMessage() {} method ProtoReflect (line 700) | func (x *DeleteNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 713) | func (*DeleteNodeResponse) Descriptor() ([]byte, []int) { type ExpireNodeRequest (line 717) | type ExpireNodeRequest struct method Reset (line 727) | func (x *ExpireNodeRequest) Reset() { method String (line 734) | func (x *ExpireNodeRequest) String() string { method ProtoMessage (line 738) | func (*ExpireNodeRequest) ProtoMessage() {} method ProtoReflect (line 740) | func (x *ExpireNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 753) | func (*ExpireNodeRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 757) | func (x *ExpireNodeRequest) GetNodeId() uint64 { method GetExpiry (line 764) | func (x *ExpireNodeRequest) GetExpiry() *timestamppb.Timestamp { method GetDisableExpiry (line 771) | func (x *ExpireNodeRequest) GetDisableExpiry() bool { type ExpireNodeResponse (line 778) | type ExpireNodeResponse struct method Reset (line 785) | func (x *ExpireNodeResponse) Reset() { method String (line 792) | func (x *ExpireNodeResponse) String() string { method ProtoMessage (line 796) | func (*ExpireNodeResponse) ProtoMessage() {} method ProtoReflect (line 798) | func (x *ExpireNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 811) | func (*ExpireNodeResponse) Descriptor() ([]byte, []int) { method GetNode (line 815) | func (x *ExpireNodeResponse) GetNode() *Node { type RenameNodeRequest (line 822) | type RenameNodeRequest struct method Reset (line 830) | func (x *RenameNodeRequest) Reset() { method String (line 837) | func (x *RenameNodeRequest) String() string { method ProtoMessage (line 841) | func (*RenameNodeRequest) ProtoMessage() {} method ProtoReflect (line 843) | func (x *RenameNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 856) | func (*RenameNodeRequest) Descriptor() ([]byte, []int) { method GetNodeId (line 860) | func (x *RenameNodeRequest) GetNodeId() uint64 { method GetNewName (line 867) | func (x *RenameNodeRequest) GetNewName() string { type RenameNodeResponse (line 874) | type RenameNodeResponse struct method Reset (line 881) | func (x *RenameNodeResponse) Reset() { method String (line 888) | func (x *RenameNodeResponse) String() string { method ProtoMessage (line 892) | func (*RenameNodeResponse) ProtoMessage() {} method ProtoReflect (line 894) | func (x *RenameNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 907) | func (*RenameNodeResponse) Descriptor() ([]byte, []int) { method GetNode (line 911) | func (x *RenameNodeResponse) GetNode() *Node { type ListNodesRequest (line 918) | type ListNodesRequest struct method Reset (line 925) | func (x *ListNodesRequest) Reset() { method String (line 932) | func (x *ListNodesRequest) String() string { method ProtoMessage (line 936) | func (*ListNodesRequest) ProtoMessage() {} method ProtoReflect (line 938) | func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 951) | func (*ListNodesRequest) Descriptor() ([]byte, []int) { method GetUser (line 955) | func (x *ListNodesRequest) GetUser() string { type ListNodesResponse (line 962) | type ListNodesResponse struct method Reset (line 969) | func (x *ListNodesResponse) Reset() { method String (line 976) | func (x *ListNodesResponse) String() string { method ProtoMessage (line 980) | func (*ListNodesResponse) ProtoMessage() {} method ProtoReflect (line 982) | func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 995) | func (*ListNodesResponse) Descriptor() ([]byte, []int) { method GetNodes (line 999) | func (x *ListNodesResponse) GetNodes() []*Node { type DebugCreateNodeRequest (line 1006) | type DebugCreateNodeRequest struct method Reset (line 1016) | func (x *DebugCreateNodeRequest) Reset() { method String (line 1023) | func (x *DebugCreateNodeRequest) String() string { method ProtoMessage (line 1027) | func (*DebugCreateNodeRequest) ProtoMessage() {} method ProtoReflect (line 1029) | func (x *DebugCreateNodeRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 1042) | func (*DebugCreateNodeRequest) Descriptor() ([]byte, []int) { method GetUser (line 1046) | func (x *DebugCreateNodeRequest) GetUser() string { method GetKey (line 1053) | func (x *DebugCreateNodeRequest) GetKey() string { method GetName (line 1060) | func (x *DebugCreateNodeRequest) GetName() string { method GetRoutes (line 1067) | func (x *DebugCreateNodeRequest) GetRoutes() []string { type DebugCreateNodeResponse (line 1074) | type DebugCreateNodeResponse struct method Reset (line 1081) | func (x *DebugCreateNodeResponse) Reset() { method String (line 1088) | func (x *DebugCreateNodeResponse) String() string { method ProtoMessage (line 1092) | func (*DebugCreateNodeResponse) ProtoMessage() {} method ProtoReflect (line 1094) | func (x *DebugCreateNodeResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 1107) | func (*DebugCreateNodeResponse) Descriptor() ([]byte, []int) { method GetNode (line 1111) | func (x *DebugCreateNodeResponse) GetNode() *Node { type BackfillNodeIPsRequest (line 1118) | type BackfillNodeIPsRequest struct method Reset (line 1125) | func (x *BackfillNodeIPsRequest) Reset() { method String (line 1132) | func (x *BackfillNodeIPsRequest) String() string { method ProtoMessage (line 1136) | func (*BackfillNodeIPsRequest) ProtoMessage() {} method ProtoReflect (line 1138) | func (x *BackfillNodeIPsRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 1151) | func (*BackfillNodeIPsRequest) Descriptor() ([]byte, []int) { method GetConfirmed (line 1155) | func (x *BackfillNodeIPsRequest) GetConfirmed() bool { type BackfillNodeIPsResponse (line 1162) | type BackfillNodeIPsResponse struct method Reset (line 1169) | func (x *BackfillNodeIPsResponse) Reset() { method String (line 1176) | func (x *BackfillNodeIPsResponse) String() string { method ProtoMessage (line 1180) | func (*BackfillNodeIPsResponse) ProtoMessage() {} method ProtoReflect (line 1182) | func (x *BackfillNodeIPsResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 1195) | func (*BackfillNodeIPsResponse) Descriptor() ([]byte, []int) { method GetChanges (line 1199) | func (x *BackfillNodeIPsResponse) GetChanges() []string { constant file_headscale_v1_node_proto_rawDesc (line 1208) | file_headscale_v1_node_proto_rawDesc = "" + function file_headscale_v1_node_proto_rawDescGZIP (line 1295) | func file_headscale_v1_node_proto_rawDescGZIP() []byte { function init (line 1354) | func init() { file_headscale_v1_node_proto_init() } function file_headscale_v1_node_proto_init (line 1355) | func file_headscale_v1_node_proto_init() { FILE: gen/go/headscale/v1/policy.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type SetPolicyRequest (line 25) | type SetPolicyRequest struct method Reset (line 32) | func (x *SetPolicyRequest) Reset() { method String (line 39) | func (x *SetPolicyRequest) String() string { method ProtoMessage (line 43) | func (*SetPolicyRequest) ProtoMessage() {} method ProtoReflect (line 45) | func (x *SetPolicyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 58) | func (*SetPolicyRequest) Descriptor() ([]byte, []int) { method GetPolicy (line 62) | func (x *SetPolicyRequest) GetPolicy() string { type SetPolicyResponse (line 69) | type SetPolicyResponse struct method Reset (line 77) | func (x *SetPolicyResponse) Reset() { method String (line 84) | func (x *SetPolicyResponse) String() string { method ProtoMessage (line 88) | func (*SetPolicyResponse) ProtoMessage() {} method ProtoReflect (line 90) | func (x *SetPolicyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 103) | func (*SetPolicyResponse) Descriptor() ([]byte, []int) { method GetPolicy (line 107) | func (x *SetPolicyResponse) GetPolicy() string { method GetUpdatedAt (line 114) | func (x *SetPolicyResponse) GetUpdatedAt() *timestamppb.Timestamp { type GetPolicyRequest (line 121) | type GetPolicyRequest struct method Reset (line 127) | func (x *GetPolicyRequest) Reset() { method String (line 134) | func (x *GetPolicyRequest) String() string { method ProtoMessage (line 138) | func (*GetPolicyRequest) ProtoMessage() {} method ProtoReflect (line 140) | func (x *GetPolicyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 153) | func (*GetPolicyRequest) Descriptor() ([]byte, []int) { type GetPolicyResponse (line 157) | type GetPolicyResponse struct method Reset (line 165) | func (x *GetPolicyResponse) Reset() { method String (line 172) | func (x *GetPolicyResponse) String() string { method ProtoMessage (line 176) | func (*GetPolicyResponse) ProtoMessage() {} method ProtoReflect (line 178) | func (x *GetPolicyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 191) | func (*GetPolicyResponse) Descriptor() ([]byte, []int) { method GetPolicy (line 195) | func (x *GetPolicyResponse) GetPolicy() string { method GetUpdatedAt (line 202) | func (x *GetPolicyResponse) GetUpdatedAt() *timestamppb.Timestamp { constant file_headscale_v1_policy_proto_rawDesc (line 211) | file_headscale_v1_policy_proto_rawDesc = "" + function file_headscale_v1_policy_proto_rawDescGZIP (line 231) | func file_headscale_v1_policy_proto_rawDescGZIP() []byte { function init (line 256) | func init() { file_headscale_v1_policy_proto_init() } function file_headscale_v1_policy_proto_init (line 257) | func file_headscale_v1_policy_proto_init() { FILE: gen/go/headscale/v1/preauthkey.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type PreAuthKey (line 25) | type PreAuthKey struct method Reset (line 40) | func (x *PreAuthKey) Reset() { method String (line 47) | func (x *PreAuthKey) String() string { method ProtoMessage (line 51) | func (*PreAuthKey) ProtoMessage() {} method ProtoReflect (line 53) | func (x *PreAuthKey) ProtoReflect() protoreflect.Message { method Descriptor (line 66) | func (*PreAuthKey) Descriptor() ([]byte, []int) { method GetUser (line 70) | func (x *PreAuthKey) GetUser() *User { method GetId (line 77) | func (x *PreAuthKey) GetId() uint64 { method GetKey (line 84) | func (x *PreAuthKey) GetKey() string { method GetReusable (line 91) | func (x *PreAuthKey) GetReusable() bool { method GetEphemeral (line 98) | func (x *PreAuthKey) GetEphemeral() bool { method GetUsed (line 105) | func (x *PreAuthKey) GetUsed() bool { method GetExpiration (line 112) | func (x *PreAuthKey) GetExpiration() *timestamppb.Timestamp { method GetCreatedAt (line 119) | func (x *PreAuthKey) GetCreatedAt() *timestamppb.Timestamp { method GetAclTags (line 126) | func (x *PreAuthKey) GetAclTags() []string { type CreatePreAuthKeyRequest (line 133) | type CreatePreAuthKeyRequest struct method Reset (line 144) | func (x *CreatePreAuthKeyRequest) Reset() { method String (line 151) | func (x *CreatePreAuthKeyRequest) String() string { method ProtoMessage (line 155) | func (*CreatePreAuthKeyRequest) ProtoMessage() {} method ProtoReflect (line 157) | func (x *CreatePreAuthKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 170) | func (*CreatePreAuthKeyRequest) Descriptor() ([]byte, []int) { method GetUser (line 174) | func (x *CreatePreAuthKeyRequest) GetUser() uint64 { method GetReusable (line 181) | func (x *CreatePreAuthKeyRequest) GetReusable() bool { method GetEphemeral (line 188) | func (x *CreatePreAuthKeyRequest) GetEphemeral() bool { method GetExpiration (line 195) | func (x *CreatePreAuthKeyRequest) GetExpiration() *timestamppb.Timesta... method GetAclTags (line 202) | func (x *CreatePreAuthKeyRequest) GetAclTags() []string { type CreatePreAuthKeyResponse (line 209) | type CreatePreAuthKeyResponse struct method Reset (line 216) | func (x *CreatePreAuthKeyResponse) Reset() { method String (line 223) | func (x *CreatePreAuthKeyResponse) String() string { method ProtoMessage (line 227) | func (*CreatePreAuthKeyResponse) ProtoMessage() {} method ProtoReflect (line 229) | func (x *CreatePreAuthKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 242) | func (*CreatePreAuthKeyResponse) Descriptor() ([]byte, []int) { method GetPreAuthKey (line 246) | func (x *CreatePreAuthKeyResponse) GetPreAuthKey() *PreAuthKey { type ExpirePreAuthKeyRequest (line 253) | type ExpirePreAuthKeyRequest struct method Reset (line 260) | func (x *ExpirePreAuthKeyRequest) Reset() { method String (line 267) | func (x *ExpirePreAuthKeyRequest) String() string { method ProtoMessage (line 271) | func (*ExpirePreAuthKeyRequest) ProtoMessage() {} method ProtoReflect (line 273) | func (x *ExpirePreAuthKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 286) | func (*ExpirePreAuthKeyRequest) Descriptor() ([]byte, []int) { method GetId (line 290) | func (x *ExpirePreAuthKeyRequest) GetId() uint64 { type ExpirePreAuthKeyResponse (line 297) | type ExpirePreAuthKeyResponse struct method Reset (line 303) | func (x *ExpirePreAuthKeyResponse) Reset() { method String (line 310) | func (x *ExpirePreAuthKeyResponse) String() string { method ProtoMessage (line 314) | func (*ExpirePreAuthKeyResponse) ProtoMessage() {} method ProtoReflect (line 316) | func (x *ExpirePreAuthKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 329) | func (*ExpirePreAuthKeyResponse) Descriptor() ([]byte, []int) { type DeletePreAuthKeyRequest (line 333) | type DeletePreAuthKeyRequest struct method Reset (line 340) | func (x *DeletePreAuthKeyRequest) Reset() { method String (line 347) | func (x *DeletePreAuthKeyRequest) String() string { method ProtoMessage (line 351) | func (*DeletePreAuthKeyRequest) ProtoMessage() {} method ProtoReflect (line 353) | func (x *DeletePreAuthKeyRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 366) | func (*DeletePreAuthKeyRequest) Descriptor() ([]byte, []int) { method GetId (line 370) | func (x *DeletePreAuthKeyRequest) GetId() uint64 { type DeletePreAuthKeyResponse (line 377) | type DeletePreAuthKeyResponse struct method Reset (line 383) | func (x *DeletePreAuthKeyResponse) Reset() { method String (line 390) | func (x *DeletePreAuthKeyResponse) String() string { method ProtoMessage (line 394) | func (*DeletePreAuthKeyResponse) ProtoMessage() {} method ProtoReflect (line 396) | func (x *DeletePreAuthKeyResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 409) | func (*DeletePreAuthKeyResponse) Descriptor() ([]byte, []int) { type ListPreAuthKeysRequest (line 413) | type ListPreAuthKeysRequest struct method Reset (line 419) | func (x *ListPreAuthKeysRequest) Reset() { method String (line 426) | func (x *ListPreAuthKeysRequest) String() string { method ProtoMessage (line 430) | func (*ListPreAuthKeysRequest) ProtoMessage() {} method ProtoReflect (line 432) | func (x *ListPreAuthKeysRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 445) | func (*ListPreAuthKeysRequest) Descriptor() ([]byte, []int) { type ListPreAuthKeysResponse (line 449) | type ListPreAuthKeysResponse struct method Reset (line 456) | func (x *ListPreAuthKeysResponse) Reset() { method String (line 463) | func (x *ListPreAuthKeysResponse) String() string { method ProtoMessage (line 467) | func (*ListPreAuthKeysResponse) ProtoMessage() {} method ProtoReflect (line 469) | func (x *ListPreAuthKeysResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 482) | func (*ListPreAuthKeysResponse) Descriptor() ([]byte, []int) { method GetPreAuthKeys (line 486) | func (x *ListPreAuthKeysResponse) GetPreAuthKeys() []*PreAuthKey { constant file_headscale_v1_preauthkey_proto_rawDesc (line 495) | file_headscale_v1_preauthkey_proto_rawDesc = "" + function file_headscale_v1_preauthkey_proto_rawDescGZIP (line 538) | func file_headscale_v1_preauthkey_proto_rawDescGZIP() []byte { function init (line 573) | func init() { file_headscale_v1_preauthkey_proto_init() } function file_headscale_v1_preauthkey_proto_init (line 574) | func file_headscale_v1_preauthkey_proto_init() { FILE: gen/go/headscale/v1/user.pb.go constant _ (line 20) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 22) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type User (line 25) | type User struct method Reset (line 39) | func (x *User) Reset() { method String (line 46) | func (x *User) String() string { method ProtoMessage (line 50) | func (*User) ProtoMessage() {} method ProtoReflect (line 52) | func (x *User) ProtoReflect() protoreflect.Message { method Descriptor (line 65) | func (*User) Descriptor() ([]byte, []int) { method GetId (line 69) | func (x *User) GetId() uint64 { method GetName (line 76) | func (x *User) GetName() string { method GetCreatedAt (line 83) | func (x *User) GetCreatedAt() *timestamppb.Timestamp { method GetDisplayName (line 90) | func (x *User) GetDisplayName() string { method GetEmail (line 97) | func (x *User) GetEmail() string { method GetProviderId (line 104) | func (x *User) GetProviderId() string { method GetProvider (line 111) | func (x *User) GetProvider() string { method GetProfilePicUrl (line 118) | func (x *User) GetProfilePicUrl() string { type CreateUserRequest (line 125) | type CreateUserRequest struct method Reset (line 135) | func (x *CreateUserRequest) Reset() { method String (line 142) | func (x *CreateUserRequest) String() string { method ProtoMessage (line 146) | func (*CreateUserRequest) ProtoMessage() {} method ProtoReflect (line 148) | func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 161) | func (*CreateUserRequest) Descriptor() ([]byte, []int) { method GetName (line 165) | func (x *CreateUserRequest) GetName() string { method GetDisplayName (line 172) | func (x *CreateUserRequest) GetDisplayName() string { method GetEmail (line 179) | func (x *CreateUserRequest) GetEmail() string { method GetPictureUrl (line 186) | func (x *CreateUserRequest) GetPictureUrl() string { type CreateUserResponse (line 193) | type CreateUserResponse struct method Reset (line 200) | func (x *CreateUserResponse) Reset() { method String (line 207) | func (x *CreateUserResponse) String() string { method ProtoMessage (line 211) | func (*CreateUserResponse) ProtoMessage() {} method ProtoReflect (line 213) | func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 226) | func (*CreateUserResponse) Descriptor() ([]byte, []int) { method GetUser (line 230) | func (x *CreateUserResponse) GetUser() *User { type RenameUserRequest (line 237) | type RenameUserRequest struct method Reset (line 245) | func (x *RenameUserRequest) Reset() { method String (line 252) | func (x *RenameUserRequest) String() string { method ProtoMessage (line 256) | func (*RenameUserRequest) ProtoMessage() {} method ProtoReflect (line 258) | func (x *RenameUserRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 271) | func (*RenameUserRequest) Descriptor() ([]byte, []int) { method GetOldId (line 275) | func (x *RenameUserRequest) GetOldId() uint64 { method GetNewName (line 282) | func (x *RenameUserRequest) GetNewName() string { type RenameUserResponse (line 289) | type RenameUserResponse struct method Reset (line 296) | func (x *RenameUserResponse) Reset() { method String (line 303) | func (x *RenameUserResponse) String() string { method ProtoMessage (line 307) | func (*RenameUserResponse) ProtoMessage() {} method ProtoReflect (line 309) | func (x *RenameUserResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 322) | func (*RenameUserResponse) Descriptor() ([]byte, []int) { method GetUser (line 326) | func (x *RenameUserResponse) GetUser() *User { type DeleteUserRequest (line 333) | type DeleteUserRequest struct method Reset (line 340) | func (x *DeleteUserRequest) Reset() { method String (line 347) | func (x *DeleteUserRequest) String() string { method ProtoMessage (line 351) | func (*DeleteUserRequest) ProtoMessage() {} method ProtoReflect (line 353) | func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 366) | func (*DeleteUserRequest) Descriptor() ([]byte, []int) { method GetId (line 370) | func (x *DeleteUserRequest) GetId() uint64 { type DeleteUserResponse (line 377) | type DeleteUserResponse struct method Reset (line 383) | func (x *DeleteUserResponse) Reset() { method String (line 390) | func (x *DeleteUserResponse) String() string { method ProtoMessage (line 394) | func (*DeleteUserResponse) ProtoMessage() {} method ProtoReflect (line 396) | func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 409) | func (*DeleteUserResponse) Descriptor() ([]byte, []int) { type ListUsersRequest (line 413) | type ListUsersRequest struct method Reset (line 422) | func (x *ListUsersRequest) Reset() { method String (line 429) | func (x *ListUsersRequest) String() string { method ProtoMessage (line 433) | func (*ListUsersRequest) ProtoMessage() {} method ProtoReflect (line 435) | func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 448) | func (*ListUsersRequest) Descriptor() ([]byte, []int) { method GetId (line 452) | func (x *ListUsersRequest) GetId() uint64 { method GetName (line 459) | func (x *ListUsersRequest) GetName() string { method GetEmail (line 466) | func (x *ListUsersRequest) GetEmail() string { type ListUsersResponse (line 473) | type ListUsersResponse struct method Reset (line 480) | func (x *ListUsersResponse) Reset() { method String (line 487) | func (x *ListUsersResponse) String() string { method ProtoMessage (line 491) | func (*ListUsersResponse) ProtoMessage() {} method ProtoReflect (line 493) | func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 506) | func (*ListUsersResponse) Descriptor() ([]byte, []int) { method GetUsers (line 510) | func (x *ListUsersResponse) GetUsers() []*User { constant file_headscale_v1_user_proto_rawDesc (line 519) | file_headscale_v1_user_proto_rawDesc = "" + function file_headscale_v1_user_proto_rawDescGZIP (line 561) | func file_headscale_v1_user_proto_rawDescGZIP() []byte { function init (line 593) | func init() { file_headscale_v1_user_proto_init() } function file_headscale_v1_user_proto_init (line 594) | func file_headscale_v1_user_proto_init() { FILE: hscontrol/app.go function init (line 78) | func init() { constant AuthPrefix (line 87) | AuthPrefix = "Bearer " constant updateInterval (line 88) | updateInterval = 5 * time.Second constant privateKeyFileMode (line 89) | privateKeyFileMode = 0o600 constant headscaleDirPerm (line 90) | headscaleDirPerm = 0o700 type Headscale (line 94) | type Headscale struct method redirect (line 252) | func (h *Headscale) redirect(w http.ResponseWriter, req *http.Request) { method scheduledTasks (line 257) | func (h *Headscale) scheduledTasks(ctx context.Context) { method grpcAuthenticationInterceptor (line 339) | func (h *Headscale) grpcAuthenticationInterceptor(ctx context.Context, method httpAuthenticationMiddleware (line 397) | func (h *Headscale) httpAuthenticationMiddleware(next http.Handler) ht... method ensureUnixSocketIsAbsent (line 454) | func (h *Headscale) ensureUnixSocketIsAbsent() error { method createRouter (line 463) | func (h *Headscale) createRouter(grpcMux *grpcRuntime.ServeMux) *chi.M... method Serve (line 520) | func (h *Headscale) Serve() error { method getTLSSettings (line 943) | func (h *Headscale) getTLSSettings() (*tls.Config, error) { method Change (line 1069) | func (h *Headscale) Change(cs ...change.Change) { method HTTPHandler (line 1076) | func (h *Headscale) HTTPHandler() http.Handler { method NoisePublicKey (line 1081) | func (h *Headscale) NoisePublicKey() key.MachinePublic { method GetState (line 1087) | func (h *Headscale) GetState() *state.State { method SetServerURLForTest (line 1095) | func (h *Headscale) SetServerURLForTest(tb testing.TB, url string) { method StartBatcherForTest (line 1104) | func (h *Headscale) StartBatcherForTest(tb testing.TB) { method StartEphemeralGCForTest (line 1115) | func (h *Headscale) StartEphemeralGCForTest(tb testing.TB) { function NewHeadscale (line 119) | func NewHeadscale(cfg *types.Config) (*Headscale, error) { function readOrCreatePrivateKey (line 1020) | func readOrCreatePrivateKey(path string) (*key.MachinePrivate, error) { type acmeLogger (line 1125) | type acmeLogger struct method RoundTrip (line 1131) | func (l *acmeLogger) RoundTrip(req *http.Request) (*http.Response, err... type zerologRequestLogger (line 1150) | type zerologRequestLogger struct method NewLogEntry (line 1152) | func (z *zerologRequestLogger) NewLogEntry( type zerologLogEntry (line 1163) | type zerologLogEntry struct method Write (line 1170) | func (e *zerologLogEntry) Write( method Panic (line 1187) | func (e *zerologLogEntry) Panic( FILE: hscontrol/auth.go type AuthProvider (line 21) | type AuthProvider interface method handleRegister (line 28) | func (h *Headscale) handleRegister( method handleLogout (line 137) | func (h *Headscale) handleLogout( function isAuthKey (line 231) | func isAuthKey(req tailcfg.RegisterRequest) bool { function nodeToRegisterResponse (line 235) | func nodeToRegisterResponse(node types.NodeView) *tailcfg.RegisterRespon... method waitForFollowup (line 258) | func (h *Headscale) waitForFollowup( method reqToNewRegisterResponse (line 296) | func (h *Headscale) reqToNewRegisterResponse( method handleRegisterWithAuthKey (line 338) | func (h *Headscale) handleRegisterWithAuthKey( method handleRegisterInteractive (line 402) | func (h *Headscale) handleRegisterInteractive( FILE: hscontrol/auth_tags_test.go function TestTaggedPreAuthKeyCreatesTaggedNode (line 19) | func TestTaggedPreAuthKeyCreatesTaggedNode(t *testing.T) { function TestReAuthDoesNotReapplyTags (line 72) | func TestReAuthDoesNotReapplyTags(t *testing.T) { function TestCannotRemoveAllTags (line 144) | func TestCannotRemoveAllTags(t *testing.T) { function TestUserOwnedNodeCreatedWithUntaggedPreAuthKey (line 191) | func TestUserOwnedNodeCreatedWithUntaggedPreAuthKey(t *testing.T) { function TestMultipleNodesWithSameReusableTaggedPreAuthKey (line 236) | func TestMultipleNodesWithSameReusableTaggedPreAuthKey(t *testing.T) { function TestNonReusableTaggedPreAuthKey (line 308) | func TestNonReusableTaggedPreAuthKey(t *testing.T) { function TestExpiredTaggedPreAuthKey (line 369) | func TestExpiredTaggedPreAuthKey(t *testing.T) { function TestSingleVsMultipleTags (line 406) | func TestSingleVsMultipleTags(t *testing.T) { function TestTaggedPreAuthKeyDisablesKeyExpiry (line 476) | func TestTaggedPreAuthKeyDisablesKeyExpiry(t *testing.T) { function TestUntaggedPreAuthKeyPreservesKeyExpiry (line 520) | func TestUntaggedPreAuthKeyPreservesKeyExpiry(t *testing.T) { function TestTaggedNodeReauthPreservesDisabledExpiry (line 566) | func TestTaggedNodeReauthPreservesDisabledExpiry(t *testing.T) { function TestExpiryDuringPersonalToTaggedConversion (line 632) | func TestExpiryDuringPersonalToTaggedConversion(t *testing.T) { function TestExpiryDuringTaggedToPersonalConversion (line 705) | func TestExpiryDuringTaggedToPersonalConversion(t *testing.T) { function TestReAuthWithDifferentMachineKey (line 777) | func TestReAuthWithDifferentMachineKey(t *testing.T) { FILE: hscontrol/auth_test.go constant stepTypeInitialRequest (line 22) | stepTypeInitialRequest = "initial_request" constant stepTypeAuthCompletion (line 23) | stepTypeAuthCompletion = "auth_completion" constant stepTypeFollowupRequest (line 24) | stepTypeFollowupRequest = "followup_request" type interactiveStep (line 30) | type interactiveStep struct function TestAuthenticationFlows (line 38) | func TestAuthenticationFlows(t *testing.T) { function runInteractiveWorkflowTest (line 2562) | func runInteractiveWorkflowTest(t *testing.T, tt struct { function extractRegistrationIDFromAuthURL (line 2703) | func extractRegistrationIDFromAuthURL(authURL string) (types.AuthID, err... function validateCompleteRegistrationResponse (line 2718) | func validateCompleteRegistrationResponse(t *testing.T, resp *tailcfg.Re... function TestNodeStoreLookup (line 2733) | func TestNodeStoreLookup(t *testing.T) { function TestPreAuthKeyLogoutAndReloginDifferentUser (line 2783) | func TestPreAuthKeyLogoutAndReloginDifferentUser(t *testing.T) { function TestWebFlowReauthDifferentUser (line 2957) | func TestWebFlowReauthDifferentUser(t *testing.T) { function createTestApp (line 3119) | func createTestApp(t *testing.T) *Headscale { function TestGitHubIssue2830_NodeRestartWithUsedPreAuthKey (line 3174) | func TestGitHubIssue2830_NodeRestartWithUsedPreAuthKey(t *testing.T) { function TestNodeReregistrationWithReusablePreAuthKey (line 3270) | func TestNodeReregistrationWithReusablePreAuthKey(t *testing.T) { function TestNodeReregistrationWithExpiredPreAuthKey (line 3325) | func TestNodeReregistrationWithExpiredPreAuthKey(t *testing.T) { function TestIssue2830_ExistingNodeReregistersWithExpiredKey (line 3359) | func TestIssue2830_ExistingNodeReregistersWithExpiredKey(t *testing.T) { function TestGitHubIssue2830_ExistingNodeCanReregisterWithUsedPreAuthKey (line 3457) | func TestGitHubIssue2830_ExistingNodeCanReregisterWithUsedPreAuthKey(t *... function TestWebAuthRejectsUnauthorizedRequestTags (line 3560) | func TestWebAuthRejectsUnauthorizedRequestTags(t *testing.T) { function TestWebAuthReauthWithEmptyTagsRemovesAllTags (line 3607) | func TestWebAuthReauthWithEmptyTagsRemovesAllTags(t *testing.T) { function TestAuthKeyTaggedToUserOwnedViaReauth (line 3703) | func TestAuthKeyTaggedToUserOwnedViaReauth(t *testing.T) { function TestDeletedPreAuthKeyNotRecreatedOnNodeUpdate (line 3800) | func TestDeletedPreAuthKeyNotRecreatedOnNodeUpdate(t *testing.T) { function TestTaggedNodeWithoutUserToDifferentUser (line 3898) | func TestTaggedNodeWithoutUserToDifferentUser(t *testing.T) { FILE: hscontrol/capver/capver.go constant minVersionParts (line 17) | minVersionParts = 2 constant legacyDERPCapVer (line 20) | legacyDERPCapVer = 111 function CanOldCodeBeCleanedUp (line 29) | func CanOldCodeBeCleanedUp() { function tailscaleVersSorted (line 35) | func tailscaleVersSorted() []string { function capVersSorted (line 42) | func capVersSorted() []tailcfg.CapabilityVersion { function TailscaleVersion (line 50) | func TailscaleVersion(ver tailcfg.CapabilityVersion) string { function CapabilityVersion (line 56) | func CapabilityVersion(ver string) tailcfg.CapabilityVersion { function TailscaleLatest (line 77) | func TailscaleLatest(n int) []string { function TailscaleLatestMajorMinor (line 92) | func TailscaleLatestMajorMinor(n int, stripV bool) []string { function CapVerLatest (line 119) | func CapVerLatest(n int) []tailcfg.CapabilityVersion { FILE: hscontrol/capver/capver_generated.go constant SupportedMajorMinorVersions (line 81) | SupportedMajorMinorVersions = 10 constant MinSupportedCapabilityVersion (line 85) | MinSupportedCapabilityVersion tailcfg.CapabilityVersion = 106 FILE: hscontrol/capver/capver_test.go function TestTailscaleLatestMajorMinor (line 9) | func TestTailscaleLatestMajorMinor(t *testing.T) { function TestCapVerMinimumTailscaleVersion (line 20) | func TestCapVerMinimumTailscaleVersion(t *testing.T) { FILE: hscontrol/db/api_key.go constant apiKeyPrefix (line 16) | apiKeyPrefix = "hskey-api-" constant apiKeyPrefixLength (line 17) | apiKeyPrefixLength = 12 constant apiKeyHashLength (line 18) | apiKeyHashLength = 64 constant legacyAPIPrefixLength (line 21) | legacyAPIPrefixLength = 7 constant legacyAPIKeyLength (line 22) | legacyAPIKeyLength = 32 method CreateAPIKey (line 32) | func (hsdb *HSDatabase) CreateAPIKey( method ListAPIKeys (line 88) | func (hsdb *HSDatabase) ListAPIKeys() ([]types.APIKey, error) { method GetAPIKey (line 100) | func (hsdb *HSDatabase) GetAPIKey(prefix string) (*types.APIKey, error) { method GetAPIKeyByID (line 110) | func (hsdb *HSDatabase) GetAPIKeyByID(id uint64) (*types.APIKey, error) { method DestroyAPIKey (line 121) | func (hsdb *HSDatabase) DestroyAPIKey(key types.APIKey) error { method ExpireAPIKey (line 130) | func (hsdb *HSDatabase) ExpireAPIKey(key *types.APIKey) error { method ValidateAPIKey (line 139) | func (hsdb *HSDatabase) ValidateAPIKey(keyStr string) (bool, error) { function ParseAPIKeyPrefix (line 155) | func ParseAPIKeyPrefix(displayPrefix string) (string, error) { function validateAPIKey (line 190) | func validateAPIKey(db *gorm.DB, keyStr string) (*types.APIKey, error) { function validateLegacyAPIKey (line 274) | func validateLegacyAPIKey(db *gorm.DB, keyStr string) (*types.APIKey, er... FILE: hscontrol/db/api_key_test.go function TestCreateAPIKey (line 14) | func TestCreateAPIKey(t *testing.T) { function TestAPIKeyDoesNotExist (line 35) | func TestAPIKeyDoesNotExist(t *testing.T) { function TestValidateAPIKeyOk (line 44) | func TestValidateAPIKeyOk(t *testing.T) { function TestValidateAPIKeyNotOk (line 58) | func TestValidateAPIKeyNotOk(t *testing.T) { function TestExpireAPIKey (line 89) | func TestExpireAPIKey(t *testing.T) { function TestAPIKeyWithPrefix (line 111) | func TestAPIKeyWithPrefix(t *testing.T) { function TestGetAPIKeyByID (line 250) | func TestGetAPIKeyByID(t *testing.T) { function TestGetAPIKeyByIDNotFound (line 267) | func TestGetAPIKeyByIDNotFound(t *testing.T) { FILE: hscontrol/db/db.go function init (line 33) | func init() { constant maxIdleConns (line 42) | maxIdleConns = 100 constant maxOpenConns (line 43) | maxOpenConns = 100 constant contextTimeoutSecs (line 44) | contextTimeoutSecs = 10 type HSDatabase (line 47) | type HSDatabase struct method PingDB (line 1080) | func (hsdb *HSDatabase) PingDB(ctx context.Context) error { method Close (line 1092) | func (hsdb *HSDatabase) Close() error { method Read (line 1105) | func (hsdb *HSDatabase) Read(fn func(rx *gorm.DB) error) error { method Write (line 1125) | func (hsdb *HSDatabase) Write(fn func(tx *gorm.DB) error) error { function NewHeadscaleDatabase (line 57) | func NewHeadscaleDatabase( function openDB (line 849) | func openDB(cfg types.DatabaseConfig) (*gorm.DB, error) { function runMigrations (line 955) | func runMigrations(cfg types.DatabaseConfig, dbConn *gorm.DB, migrations... function Read (line 1112) | func Read[T any](db *gorm.DB, fn func(rx *gorm.DB) (T, error)) (T, error) { function Write (line 1137) | func Write[T any](db *gorm.DB, fn func(tx *gorm.DB) (T, error)) (T, erro... FILE: hscontrol/db/db_test.go function TestSQLiteMigrationAndDataValidation (line 23) | func TestSQLiteMigrationAndDataValidation(t *testing.T) { function emptyCache (line 165) | func emptyCache() *zcache.Cache[types.AuthID, types.AuthRequest] { function createSQLiteFromSQLFile (line 169) | func createSQLiteFromSQLFile(sqlFilePath, dbPath string) error { function requireConstraintFailed (line 188) | func requireConstraintFailed(t *testing.T, err error) { function TestConstraints (line 197) | func TestConstraints(t *testing.T) { function TestPostgresMigrationAndDataValidation (line 309) | func TestPostgresMigrationAndDataValidation(t *testing.T) { function dbForTest (line 347) | func dbForTest(t *testing.T) *HSDatabase { function dbForTestWithPath (line 352) | func dbForTestWithPath(t *testing.T, sqlFilePath string) *HSDatabase { function TestSQLiteAllTestdataMigrations (line 405) | func TestSQLiteAllTestdataMigrations(t *testing.T) { FILE: hscontrol/db/ephemeral_garbage_collector_test.go constant fiveHundred (line 15) | fiveHundred = 500 * time.Millisecond constant oneHundred (line 16) | oneHundred = 100 * time.Millisecond constant fifty (line 17) | fifty = 50 * time.Millisecond function TestEphemeralGarbageCollectorGoRoutineLeak (line 24) | func TestEphemeralGarbageCollectorGoRoutineLeak(t *testing.T) { function TestEphemeralGarbageCollectorReschedule (line 95) | func TestEphemeralGarbageCollectorReschedule(t *testing.T) { function TestEphemeralGarbageCollectorCancelAndReschedule (line 151) | func TestEphemeralGarbageCollectorCancelAndReschedule(t *testing.T) { function TestEphemeralGarbageCollectorCloseBeforeTimerFires (line 219) | func TestEphemeralGarbageCollectorCloseBeforeTimerFires(t *testing.T) { function TestEphemeralGarbageCollectorScheduleAfterClose (line 269) | func TestEphemeralGarbageCollectorScheduleAfterClose(t *testing.T) { function TestEphemeralGarbageCollectorConcurrentScheduleAndClose (line 343) | func TestEphemeralGarbageCollectorConcurrentScheduleAndClose(t *testing.... FILE: hscontrol/db/ip.go type IPAllocator (line 31) | type IPAllocator struct method Next (line 140) | func (i *IPAllocator) Next() (*netip.Addr, *netip.Addr, error) { method nextLocked (line 173) | func (i *IPAllocator) nextLocked(prev netip.Addr, prefix *netip.Prefix... method next (line 180) | func (i *IPAllocator) next(prev netip.Addr, prefix *netip.Prefix) (*ne... method FreeIPs (line 363) | func (i *IPAllocator) FreeIPs(ips []netip.Addr) { function NewIPAllocator (line 57) | func NewIPAllocator( function randomNext (line 230) | func randomNext(pfx netip.Prefix) (netip.Addr, error) { function isTailscaleReservedIP (line 268) | func isTailscaleReservedIP(ip netip.Addr) bool { method BackfillNodeIPs (line 283) | func (db *HSDatabase) BackfillNodeIPs(i *IPAllocator) ([]string, error) { FILE: hscontrol/db/ip_test.go function TestIPAllocatorSequential (line 30) | func TestIPAllocatorSequential(t *testing.T) { function TestIPAllocatorRandom (line 189) | func TestIPAllocatorRandom(t *testing.T) { function TestBackfillIPAddresses (line 287) | func TestBackfillIPAddresses(t *testing.T) { function TestIPAllocatorNextNoReservedIPs (line 485) | func TestIPAllocatorNextNoReservedIPs(t *testing.T) { FILE: hscontrol/db/main_test.go function TestMain (line 13) | func TestMain(m *testing.M) { FILE: hscontrol/db/node.go constant NodeGivenNameHashLength (line 27) | NodeGivenNameHashLength = 8 constant NodeGivenNameTrimSize (line 28) | NodeGivenNameTrimSize = 2 constant defaultTestNodePrefix (line 31) | defaultTestNodePrefix = "testnode" method ListPeers (line 51) | func (hsdb *HSDatabase) ListPeers(nodeID types.NodeID, peerIDs ...types.... function ListPeers (line 58) | func ListPeers(tx *gorm.DB, nodeID types.NodeID, peerIDs ...types.NodeID... method ListNodes (line 78) | func (hsdb *HSDatabase) ListNodes(nodeIDs ...types.NodeID) (types.Nodes,... function ListNodes (line 84) | func ListNodes(tx *gorm.DB, nodeIDs ...types.NodeID) (types.Nodes, error) { method ListEphemeralNodes (line 99) | func (hsdb *HSDatabase) ListEphemeralNodes() (types.Nodes, error) { method getNode (line 112) | func (hsdb *HSDatabase) getNode(uid types.UserID, name string) (*types.N... function getNode (line 119) | func getNode(tx *gorm.DB, uid types.UserID, name string) (*types.Node, e... method GetNodeByID (line 134) | func (hsdb *HSDatabase) GetNodeByID(id types.NodeID) (*types.Node, error) { function GetNodeByID (line 139) | func GetNodeByID(tx *gorm.DB, id types.NodeID) (*types.Node, error) { method GetNodeByMachineKey (line 152) | func (hsdb *HSDatabase) GetNodeByMachineKey(machineKey key.MachinePublic... function GetNodeByMachineKey (line 157) | func GetNodeByMachineKey( method GetNodeByNodeKey (line 173) | func (hsdb *HSDatabase) GetNodeByNodeKey(nodeKey key.NodePublic) (*types... function GetNodeByNodeKey (line 178) | func GetNodeByNodeKey( method SetTags (line 194) | func (hsdb *HSDatabase) SetTags( function SetTags (line 205) | func SetTags( function SetApprovedRoutes (line 237) | func SetApprovedRoutes( method SetLastSeen (line 277) | func (hsdb *HSDatabase) SetLastSeen(nodeID types.NodeID, lastSeen time.T... function SetLastSeen (line 285) | func SetLastSeen(tx *gorm.DB, nodeID types.NodeID, lastSeen time.Time) e... function RenameNode (line 291) | func RenameNode(tx *gorm.DB, method NodeSetExpiry (line 318) | func (hsdb *HSDatabase) NodeSetExpiry(nodeID types.NodeID, expiry *time.... function NodeSetExpiry (line 326) | func NodeSetExpiry(tx *gorm.DB, nodeID types.NodeID, expiry *time.Time) ... method DeleteNode (line 330) | func (hsdb *HSDatabase) DeleteNode(node *types.Node) error { function DeleteNode (line 338) | func DeleteNode(tx *gorm.DB, method DeleteEphemeralNode (line 353) | func (hsdb *HSDatabase) DeleteEphemeralNode( function RegisterNodeForTest (line 368) | func RegisterNodeForTest(tx *gorm.DB, node types.Node, ipv4 *netip.Addr,... function NodeSetNodeKey (line 461) | func NodeSetNodeKey(tx *gorm.DB, node *types.Node, nodeKey key.NodePubli... method NodeSetMachineKey (line 467) | func (hsdb *HSDatabase) NodeSetMachineKey( function NodeSetMachineKey (line 477) | func NodeSetMachineKey( function generateGivenName (line 487) | func generateGivenName(suppliedName string, randomSuffix bool) (string, ... function isUniqueName (line 514) | func isUniqueName(tx *gorm.DB, name string) (bool, error) { function EnsureUniqueGivenName (line 527) | func EnsureUniqueGivenName( type EphemeralGarbageCollector (line 557) | type EphemeralGarbageCollector struct method Close (line 579) | func (e *EphemeralGarbageCollector) Close() { method Schedule (line 594) | func (e *EphemeralGarbageCollector) Schedule(nodeID types.NodeID, expi... method Cancel (line 638) | func (e *EphemeralGarbageCollector) Cancel(nodeID types.NodeID) { method Start (line 649) | func (e *EphemeralGarbageCollector) Start() { function NewEphemeralGarbageCollector (line 569) | func NewEphemeralGarbageCollector(deleteFunc func(types.NodeID)) *Epheme... method CreateNodeForTest (line 664) | func (hsdb *HSDatabase) CreateNodeForTest(user *types.User, hostname ...... method CreateRegisteredNodeForTest (line 707) | func (hsdb *HSDatabase) CreateRegisteredNodeForTest(user *types.User, ho... method CreateNodesForTest (line 737) | func (hsdb *HSDatabase) CreateNodesForTest(user *types.User, count int, ... method CreateRegisteredNodesForTest (line 760) | func (hsdb *HSDatabase) CreateRegisteredNodesForTest(user *types.User, c... method allocateTestIPs (line 784) | func (hsdb *HSDatabase) allocateTestIPs(nodeID types.NodeID) (*netip.Add... FILE: hscontrol/db/node_test.go function TestGetNode (line 27) | func TestGetNode(t *testing.T) { function TestGetNodeByID (line 43) | func TestGetNodeByID(t *testing.T) { function TestHardDeleteNode (line 59) | func TestHardDeleteNode(t *testing.T) { function TestListPeersManyNodes (line 73) | func TestListPeersManyNodes(t *testing.T) { function TestExpireNode (line 94) | func TestExpireNode(t *testing.T) { function TestDisableNodeExpiry (line 140) | func TestDisableNodeExpiry(t *testing.T) { function TestSetTags (line 182) | func TestSetTags(t *testing.T) { function TestHeadscale_generateGivenName (line 230) | func TestHeadscale_generateGivenName(t *testing.T) { function TestAutoApproveRoutes (line 347) | func TestAutoApproveRoutes(t *testing.T) { function TestEphemeralGarbageCollectorOrder (line 568) | func TestEphemeralGarbageCollectorOrder(t *testing.T) { function TestEphemeralGarbageCollectorLoads (line 628) | func TestEphemeralGarbageCollectorLoads(t *testing.T) { function generateRandomNumber (line 673) | func generateRandomNumber(t *testing.T, maxVal int64) int64 { function TestListEphemeralNodes (line 686) | func TestListEphemeralNodes(t *testing.T) { function TestRenameNodeComprehensive (line 902) | func TestRenameNodeComprehensive(t *testing.T) { function TestListPeers (line 1021) | func TestListPeers(t *testing.T) { function TestListNodes (line 1107) | func TestListNodes(t *testing.T) { FILE: hscontrol/db/policy.go method SetPolicy (line 14) | func (hsdb *HSDatabase) SetPolicy(policy string) (*types.Policy, error) { method GetPolicy (line 29) | func (hsdb *HSDatabase) GetPolicy() (*types.Policy, error) { function GetPolicy (line 36) | func GetPolicy(tx *gorm.DB) (*types.Policy, error) { function PolicyBytes (line 60) | func PolicyBytes(tx *gorm.DB, cfg *types.Config) ([]byte, error) { FILE: hscontrol/db/preauth_keys.go method CreatePreAuthKey (line 25) | func (hsdb *HSDatabase) CreatePreAuthKey( constant authKeyPrefix (line 38) | authKeyPrefix = "hskey-auth-" constant authKeyPrefixLength (line 39) | authKeyPrefixLength = 12 constant authKeyLength (line 40) | authKeyLength = 64 function CreatePreAuthKey (line 47) | func CreatePreAuthKey( method ListPreAuthKeys (line 157) | func (hsdb *HSDatabase) ListPreAuthKeys() ([]types.PreAuthKey, error) { function ListPreAuthKeys (line 162) | func ListPreAuthKeys(tx *gorm.DB) ([]types.PreAuthKey, error) { function findAuthKey (line 178) | func findAuthKey(tx *gorm.DB, keyStr string) (*types.PreAuthKey, error) { function isValidBase64URLSafe (line 267) | func isValidBase64URLSafe(s string) bool { method GetPreAuthKey (line 277) | func (hsdb *HSDatabase) GetPreAuthKey(key string) (*types.PreAuthKey, er... function GetPreAuthKey (line 283) | func GetPreAuthKey(tx *gorm.DB, key string) (*types.PreAuthKey, error) { function DestroyPreAuthKey (line 290) | func DestroyPreAuthKey(tx *gorm.DB, id uint64) error { method ExpirePreAuthKey (line 310) | func (hsdb *HSDatabase) ExpirePreAuthKey(id uint64) error { method DeletePreAuthKey (line 316) | func (hsdb *HSDatabase) DeletePreAuthKey(id uint64) error { function UsePreAuthKey (line 323) | func UsePreAuthKey(tx *gorm.DB, k *types.PreAuthKey) error { function ExpirePreAuthKey (line 335) | func ExpirePreAuthKey(tx *gorm.DB, id uint64) error { FILE: hscontrol/db/preauth_keys_test.go function TestCreatePreAuthKey (line 16) | func TestCreatePreAuthKey(t *testing.T) { function TestPreAuthKeyACLTags (line 63) | func TestPreAuthKeyACLTags(t *testing.T) { function TestCannotDeleteAssignedPreAuthKey (line 115) | func TestCannotDeleteAssignedPreAuthKey(t *testing.T) { function TestPreAuthKeyAuthentication (line 137) | func TestPreAuthKeyAuthentication(t *testing.T) { function TestMultipleLegacyKeysAllowed (line 378) | func TestMultipleLegacyKeysAllowed(t *testing.T) { FILE: hscontrol/db/schema.sql type migrations (line 5) | CREATE TABLE migrations(id text,PRIMARY KEY(id)) type users (line 7) | CREATE TABLE users( type idx_users_deleted_at (line 20) | CREATE INDEX idx_users_deleted_at ON users(deleted_at) type idx_provider_identifier (line 37) | CREATE UNIQUE INDEX idx_provider_identifier ON users(provider_identifier... type idx_name_provider_identifier (line 38) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users(name, provider... type idx_name_no_provider_identifier (line 39) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users(name) WHERE... type pre_auth_keys (line 41) | CREATE TABLE pre_auth_keys( type idx_pre_auth_keys_prefix (line 57) | CREATE UNIQUE INDEX idx_pre_auth_keys_prefix ON pre_auth_keys(prefix) WH... type api_keys (line 59) | CREATE TABLE api_keys( type idx_api_keys_prefix (line 68) | CREATE UNIQUE INDEX idx_api_keys_prefix ON api_keys(prefix) type nodes (line 70) | CREATE TABLE nodes( type policies (line 100) | CREATE TABLE policies( type idx_policies_deleted_at (line 108) | CREATE INDEX idx_policies_deleted_at ON policies(deleted_at) type database_versions (line 110) | CREATE TABLE database_versions( FILE: hscontrol/db/sqliteconfig/config.go constant DefaultBusyTimeout (line 24) | DefaultBusyTimeout = 10000 type JournalMode (line 65) | type JournalMode method IsValid (line 94) | func (j JournalMode) IsValid() bool { method String (line 105) | func (j JournalMode) String() string { constant JournalModeWAL (line 70) | JournalModeWAL JournalMode = "WAL" constant JournalModeDelete (line 74) | JournalModeDelete JournalMode = "DELETE" constant JournalModeTruncate (line 78) | JournalModeTruncate JournalMode = "TRUNCATE" constant JournalModePersist (line 82) | JournalModePersist JournalMode = "PERSIST" constant JournalModeMemory (line 86) | JournalModeMemory JournalMode = "MEMORY" constant JournalModeOff (line 90) | JournalModeOff JournalMode = "OFF" type AutoVacuum (line 134) | type AutoVacuum method IsValid (line 151) | func (a AutoVacuum) IsValid() bool { method String (line 161) | func (a AutoVacuum) String() string { constant AutoVacuumNone (line 139) | AutoVacuumNone AutoVacuum = "NONE" constant AutoVacuumFull (line 143) | AutoVacuumFull AutoVacuum = "FULL" constant AutoVacuumIncremental (line 147) | AutoVacuumIncremental AutoVacuum = "INCREMENTAL" type Synchronous (line 194) | type Synchronous method IsValid (line 215) | func (s Synchronous) IsValid() bool { method String (line 225) | func (s Synchronous) String() string { constant SynchronousOff (line 199) | SynchronousOff Synchronous = "OFF" constant SynchronousNormal (line 203) | SynchronousNormal Synchronous = "NORMAL" constant SynchronousFull (line 207) | SynchronousFull Synchronous = "FULL" constant SynchronousExtra (line 211) | SynchronousExtra Synchronous = "EXTRA" type TxLock (line 253) | type TxLock method IsValid (line 271) | func (t TxLock) IsValid() bool { method String (line 281) | func (t TxLock) String() string { constant TxLockDeferred (line 258) | TxLockDeferred TxLock = "deferred" constant TxLockImmediate (line 263) | TxLockImmediate TxLock = "immediate" constant TxLockExclusive (line 267) | TxLockExclusive TxLock = "exclusive" type Config (line 288) | type Config struct method Validate (line 330) | func (c *Config) Validate() error { method ToURL (line 364) | func (c *Config) ToURL() (string, error) { function Default (line 307) | func Default(path string) *Config { function Memory (line 321) | func Memory() *Config { FILE: hscontrol/db/sqliteconfig/config_test.go function TestJournalMode (line 7) | func TestJournalMode(t *testing.T) { function TestAutoVacuum (line 31) | func TestAutoVacuum(t *testing.T) { function TestSynchronous (line 52) | func TestSynchronous(t *testing.T) { function TestTxLock (line 74) | func TestTxLock(t *testing.T) { function TestTxLockString (line 101) | func TestTxLockString(t *testing.T) { function TestConfigValidate (line 120) | func TestConfigValidate(t *testing.T) { function TestConfigToURL (line 180) | func TestConfigToURL(t *testing.T) { function TestConfigToURLInvalid (line 305) | func TestConfigToURLInvalid(t *testing.T) { function TestDefaultConfigHasTxLockImmediate (line 317) | func TestDefaultConfigHasTxLockImmediate(t *testing.T) { FILE: hscontrol/db/sqliteconfig/integration_test.go constant memoryDBPath (line 13) | memoryDBPath = ":memory:" function TestSQLiteDriverPragmaIntegration (line 18) | func TestSQLiteDriverPragmaIntegration(t *testing.T) { function TestForeignKeyConstraintEnforcement (line 155) | func TestForeignKeyConstraintEnforcement(t *testing.T) { function TestJournalModeValidation (line 228) | func TestJournalModeValidation(t *testing.T) { function contains (line 278) | func contains(str, substr string) bool { FILE: hscontrol/db/suite_test.go function newSQLiteTestDB (line 16) | func newSQLiteTestDB() (*HSDatabase, error) { function newPostgresTestDB (line 46) | func newPostgresTestDB(t *testing.T) *HSDatabase { function newPostgresDBForTest (line 52) | func newPostgresDBForTest(t *testing.T) *url.URL { function newHeadscaleDBFromPostgresURL (line 75) | func newHeadscaleDBFromPostgresURL(t *testing.T, pu *url.URL) *HSDatabase { FILE: hscontrol/db/testdata/sqlite/failing-node-preauth-constraint_dump.sql type "api_keys" (line 3) | CREATE TABLE IF NOT EXISTS "api_keys" (`id` integer,`prefix` text UNIQUE... type `migrations` (line 6) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `policies` (line 17) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type "pre_auth_keys" (line 18) | CREATE TABLE IF NOT EXISTS "pre_auth_keys" (`id` integer,`key` text,`us... type "nodes" (line 19) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer,`machine_key` text,`no... type "routes" (line 26) | CREATE TABLE IF NOT EXISTS "routes" (`id` integer,`created_at` datetime... type "users" (line 27) | CREATE TABLE IF NOT EXISTS "users" (`id` integer,`created_at` datetime,... type `idx_api_keys_prefix` (line 30) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 31) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type `idx_routes_deleted_at` (line 32) | CREATE INDEX `idx_routes_deleted_at` ON `routes`(`deleted_at`) type `idx_users_deleted_at` (line 33) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) FILE: hscontrol/db/testdata/sqlite/headscale_0.26.0-beta.1_dump.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 17) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 18) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 19) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type `policies` (line 20) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type "nodes" (line 21) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `idx_users_deleted_at` (line 24) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 25) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 26) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 27) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 28) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... FILE: hscontrol/db/testdata/sqlite/headscale_0.26.0-beta.2_dump.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 18) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 19) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 20) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 21) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `policies` (line 22) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type `idx_users_deleted_at` (line 25) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 26) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 27) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 28) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 30) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... FILE: hscontrol/db/testdata/sqlite/headscale_0.26.0_dump.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 19) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 20) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 21) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 22) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `policies` (line 23) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type `idx_users_deleted_at` (line 26) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 27) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 28) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 30) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 31) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... FILE: hscontrol/db/testdata/sqlite/headscale_0.26.1_dump-litestream.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 19) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 20) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 21) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 22) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `policies` (line 23) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type `idx_users_deleted_at` (line 26) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 27) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 28) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 30) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 31) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... type _litestream_seq (line 32) | CREATE TABLE _litestream_seq (id INTEGER PRIMARY KEY, seq INTEGER) type _litestream_lock (line 33) | CREATE TABLE _litestream_lock (id INTEGER) FILE: hscontrol/db/testdata/sqlite/headscale_0.26.1_dump.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 19) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 20) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 21) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 22) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `policies` (line 23) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type `idx_users_deleted_at` (line 26) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 27) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 28) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 30) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 31) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... FILE: hscontrol/db/testdata/sqlite/headscale_0.26.1_dump_schema-to-0.27.0-old-table-cleanup.sql type `migrations` (line 3) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 19) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 20) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 21) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 22) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREM... type `policies` (line 23) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type `idx_users_deleted_at` (line 26) | CREATE INDEX `idx_users_deleted_at` ON `users`(`deleted_at`) type `idx_api_keys_prefix` (line 27) | CREATE UNIQUE INDEX `idx_api_keys_prefix` ON `api_keys`(`prefix`) type `idx_policies_deleted_at` (line 28) | CREATE INDEX `idx_policies_deleted_at` ON `policies`(`deleted_at`) type idx_provider_identifier (line 29) | CREATE UNIQUE INDEX idx_provider_identifier ON users (provider_identifie... type idx_name_provider_identifier (line 30) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users (name,provider... type idx_name_no_provider_identifier (line 31) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users (name) WHER... type `namespaces` (line 34) | CREATE TABLE `namespaces` (`id` text,`deleted_at` datetime,PRIMARY KEY (... type `machines` (line 35) | CREATE TABLE `machines` (`id` text,PRIMARY KEY (`id`)) type `kvs` (line 36) | CREATE TABLE `kvs` (`id` text,PRIMARY KEY (`id`)) type `shared_machines` (line 37) | CREATE TABLE `shared_machines` (`id` text,`deleted_at` datetime,PRIMARY ... type `pre_auth_key_acl_tags` (line 38) | CREATE TABLE `pre_auth_key_acl_tags` (`id` text,PRIMARY KEY (`id`)) type `routes` (line 39) | CREATE TABLE `routes` (`id` text,`deleted_at` datetime,PRIMARY KEY (`id`)) type `idx_routes_deleted_at` (line 41) | CREATE INDEX `idx_routes_deleted_at` ON `routes`(`deleted_at`) type `idx_namespaces_deleted_at` (line 42) | CREATE INDEX `idx_namespaces_deleted_at` ON `namespaces`(`deleted_at`) type `idx_shared_machines_deleted_at` (line 43) | CREATE INDEX `idx_shared_machines_deleted_at` ON `shared_machines`(`dele... FILE: hscontrol/db/testdata/sqlite/request_tags_migration_test.sql type `migrations` (line 20) | CREATE TABLE `migrations` (`id` text,PRIMARY KEY (`id`)) type `users` (line 46) | CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at... type `pre_auth_keys` (line 52) | CREATE TABLE `pre_auth_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`ke... type `api_keys` (line 55) | CREATE TABLE `api_keys` (`id` integer PRIMARY KEY AUTOINCREMENT,`prefix`... type "nodes" (line 58) | CREATE TABLE IF NOT EXISTS "nodes" (`id` integer PRIMARY KEY AUTOINCREME... type `policies` (line 91) | CREATE TABLE `policies` (`id` integer PRIMARY KEY AUTOINCREMENT,`created... type idx_users_deleted_at (line 111) | CREATE INDEX idx_users_deleted_at ON users(deleted_at) type idx_api_keys_prefix (line 112) | CREATE UNIQUE INDEX idx_api_keys_prefix ON api_keys(prefix) type idx_policies_deleted_at (line 113) | CREATE INDEX idx_policies_deleted_at ON policies(deleted_at) type idx_provider_identifier (line 114) | CREATE UNIQUE INDEX idx_provider_identifier ON users(provider_identifier... type idx_name_provider_identifier (line 115) | CREATE UNIQUE INDEX idx_name_provider_identifier ON users(name, provider... type idx_name_no_provider_identifier (line 116) | CREATE UNIQUE INDEX idx_name_no_provider_identifier ON users(name) WHERE... type idx_pre_auth_keys_prefix (line 117) | CREATE UNIQUE INDEX IF NOT EXISTS idx_pre_auth_keys_prefix ON pre_auth_k... FILE: hscontrol/db/text_serialiser.go function isTextUnmarshaler (line 22) | func isTextUnmarshaler(rv reflect.Value) bool { function maybeInstantiatePtr (line 26) | func maybeInstantiatePtr(rv reflect.Value) { function decodingError (line 33) | func decodingError(name string, err error) error { type TextSerialiser (line 39) | type TextSerialiser struct method Scan (line 41) | func (TextSerialiser) Scan(ctx context.Context, field *schema.Field, d... method Value (line 94) | func (TextSerialiser) Value(ctx context.Context, field *schema.Field, ... FILE: hscontrol/db/user_update_test.go function TestUserUpdatePreservesUnchangedFields (line 16) | func TestUserUpdatePreservesUnchangedFields(t *testing.T) { function TestUserUpdateWithUpdatesMethod (line 82) | func TestUserUpdateWithUpdatesMethod(t *testing.T) { FILE: hscontrol/db/users.go method CreateUser (line 22) | func (hsdb *HSDatabase) CreateUser(user types.User) (*types.User, error) { function CreateUser (line 30) | func CreateUser(tx *gorm.DB, user types.User) (*types.User, error) { method DestroyUser (line 44) | func (hsdb *HSDatabase) DestroyUser(uid types.UserID) error { function DestroyUser (line 53) | func DestroyUser(tx *gorm.DB, uid types.UserID) error { method RenameUser (line 87) | func (hsdb *HSDatabase) RenameUser(uid types.UserID, newName string) err... function RenameUser (line 97) | func RenameUser(tx *gorm.DB, uid types.UserID, newName string) error { method GetUserByID (line 123) | func (hsdb *HSDatabase) GetUserByID(uid types.UserID) (*types.User, erro... function GetUserByID (line 127) | func GetUserByID(tx *gorm.DB, uid types.UserID) (*types.User, error) { method GetUserByOIDCIdentifier (line 139) | func (hsdb *HSDatabase) GetUserByOIDCIdentifier(id string) (*types.User,... function GetUserByOIDCIdentifier (line 145) | func GetUserByOIDCIdentifier(tx *gorm.DB, id string) (*types.User, error) { method ListUsers (line 157) | func (hsdb *HSDatabase) ListUsers(where ...*types.User) ([]types.User, e... function ListUsers (line 162) | func ListUsers(tx *gorm.DB, where ...*types.User) ([]types.User, error) { method GetUserByName (line 184) | func (hsdb *HSDatabase) GetUserByName(name string) (*types.User, error) { function ListNodesByUser (line 202) | func ListNodesByUser(tx *gorm.DB, uid types.UserID) (types.Nodes, error) { method CreateUserForTest (line 215) | func (hsdb *HSDatabase) CreateUserForTest(name ...string) *types.User { method CreateUsersForTest (line 233) | func (hsdb *HSDatabase) CreateUsersForTest(count int, namePrefix ...stri... FILE: hscontrol/db/users_test.go function TestCreateAndDestroyUser (line 13) | func TestCreateAndDestroyUser(t *testing.T) { function TestDestroyUserErrors (line 31) | func TestDestroyUserErrors(t *testing.T) { function TestRenameUser (line 175) | func TestRenameUser(t *testing.T) { FILE: hscontrol/db/versioncheck.go type DatabaseVersion (line 30) | type DatabaseVersion struct type semver (line 37) | type semver struct method String (line 43) | func (s semver) String() string { function parseVersion (line 50) | func parseVersion(s string) (semver, error) { function ensureDatabaseVersionTable (line 90) | func ensureDatabaseVersionTable(db *gorm.DB) error { function getDatabaseVersion (line 101) | func getDatabaseVersion(db *gorm.DB) (string, error) { function setDatabaseVersion (line 117) | func setDatabaseVersion(db *gorm.DB, version string) error { function isDev (line 144) | func isDev(version string) bool { function checkVersionUpgradePath (line 158) | func checkVersionUpgradePath(db *gorm.DB) error { FILE: hscontrol/db/versioncheck_test.go function TestParseVersion (line 13) | func TestParseVersion(t *testing.T) { function TestSemverString (line 54) | func TestSemverString(t *testing.T) { function TestIsDev (line 59) | func TestIsDev(t *testing.T) { function versionTestDB (line 69) | func versionTestDB(t *testing.T) *gorm.DB { function TestSetAndGetDatabaseVersion (line 81) | func TestSetAndGetDatabaseVersion(t *testing.T) { function TestEnsureDatabaseVersionTableIdempotent (line 106) | func TestEnsureDatabaseVersionTableIdempotent(t *testing.T) { function TestCheckVersionUpgradePathDirect (line 121) | func TestCheckVersionUpgradePathDirect(t *testing.T) { function checkVersionUpgradePathFromVersions (line 270) | func checkVersionUpgradePathFromVersions(db *gorm.DB, currentVersion str... FILE: hscontrol/debug.go method debugHTTPServer (line 15) | func (h *Headscale) debugHTTPServer() *http.Server { method debugBatcher (line 315) | func (h *Headscale) debugBatcher() string { type DebugBatcherInfo (line 374) | type DebugBatcherInfo struct type DebugBatcherNodeInfo (line 380) | type DebugBatcherNodeInfo struct method debugBatcherJSON (line 386) | func (h *Headscale) debugBatcherJSON() DebugBatcherInfo { FILE: hscontrol/derp/derp.go function loadDERPMapFromPath (line 25) | func loadDERPMapFromPath(path string) (*tailcfg.DERPMap, error) { function loadDERPMapFromURL (line 44) | func loadDERPMapFromURL(addr url.URL) (*tailcfg.DERPMap, error) { function mergeDERPMaps (line 81) | func mergeDERPMaps(derpMaps []*tailcfg.DERPMap) *tailcfg.DERPMap { function GetDERPMap (line 100) | func GetDERPMap(cfg types.DERPConfig) (*tailcfg.DERPMap, error) { function shuffleDERPMap (line 130) | func shuffleDERPMap(dm *tailcfg.DERPMap) { function derpRandom (line 163) | func derpRandom() *rand.Rand { function resetDerpRandomForTesting (line 177) | func resetDerpRandomForTesting() { function shuffleRegionNoClone (line 185) | func shuffleRegionNoClone(r *tailcfg.DERPRegion) *tailcfg.DERPRegion { FILE: hscontrol/derp/derp_test.go function TestShuffleDERPMapDeterministic (line 11) | func TestShuffleDERPMapDeterministic(t *testing.T) { function TestShuffleDERPMapEdgeCases (line 260) | func TestShuffleDERPMapEdgeCases(t *testing.T) { function TestShuffleDERPMapWithoutBaseDomain (line 312) | func TestShuffleDERPMapWithoutBaseDomain(t *testing.T) { FILE: hscontrol/derp/server/derp_server.go constant fastStartHeader (line 36) | fastStartHeader = "Derp-Fast-Start" constant DerpVerifyScheme (line 37) | DerpVerifyScheme = "headscale-derp-verify" type DERPServer (line 45) | type DERPServer struct method GenerateRegion (line 73) | func (d *DERPServer) GenerateRegion() (tailcfg.DERPRegion, error) { method DERPHandler (line 150) | func (d *DERPServer) DERPHandler( method serveWebsocket (line 185) | func (d *DERPServer) serveWebsocket(writer http.ResponseWriter, req *h... method servePlain (line 228) | func (d *DERPServer) servePlain(writer http.ResponseWriter, req *http.... method ServeSTUN (line 357) | func (d *DERPServer) ServeSTUN() { function NewDERPServer (line 52) | func NewDERPServer( function DERPProbeHandler (line 284) | func DERPProbeHandler( function DERPBootstrapDNSHandler (line 313) | func DERPBootstrapDNSHandler( function serverSTUNListener (line 373) | func serverSTUNListener(ctx context.Context, packetConn *net.UDPConn) { function NewDERPVerifyTransport (line 428) | func NewDERPVerifyTransport(handleVerifyRequest func(*http.Request, io.W... type DERPVerifyTransport (line 434) | type DERPVerifyTransport struct method RoundTrip (line 438) | func (t *DERPVerifyTransport) RoundTrip(req *http.Request) (*http.Resp... FILE: hscontrol/dns/extrarecords.go type ExtraRecordsMan (line 22) | type ExtraRecordsMan struct method Records (line 75) | func (e *ExtraRecordsMan) Records() []tailcfg.DNSRecord { method Run (line 82) | func (e *ExtraRecordsMan) Run() { method Close (line 139) | func (e *ExtraRecordsMan) Close() { method UpdateCh (line 144) | func (e *ExtraRecordsMan) UpdateCh() <-chan []tailcfg.DNSRecord { method updateRecords (line 148) | func (e *ExtraRecordsMan) updateRecords() { function NewExtraRecordsManager (line 34) | func NewExtraRecordsManager(path string) (*ExtraRecordsMan, error) { function readExtraRecordsFromPath (line 182) | func readExtraRecordsFromPath(path string) ([]tailcfg.DNSRecord, [32]byt... FILE: hscontrol/grpcv1.go type headscaleV1APIServer (line 35) | type headscaleV1APIServer struct method CreateUser (line 46) | func (api headscaleV1APIServer) CreateUser( method RenameUser (line 68) | func (api headscaleV1APIServer) RenameUser( method DeleteUser (line 93) | func (api headscaleV1APIServer) DeleteUser( method ListUsers (line 113) | func (api headscaleV1APIServer) ListUsers( method CreatePreAuthKey (line 146) | func (api headscaleV1APIServer) CreatePreAuthKey( method ExpirePreAuthKey (line 187) | func (api headscaleV1APIServer) ExpirePreAuthKey( method DeletePreAuthKey (line 199) | func (api headscaleV1APIServer) DeletePreAuthKey( method ListPreAuthKeys (line 211) | func (api headscaleV1APIServer) ListPreAuthKeys( method RegisterNode (line 232) | func (api headscaleV1APIServer) RegisterNode( method GetNode (line 301) | func (api headscaleV1APIServer) GetNode( method SetTags (line 315) | func (api headscaleV1APIServer) SetTags( method SetApprovedRoutes (line 365) | func (api headscaleV1APIServer) SetApprovedRoutes( method DeleteNode (line 431) | func (api headscaleV1APIServer) DeleteNode( method ExpireNode (line 450) | func (api headscaleV1APIServer) ExpireNode( method RenameNode (line 504) | func (api headscaleV1APIServer) RenameNode( method ListNodes (line 525) | func (api headscaleV1APIServer) ListNodes( method BackfillNodeIPs (line 573) | func (api headscaleV1APIServer) BackfillNodeIPs( method CreateApiKey (line 591) | func (api headscaleV1APIServer) CreateApiKey( method getAPIKey (line 616) | func (api headscaleV1APIServer) getAPIKey(req apiKeyIdentifier) (*type... method ExpireApiKey (line 632) | func (api headscaleV1APIServer) ExpireApiKey( method ListApiKeys (line 649) | func (api headscaleV1APIServer) ListApiKeys( method DeleteApiKey (line 670) | func (api headscaleV1APIServer) DeleteApiKey( method GetPolicy (line 686) | func (api headscaleV1APIServer) GetPolicy( method SetPolicy (line 722) | func (api headscaleV1APIServer) SetPolicy( method DebugCreateNode (line 785) | func (api headscaleV1APIServer) DebugCreateNode( method Health (line 839) | func (api headscaleV1APIServer) Health( method AuthRegister (line 859) | func (api headscaleV1APIServer) AuthRegister( method AuthApprove (line 874) | func (api headscaleV1APIServer) AuthApprove( method AuthReject (line 893) | func (api headscaleV1APIServer) AuthReject( method mustEmbedUnimplementedHeadscaleServiceServer (line 914) | func (api headscaleV1APIServer) mustEmbedUnimplementedHeadscaleService... function newHeadscaleV1APIServer (line 40) | func newHeadscaleV1APIServer(h *Headscale) v1.HeadscaleServiceServer { function validateTag (line 418) | func validateTag(tag string) error { function nodesToProto (line 551) | func nodesToProto(state *state.State, nodes views.Slice[types.NodeView])... type apiKeyIdentifier (line 609) | type apiKeyIdentifier interface FILE: hscontrol/grpcv1_test.go function Test_validateTag (line 18) | func Test_validateTag(t *testing.T) { function TestSetTags_Conversion (line 62) | func TestSetTags_Conversion(t *testing.T) { function TestSetTags_TaggedNode (line 161) | func TestSetTags_TaggedNode(t *testing.T) { function TestSetTags_CannotRemoveAllTags (line 218) | func TestSetTags_CannotRemoveAllTags(t *testing.T) { function TestDeleteUser_ReturnsProperChangeSignal (line 270) | func TestDeleteUser_ReturnsProperChangeSignal(t *testing.T) { function TestDeleteUser_TaggedNodeSurvives (line 291) | func TestDeleteUser_TaggedNodeSurvives(t *testing.T) { function TestExpireApiKey_ByID (line 362) | func TestExpireApiKey_ByID(t *testing.T) { function TestExpireApiKey_ByPrefix (line 394) | func TestExpireApiKey_ByPrefix(t *testing.T) { function TestDeleteApiKey_ByID (line 420) | func TestDeleteApiKey_ByID(t *testing.T) { function TestDeleteApiKey_ByPrefix (line 451) | func TestDeleteApiKey_ByPrefix(t *testing.T) { function TestExpireApiKey_NoIdentifier (line 482) | func TestExpireApiKey_NoIdentifier(t *testing.T) { function TestDeleteApiKey_NoIdentifier (line 497) | func TestDeleteApiKey_NoIdentifier(t *testing.T) { function TestExpireApiKey_BothIdentifiers (line 512) | func TestExpireApiKey_BothIdentifiers(t *testing.T) { function TestDeleteApiKey_BothIdentifiers (line 530) | func TestDeleteApiKey_BothIdentifiers(t *testing.T) { FILE: hscontrol/handlers.go constant NoiseCapabilityVersion (line 31) | NoiseCapabilityVersion = 39 constant reservedResponseHeaderSize (line 33) | reservedResponseHeaderSize = 4 function httpError (line 37) | func httpError(w http.ResponseWriter, err error) { type HTTPError (line 48) | type HTTPError struct method Error (line 54) | func (e HTTPError) Error() string { return fmt.Sprintf("http error[%d]... method Unwrap (line 55) | func (e HTTPError) Unwrap() error { return e.Err } function NewHTTPError (line 58) | func NewHTTPError(code int, msg string, err error) HTTPError { function parseCapabilityVersion (line 68) | func parseCapabilityVersion(req *http.Request) (tailcfg.CapabilityVersio... method handleVerifyRequest (line 83) | func (h *Headscale) handleVerifyRequest( method VerifyHandler (line 118) | func (h *Headscale) VerifyHandler( method KeyHandler (line 138) | func (h *Headscale) KeyHandler( method HealthHandler (line 166) | func (h *Headscale) HealthHandler( method RobotsHandler (line 201) | func (h *Headscale) RobotsHandler( method VersionHandler (line 219) | func (h *Headscale) VersionHandler( type AuthProviderWeb (line 237) | type AuthProviderWeb struct method RegisterURL (line 247) | func (a *AuthProviderWeb) RegisterURL(authID types.AuthID) string { method AuthURL (line 254) | func (a *AuthProviderWeb) AuthURL(authID types.AuthID) string { method AuthHandler (line 261) | func (a *AuthProviderWeb) AuthHandler( method RegisterHandler (line 306) | func (a *AuthProviderWeb) RegisterHandler( function NewAuthProviderWeb (line 241) | func NewAuthProviderWeb(serverURL string) *AuthProviderWeb { function authIDFromRequest (line 284) | func authIDFromRequest(req *http.Request) (types.AuthID, error) { function FaviconHandler (line 329) | func FaviconHandler(writer http.ResponseWriter, req *http.Request) { function BlankHandler (line 335) | func BlankHandler(writer http.ResponseWriter, res *http.Request) { FILE: hscontrol/mapper/batcher.go constant offlineNodeCleanupThreshold (line 31) | offlineNodeCleanupThreshold = 15 * time.Minute function NewBatcher (line 39) | func NewBatcher(batchTime time.Duration, workers int, mapper *mapper) *B... function NewBatcherAndMapper (line 53) | func NewBatcherAndMapper(cfg *types.Config, state *state.State) *Batcher { type nodeConnection (line 62) | type nodeConnection interface function generateMapResponse (line 73) | func generateMapResponse(nc nodeConnection, mapper *mapper, r change.Cha... function handleNodeChange (line 135) | func handleNodeChange(nc nodeConnection, mapper *mapper, r change.Change... type workResult (line 167) | type workResult struct type work (line 177) | type work struct type Batcher (line 197) | type Batcher struct method AddNode (line 226) | func (b *Batcher) AddNode( method RemoveNode (line 308) | func (b *Batcher) RemoveNode(id types.NodeID, c chan<- *tailcfg.MapRes... method AddWork (line 341) | func (b *Batcher) AddWork(r ...change.Change) { method Start (line 345) | func (b *Batcher) Start() { method Close (line 355) | func (b *Batcher) Close() { method doWork (line 385) | func (b *Batcher) doWork() { method worker (line 413) | func (b *Batcher) worker(workerID int) { method queueWork (line 500) | func (b *Batcher) queueWork(w work) { method addToBatch (line 513) | func (b *Batcher) addToBatch(changes ...change.Change) { method processBatchedChanges (line 586) | func (b *Batcher) processBatchedChanges() { method cleanupOfflineNodes (line 609) | func (b *Batcher) cleanupOfflineNodes() { method IsConnected (line 661) | func (b *Batcher) IsConnected(id types.NodeID) bool { method ConnectedMap (line 672) | func (b *Batcher) ConnectedMap() *xsync.Map[types.NodeID, bool] { method MapResponseFromChange (line 688) | func (b *Batcher) MapResponseFromChange(id types.NodeID, ch change.Cha... method Debug (line 710) | func (b *Batcher) Debug() map[types.NodeID]DebugNodeInfo { method DebugMapResponses (line 729) | func (b *Batcher) DebugMapResponses() (map[types.NodeID][]tailcfg.MapR... method WorkErrors (line 735) | func (b *Batcher) WorkErrors() int64 { type DebugNodeInfo (line 704) | type DebugNodeInfo struct FILE: hscontrol/mapper/batcher_bench_test.go function BenchmarkConnectionEntry_Send (line 31) | func BenchmarkConnectionEntry_Send(b *testing.B) { function BenchmarkMultiChannelSend (line 44) | func BenchmarkMultiChannelSend(b *testing.B) { function BenchmarkComputePeerDiff (line 67) | func BenchmarkComputePeerDiff(b *testing.B) { function BenchmarkUpdateSentPeers (line 95) | func BenchmarkUpdateSentPeers(b *testing.B) { function benchBatcher (line 151) | func benchBatcher(nodeCount, bufferSize int) (*Batcher, map[types.NodeID... function BenchmarkAddToBatch_Broadcast (line 184) | func BenchmarkAddToBatch_Broadcast(b *testing.B) { function BenchmarkAddToBatch_Targeted (line 215) | func BenchmarkAddToBatch_Targeted(b *testing.B) { function BenchmarkAddToBatch_FullUpdate (line 253) | func BenchmarkAddToBatch_FullUpdate(b *testing.B) { function BenchmarkProcessBatchedChanges (line 277) | func BenchmarkProcessBatchedChanges(b *testing.B) { function BenchmarkBroadcastToN (line 313) | func BenchmarkBroadcastToN(b *testing.B) { function BenchmarkMultiChannelBroadcast (line 341) | func BenchmarkMultiChannelBroadcast(b *testing.B) { function BenchmarkConcurrentAddToBatch (line 389) | func BenchmarkConcurrentAddToBatch(b *testing.B) { function BenchmarkIsConnected (line 442) | func BenchmarkIsConnected(b *testing.B) { function BenchmarkConnectedMap (line 466) | func BenchmarkConnectedMap(b *testing.B) { function BenchmarkConnectionChurn (line 501) | func BenchmarkConnectionChurn(b *testing.B) { function BenchmarkConcurrentSendAndChurn (line 547) | func BenchmarkConcurrentSendAndChurn(b *testing.B) { function BenchmarkAddNode (line 618) | func BenchmarkAddNode(b *testing.B) { function BenchmarkFullPipeline (line 681) | func BenchmarkFullPipeline(b *testing.B) { function BenchmarkMapResponseFromChange (line 736) | func BenchmarkMapResponseFromChange(b *testing.B) { FILE: hscontrol/mapper/batcher_concurrency_test.go type lightweightBatcher (line 37) | type lightweightBatcher struct method cleanup (line 79) | func (lb *lightweightBatcher) cleanup() { function setupLightweightBatcher (line 46) | func setupLightweightBatcher(t *testing.T, nodeCount, bufferSize int) *l... function countTotalPending (line 87) | func countTotalPending(b *Batcher) int { function countNodesPending (line 102) | func countNodesPending(b *Batcher) int { function getPendingForNode (line 121) | func getPendingForNode(b *Batcher, id types.NodeID) []change.Change { function runConcurrently (line 137) | func runConcurrently(t *testing.T, n int, fn func(i int)) int { function runConcurrentlyWithTimeout (line 168) | func runConcurrentlyWithTimeout(t *testing.T, n int, timeout time.Durati... function TestAddToBatch_ConcurrentTargeted_NoDataLoss (line 198) | func TestAddToBatch_ConcurrentTargeted_NoDataLoss(t *testing.T) { function TestAddToBatch_ConcurrentBroadcast (line 233) | func TestAddToBatch_ConcurrentBroadcast(t *testing.T) { function TestAddToBatch_FullUpdateOverrides (line 254) | func TestAddToBatch_FullUpdateOverrides(t *testing.T) { function TestAddToBatch_NodeRemovalCleanup (line 284) | func TestAddToBatch_NodeRemovalCleanup(t *testing.T) { function TestProcessBatchedChanges_QueuesWork (line 316) | func TestProcessBatchedChanges_QueuesWork(t *testing.T) { function TestProcessBatchedChanges_ConcurrentAdd_NoDataLoss (line 346) | func TestProcessBatchedChanges_ConcurrentAdd_NoDataLoss(t *testing.T) { function TestProcessBatchedChanges_EmptyPending (line 416) | func TestProcessBatchedChanges_EmptyPending(t *testing.T) { function TestProcessBatchedChanges_BundlesChangesPerNode (line 430) | func TestProcessBatchedChanges_BundlesChangesPerNode(t *testing.T) { function TestWorkMu_PreventsInterTickRace (line 475) | func TestWorkMu_PreventsInterTickRace(t *testing.T) { function TestCleanupOfflineNodes_RemovesOld (line 540) | func TestCleanupOfflineNodes_RemovesOld(t *testing.T) { function TestCleanupOfflineNodes_KeepsRecent (line 565) | func TestCleanupOfflineNodes_KeepsRecent(t *testing.T) { function TestCleanupOfflineNodes_KeepsActive (line 586) | func TestCleanupOfflineNodes_KeepsActive(t *testing.T) { function TestBatcher_CloseStopsWorkers (line 610) | func TestBatcher_CloseStopsWorkers(t *testing.T) { function TestBatcher_CloseMultipleTimes_DoubleClosePanic (line 646) | func TestBatcher_CloseMultipleTimes_DoubleClosePanic(t *testing.T) { function TestBatcher_MapResponseDuringShutdown (line 665) | func TestBatcher_MapResponseDuringShutdown(t *testing.T) { function TestBatcher_IsConnectedReflectsState (line 677) | func TestBatcher_IsConnectedReflectsState(t *testing.T) { function TestBatcher_ConnectedMapConsistency (line 706) | func TestBatcher_ConnectedMapConsistency(t *testing.T) { function TestBug3_CleanupOfflineNodes_TOCTOU (line 752) | func TestBug3_CleanupOfflineNodes_TOCTOU(t *testing.T) { function TestBug5_WorkerPanicKillsWorkerPermanently (line 850) | func TestBug5_WorkerPanicKillsWorkerPermanently(t *testing.T) { function TestBug6_StartCalledMultipleTimes_GoroutineLeak (line 928) | func TestBug6_StartCalledMultipleTimes_GoroutineLeak(t *testing.T) { function TestBug7_CleanupOfflineNodes_PendingChangesCleanedStructurally (line 991) | func TestBug7_CleanupOfflineNodes_PendingChangesCleanedStructurally(t *t... function TestBug8_SerialTimeoutUnderWriteLock (line 1043) | func TestBug8_SerialTimeoutUnderWriteLock(t *testing.T) { function TestBug1_BroadcastNoDataLoss (line 1100) | func TestBug1_BroadcastNoDataLoss(t *testing.T) { function TestScale1000_AddToBatch_Broadcast (line 1145) | func TestScale1000_AddToBatch_Broadcast(t *testing.T) { function TestScale1000_ProcessBatchedWithConcurrentAdd (line 1178) | func TestScale1000_ProcessBatchedWithConcurrentAdd(t *testing.T) { function TestScale1000_MultiChannelBroadcast (line 1233) | func TestScale1000_MultiChannelBroadcast(t *testing.T) { function TestScale1000_ConnectionChurn (line 1336) | func TestScale1000_ConnectionChurn(t *testing.T) { function TestScale1000_ConcurrentAddRemove (line 1438) | func TestScale1000_ConcurrentAddRemove(t *testing.T) { function TestScale1000_IsConnectedConsistency (line 1482) | func TestScale1000_IsConnectedConsistency(t *testing.T) { function TestScale1000_BroadcastDuringNodeChurn (line 1551) | func TestScale1000_BroadcastDuringNodeChurn(t *testing.T) { function TestScale1000_WorkChannelSaturation (line 1638) | func TestScale1000_WorkChannelSaturation(t *testing.T) { function TestScale1000_FullUpdate_AllNodesGetPending (line 1716) | func TestScale1000_FullUpdate_AllNodesGetPending(t *testing.T) { function TestScale1000_AllToAll_FullPipeline (line 1750) | func TestScale1000_AllToAll_FullPipeline(t *testing.T) { FILE: hscontrol/mapper/batcher_scale_bench_test.go function BenchmarkScale_IsConnected (line 42) | func BenchmarkScale_IsConnected(b *testing.B) { function BenchmarkScale_AddToBatch_Targeted (line 67) | func BenchmarkScale_AddToBatch_Targeted(b *testing.B) { function BenchmarkScale_ConnectionChurn (line 106) | func BenchmarkScale_ConnectionChurn(b *testing.B) { function BenchmarkScale_AddToBatch_Broadcast (line 154) | func BenchmarkScale_AddToBatch_Broadcast(b *testing.B) { function BenchmarkScale_AddToBatch_FullUpdate (line 184) | func BenchmarkScale_AddToBatch_FullUpdate(b *testing.B) { function BenchmarkScale_ProcessBatchedChanges (line 207) | func BenchmarkScale_ProcessBatchedChanges(b *testing.B) { function BenchmarkScale_BroadcastToN (line 240) | func BenchmarkScale_BroadcastToN(b *testing.B) { function BenchmarkScale_SendToAll (line 269) | func BenchmarkScale_SendToAll(b *testing.B) { function BenchmarkScale_ConnectedMap (line 302) | func BenchmarkScale_ConnectedMap(b *testing.B) { function BenchmarkScale_ComputePeerDiff (line 337) | func BenchmarkScale_ComputePeerDiff(b *testing.B) { function BenchmarkScale_UpdateSentPeers_Full (line 368) | func BenchmarkScale_UpdateSentPeers_Full(b *testing.B) { function BenchmarkScale_UpdateSentPeers_Incremental (line 393) | func BenchmarkScale_UpdateSentPeers_Incremental(b *testing.B) { function BenchmarkScale_MultiChannelBroadcast (line 430) | func BenchmarkScale_MultiChannelBroadcast(b *testing.B) { function BenchmarkScale_ConcurrentAddToBatch (line 482) | func BenchmarkScale_ConcurrentAddToBatch(b *testing.B) { function BenchmarkScale_ConcurrentSendAndChurn (line 531) | func BenchmarkScale_ConcurrentSendAndChurn(b *testing.B) { function BenchmarkScale_MixedWorkload (line 604) | func BenchmarkScale_MixedWorkload(b *testing.B) { function BenchmarkScale_AddAllNodes (line 720) | func BenchmarkScale_AddAllNodes(b *testing.B) { function BenchmarkScale_SingleAddNode (line 783) | func BenchmarkScale_SingleAddNode(b *testing.B) { function BenchmarkScale_MapResponse_DERPMap (line 849) | func BenchmarkScale_MapResponse_DERPMap(b *testing.B) { function BenchmarkScale_MapResponse_FullUpdate (line 901) | func BenchmarkScale_MapResponse_FullUpdate(b *testing.B) { FILE: hscontrol/mapper/batcher_test.go type batcherFunc (line 28) | type batcherFunc type batcherTestCase (line 31) | type batcherTestCase struct type testBatcherWrapper (line 38) | type testBatcherWrapper struct method AddNode (line 48) | func (t *testBatcherWrapper) AddNode(id types.NodeID, c chan<- *tailcf... method RemoveNode (line 76) | func (t *testBatcherWrapper) RemoveNode(id types.NodeID, c chan<- *tai... function wrapBatcherForTest (line 103) | func wrapBatcherForTest(b *Batcher, state *state.State) *testBatcherWrap... function emptyCache (line 113) | func emptyCache() *zcache.Cache[types.AuthID, types.AuthRequest] { constant testUserCount (line 120) | testUserCount = 3 constant testNodesPerUser (line 121) | testNodesPerUser = 2 constant testTimeout (line 124) | testTimeout = 120 * time.Second constant updateTimeout (line 125) | updateTimeout = 5 * time.Second constant deadlockTimeout (line 126) | deadlockTimeout = 30 * time.Second constant normalBufferSize (line 129) | normalBufferSize = 50 constant smallBufferSize (line 130) | smallBufferSize = 3 constant tinyBufferSize (line 131) | tinyBufferSize = 1 constant largeBufferSize (line 132) | largeBufferSize = 200 type TestData (line 136) | type TestData struct type node (line 145) | type node struct method start (line 401) | func (n *node) start() { method cleanup (line 471) | func (n *node) cleanup() NodeStats { function setupBatcherWithTestData (line 167) | func setupBatcherWithTestData( type UpdateStats (line 286) | type UpdateStats struct type updateTracker (line 293) | type updateTracker struct method recordUpdate (line 306) | func (ut *updateTracker) recordUpdate(nodeID types.NodeID, updateSize ... method getStats (line 323) | func (ut *updateTracker) getStats(nodeID types.NodeID) UpdateStats { method getAllStats (line 340) | func (ut *updateTracker) getAllStats() map[types.NodeID]UpdateStats { function newUpdateTracker (line 299) | func newUpdateTracker() *updateTracker { function assertDERPMapResponse (line 356) | func assertDERPMapResponse(t *testing.T, resp *tailcfg.MapResponse) { function assertOnlineMapResponse (line 364) | func assertOnlineMapResponse(t *testing.T, resp *tailcfg.MapResponse, ex... type UpdateInfo (line 381) | type UpdateInfo struct function parseUpdateAndAnalyze (line 390) | func parseUpdateAndAnalyze(resp *tailcfg.MapResponse) UpdateInfo { type NodeStats (line 462) | type NodeStats struct function validateUpdateContent (line 487) | func validateUpdateContent(resp *tailcfg.MapResponse) (bool, string) { function TestEnhancedNodeTracking (line 497) | func TestEnhancedNodeTracking(t *testing.T) { function TestEnhancedTrackingWithBatcher (line 535) | func TestEnhancedTrackingWithBatcher(t *testing.T) { function TestBatcherScalabilityAllToAll (line 585) | func TestBatcherScalabilityAllToAll(t *testing.T) { function TestBatcherBasicOperations (line 817) | func TestBatcherBasicOperations(t *testing.T) { function drainChannelTimeout (line 916) | func drainChannelTimeout(ch <-chan *tailcfg.MapResponse, timeout time.Du... function TestBatcherWorkQueueBatching (line 1040) | func TestBatcherWorkQueueBatching(t *testing.T) { function TestBatcherWorkerChannelSafety (line 1131) | func TestBatcherWorkerChannelSafety(t *testing.T) { function TestBatcherConcurrentClients (line 1261) | func TestBatcherConcurrentClients(t *testing.T) { function TestBatcherFullPeerUpdates (line 1538) | func TestBatcherFullPeerUpdates(t *testing.T) { function TestBatcherRapidReconnection (line 1687) | func TestBatcherRapidReconnection(t *testing.T) { function TestBatcherMultiConnection (line 1816) | func TestBatcherMultiConnection(t *testing.T) { function TestNodeDeletedWhileChangesPending (line 2047) | func TestNodeDeletedWhileChangesPending(t *testing.T) { function TestRemoveNodeChannelAlreadyRemoved (line 2162) | func TestRemoveNodeChannelAlreadyRemoved(t *testing.T) { function unwrapBatcher (line 2226) | func unwrapBatcher(b *testBatcherWrapper) *Batcher { FILE: hscontrol/mapper/batcher_unit_test.go type mockNodeConnection (line 30) | type mockNodeConnection struct method withSendError (line 55) | func (m *mockNodeConnection) withSendError(err error) *mockNodeConnect... method nodeID (line 60) | func (m *mockNodeConnection) nodeID() types.NodeID { ret... method version (line 61) | func (m *mockNodeConnection) version() tailcfg.CapabilityVersion { ret... method send (line 63) | func (m *mockNodeConnection) send(data *tailcfg.MapResponse) error { method computePeerDiff (line 75) | func (m *mockNodeConnection) computePeerDiff(currentPeers []tailcfg.No... method updateSentPeers (line 94) | func (m *mockNodeConnection) updateSentPeers(resp *tailcfg.MapResponse) { method getSent (line 117) | func (m *mockNodeConnection) getSent() []*tailcfg.MapResponse { function newMockNodeConnection (line 46) | func newMockNodeConnection(id types.NodeID) *mockNodeConnection { function testMapResponse (line 129) | func testMapResponse() *tailcfg.MapResponse { function testMapResponseWithPeers (line 138) | func testMapResponseWithPeers(peerIDs ...tailcfg.NodeID) *tailcfg.MapRes... function ids (line 150) | func ids(nodeIDs ...tailcfg.NodeID) []tailcfg.NodeID { function expectReceive (line 155) | func expectReceive(t *testing.T, ch <-chan *tailcfg.MapResponse, msg str... function expectNoReceive (line 170) | func expectNoReceive(t *testing.T, ch <-chan *tailcfg.MapResponse, timeo... function makeConnectionEntry (line 182) | func makeConnectionEntry(id string, ch chan<- *tailcfg.MapResponse) *con... function TestConnectionEntry_SendSuccess (line 198) | func TestConnectionEntry_SendSuccess(t *testing.T) { function TestConnectionEntry_SendNilData (line 215) | func TestConnectionEntry_SendNilData(t *testing.T) { function TestConnectionEntry_SendTimeout (line 225) | func TestConnectionEntry_SendTimeout(t *testing.T) { function TestConnectionEntry_SendClosed (line 240) | func TestConnectionEntry_SendClosed(t *testing.T) { function TestConnectionEntry_SendUpdatesLastUsed (line 254) | func TestConnectionEntry_SendUpdatesLastUsed(t *testing.T) { function TestMultiChannelSend_AllSuccess (line 273) | func TestMultiChannelSend_AllSuccess(t *testing.T) { function TestMultiChannelSend_PartialFailure (line 298) | func TestMultiChannelSend_PartialFailure(t *testing.T) { function TestMultiChannelSend_AllFail (line 321) | func TestMultiChannelSend_AllFail(t *testing.T) { function TestMultiChannelSend_ZeroConnections (line 337) | func TestMultiChannelSend_ZeroConnections(t *testing.T) { function TestMultiChannelSend_NilData (line 346) | func TestMultiChannelSend_NilData(t *testing.T) { function TestMultiChannelSend_FailedConnectionRemoved (line 357) | func TestMultiChannelSend_FailedConnectionRemoved(t *testing.T) { function TestMultiChannelSend_UpdateCount (line 379) | func TestMultiChannelSend_UpdateCount(t *testing.T) { function TestMultiChannelClose_MarksEntriesClosed (line 397) | func TestMultiChannelClose_MarksEntriesClosed(t *testing.T) { function TestMultiChannelClose_PreventsSendPanic (line 415) | func TestMultiChannelClose_PreventsSendPanic(t *testing.T) { function TestMultiChannelNodeConn_AddRemoveConnections (line 434) | func TestMultiChannelNodeConn_AddRemoveConnections(t *testing.T) { function TestMultiChannelNodeConn_Version (line 466) | func TestMultiChannelNodeConn_Version(t *testing.T) { function TestComputePeerDiff (line 485) | func TestComputePeerDiff(t *testing.T) { function TestUpdateSentPeers (line 563) | func TestUpdateSentPeers(t *testing.T) { function TestGenerateMapResponse_EmptyChange (line 678) | func TestGenerateMapResponse_EmptyChange(t *testing.T) { function TestGenerateMapResponse_InvalidNodeID (line 687) | func TestGenerateMapResponse_InvalidNodeID(t *testing.T) { function TestGenerateMapResponse_NilMapper (line 696) | func TestGenerateMapResponse_NilMapper(t *testing.T) { function TestGenerateMapResponse_SelfOnlyOtherNode (line 705) | func TestGenerateMapResponse_SelfOnlyOtherNode(t *testing.T) { function TestGenerateMapResponse_SelfOnlySameNode (line 717) | func TestGenerateMapResponse_SelfOnlySameNode(t *testing.T) { function TestHandleNodeChange_NilConnection (line 733) | func TestHandleNodeChange_NilConnection(t *testing.T) { function TestHandleNodeChange_EmptyChange (line 739) | func TestHandleNodeChange_EmptyChange(t *testing.T) { function TestHandleNodeChange_SendError (line 750) | func TestHandleNodeChange_SendError(t *testing.T) { function TestHandleNodeChange_NilDataNoSend (line 762) | func TestHandleNodeChange_NilDataNoSend(t *testing.T) { function TestConnectionEntry_ConcurrentSends (line 777) | func TestConnectionEntry_ConcurrentSends(t *testing.T) { function TestConnectionEntry_ConcurrentSendAndClose (line 814) | func TestConnectionEntry_ConcurrentSendAndClose(t *testing.T) { function TestMultiChannelSend_ConcurrentAddAndSend (line 856) | func TestMultiChannelSend_ConcurrentAddAndSend(t *testing.T) { function TestMultiChannelSend_ConcurrentRemoveAndSend (line 903) | func TestMultiChannelSend_ConcurrentRemoveAndSend(t *testing.T) { function TestConnectionEntry_SendFastPath_TimerStopped (line 963) | func TestConnectionEntry_SendFastPath_TimerStopped(t *testing.T) { function TestBatcher_CloseWaitsForWorkers (line 1003) | func TestBatcher_CloseWaitsForWorkers(t *testing.T) { function TestBatcher_CloseThenStartIsNoop (line 1033) | func TestBatcher_CloseThenStartIsNoop(t *testing.T) { function TestBatcher_CloseStopsTicker (line 1056) | func TestBatcher_CloseStopsTicker(t *testing.T) { function TestBatcher_CloseBeforeStart_DoesNotHang (line 1081) | func TestBatcher_CloseBeforeStart_DoesNotHang(t *testing.T) { function TestBatcher_QueueWorkAfterClose_DoesNotHang (line 1103) | func TestBatcher_QueueWorkAfterClose_DoesNotHang(t *testing.T) { function TestIsConnected_FalseAfterAddNodeFailure (line 1127) | func TestIsConnected_FalseAfterAddNodeFailure(t *testing.T) { function TestRemoveConnectionAtIndex_NilsTrailingSlot (line 1156) | func TestRemoveConnectionAtIndex_NilsTrailingSlot(t *testing.T) { FILE: hscontrol/mapper/builder.go type MapResponseBuilder (line 16) | type MapResponseBuilder struct method addError (line 51) | func (b *MapResponseBuilder) addError(err error) { method hasErrors (line 58) | func (b *MapResponseBuilder) hasErrors() bool { method WithCapabilityVersion (line 63) | func (b *MapResponseBuilder) WithCapabilityVersion(capVer tailcfg.Capa... method WithSelfNode (line 69) | func (b *MapResponseBuilder) WithSelfNode() *MapResponseBuilder { method WithDebugType (line 94) | func (b *MapResponseBuilder) WithDebugType(t debugType) *MapResponseBu... method WithDERPMap (line 103) | func (b *MapResponseBuilder) WithDERPMap() *MapResponseBuilder { method WithDomain (line 109) | func (b *MapResponseBuilder) WithDomain() *MapResponseBuilder { method WithCollectServicesDisabled (line 115) | func (b *MapResponseBuilder) WithCollectServicesDisabled() *MapRespons... method WithDebugConfig (line 122) | func (b *MapResponseBuilder) WithDebugConfig() *MapResponseBuilder { method WithSSHPolicy (line 131) | func (b *MapResponseBuilder) WithSSHPolicy() *MapResponseBuilder { method WithDNSConfig (line 150) | func (b *MapResponseBuilder) WithDNSConfig() *MapResponseBuilder { method WithUserProfiles (line 163) | func (b *MapResponseBuilder) WithUserProfiles(peers views.Slice[types.... method WithPacketFilters (line 176) | func (b *MapResponseBuilder) WithPacketFilters() *MapResponseBuilder { method WithPeers (line 204) | func (b *MapResponseBuilder) WithPeers(peers views.Slice[types.NodeVie... method WithPeerChanges (line 217) | func (b *MapResponseBuilder) WithPeerChanges(peers views.Slice[types.N... method buildTailPeers (line 230) | func (b *MapResponseBuilder) buildTailPeers(peers views.Slice[types.No... method WithPeerChangedPatch (line 273) | func (b *MapResponseBuilder) WithPeerChangedPatch(changes []*tailcfg.P... method WithPeersRemoved (line 279) | func (b *MapResponseBuilder) WithPeersRemoved(removedIDs ...types.Node... method Build (line 291) | func (b *MapResponseBuilder) Build() (*tailcfg.MapResponse, error) { type debugType (line 26) | type debugType constant fullResponseDebug (line 29) | fullResponseDebug debugType = "full" constant selfResponseDebug (line 30) | selfResponseDebug debugType = "self" constant changeResponseDebug (line 31) | changeResponseDebug debugType = "change" constant policyResponseDebug (line 32) | policyResponseDebug debugType = "policy" method NewMapResponseBuilder (line 36) | func (m *mapper) NewMapResponseBuilder(nodeID types.NodeID) *MapResponse... FILE: hscontrol/mapper/builder_test.go function TestMapResponseBuilder_Basic (line 14) | func TestMapResponseBuilder_Basic(t *testing.T) { function TestMapResponseBuilder_WithCapabilityVersion (line 41) | func TestMapResponseBuilder_WithCapabilityVersion(t *testing.T) { function TestMapResponseBuilder_WithDomain (line 59) | func TestMapResponseBuilder_WithDomain(t *testing.T) { function TestMapResponseBuilder_WithCollectServicesDisabled (line 81) | func TestMapResponseBuilder_WithCollectServicesDisabled(t *testing.T) { function TestMapResponseBuilder_WithDebugConfig (line 100) | func TestMapResponseBuilder_WithDebugConfig(t *testing.T) { function TestMapResponseBuilder_WithPeerChangedPatch (line 143) | func TestMapResponseBuilder_WithPeerChangedPatch(t *testing.T) { function TestMapResponseBuilder_WithPeersRemoved (line 170) | func TestMapResponseBuilder_WithPeersRemoved(t *testing.T) { function TestMapResponseBuilder_ErrorHandling (line 193) | func TestMapResponseBuilder_ErrorHandling(t *testing.T) { function TestMapResponseBuilder_ChainedCalls (line 223) | func TestMapResponseBuilder_ChainedCalls(t *testing.T) { function TestMapResponseBuilder_MultipleWithPeersRemoved (line 259) | func TestMapResponseBuilder_MultipleWithPeersRemoved(t *testing.T) { function TestMapResponseBuilder_EmptyPeerChangedPatch (line 282) | func TestMapResponseBuilder_EmptyPeerChangedPatch(t *testing.T) { function TestMapResponseBuilder_NilPeerChangedPatch (line 299) | func TestMapResponseBuilder_NilPeerChangedPatch(t *testing.T) { function TestMapResponseBuilder_MultipleErrors (line 316) | func TestMapResponseBuilder_MultipleErrors(t *testing.T) { FILE: hscontrol/mapper/mapper.go constant nextDNSDoHPrefix (line 26) | nextDNSDoHPrefix = "https://dns.nextdns.io" constant debugMapResponsePerm (line 27) | debugMapResponsePerm = 0o755 type mapper (line 43) | type mapper struct method fullMapResponse (line 159) | func (m *mapper) fullMapResponse( method selfMapResponse (line 181) | func (m *mapper) selfMapResponse( method policyChangeResponse (line 213) | func (m *mapper) policyChangeResponse( method buildFromChange (line 251) | func (m *mapper) buildFromChange( method debugMapResponses (line 347) | func (m *mapper) debugMapResponses() (map[types.NodeID][]tailcfg.MapRe... type patch (line 53) | type patch struct function newMapper (line 58) | func newMapper( function generateUserProfiles (line 72) | func generateUserProfiles( function generateDNSConfig (line 117) | func generateDNSConfig( function addNextDNSMetadata (line 139) | func addNextDNSMetadata(resolvers []*dnstype.Resolver, node types.NodeVi... function writeDebugMapResponse (line 314) | func writeDebugMapResponse( function ReadMapResponsesFromDirectory (line 355) | func ReadMapResponsesFromDirectory(dir string) (map[types.NodeID][]tailc... FILE: hscontrol/mapper/mapper_test.go function TestDNSConfigMapResponse (line 20) | func TestDNSConfigMapResponse(t *testing.T) { FILE: hscontrol/mapper/node_conn.go type connectionEntry (line 20) | type connectionEntry struct method send (line 333) | func (entry *connectionEntry) send(data *tailcfg.MapResponse) error { type multiChannelNodeConn (line 31) | type multiChannelNodeConn struct method close (line 88) | func (mc *multiChannelNodeConn) close() { method stopConnection (line 101) | func (mc *multiChannelNodeConn) stopConnection(conn *connectionEntry) { method removeConnectionAtIndexLocked (line 112) | func (mc *multiChannelNodeConn) removeConnectionAtIndexLocked(i int, s... method addConnection (line 126) | func (mc *multiChannelNodeConn) addConnection(entry *connectionEntry) { method removeConnectionByChannel (line 137) | func (mc *multiChannelNodeConn) removeConnectionByChannel(c chan<- *ta... method hasActiveConnections (line 156) | func (mc *multiChannelNodeConn) hasActiveConnections() bool { method getActiveConnectionCount (line 164) | func (mc *multiChannelNodeConn) getActiveConnectionCount() int { method markConnected (line 173) | func (mc *multiChannelNodeConn) markConnected() { method markDisconnected (line 180) | func (mc *multiChannelNodeConn) markDisconnected() { method isConnected (line 187) | func (mc *multiChannelNodeConn) isConnected() bool { method offlineDuration (line 197) | func (mc *multiChannelNodeConn) offlineDuration() time.Duration { method appendPending (line 208) | func (mc *multiChannelNodeConn) appendPending(changes ...change.Change) { method drainPending (line 216) | func (mc *multiChannelNodeConn) drainPending() []change.Change { method send (line 233) | func (mc *multiChannelNodeConn) send(data *tailcfg.MapResponse) error { method nodeID (line 368) | func (mc *multiChannelNodeConn) nodeID() types.NodeID { method version (line 374) | func (mc *multiChannelNodeConn) version() tailcfg.CapabilityVersion { method updateSentPeers (line 388) | func (mc *multiChannelNodeConn) updateSentPeers(resp *tailcfg.MapRespo... method computePeerDiff (line 415) | func (mc *multiChannelNodeConn) computePeerDiff(currentPeers []tailcfg... method change (line 436) | func (mc *multiChannelNodeConn) change(r change.Change) error { function generateConnectionID (line 74) | func generateConnectionID() string { function newMultiChannelNodeConn (line 79) | func newMultiChannelNodeConn(id types.NodeID, mapper *mapper) *multiChan... FILE: hscontrol/mapper/tail_test.go function TestTailNode (line 18) | func TestTailNode(t *testing.T) { function TestNodeExpiry (line 238) | func TestNodeExpiry(t *testing.T) { FILE: hscontrol/metrics.go function init (line 17) | func init() { constant prometheusNamespace (line 27) | prometheusNamespace = "headscale" function prometheusMiddleware (line 59) | func prometheusMiddleware(next http.Handler) http.Handler { type respWriterProm (line 81) | type respWriterProm struct method WriteHeader (line 89) | func (r *respWriterProm) WriteHeader(code int) { method Write (line 95) | func (r *respWriterProm) Write(b []byte) (int, error) { FILE: hscontrol/noise.go constant ts2021UpgradePath (line 41) | ts2021UpgradePath = "/ts2021" constant earlyPayloadMagic (line 48) | earlyPayloadMagic = "\xff\xff\xffTS" constant noiseBodyLimit (line 54) | noiseBodyLimit int64 = 1048576 type noiseServer (line 57) | type noiseServer struct method earlyNoise (line 204) | func (ns *noiseServer) earlyNoise(protocolVersion int, writer io.Write... method NotImplementedHandler (line 270) | func (ns *noiseServer) NotImplementedHandler(writer http.ResponseWrite... method SSHActionHandler (line 314) | func (ns *noiseServer) SSHActionHandler( method sshAction (line 386) | func (ns *noiseServer) sshAction( method sshActionHoldAndDelegate (line 434) | func (ns *noiseServer) sshActionHoldAndDelegate( method sshActionFollowUp (line 488) | func (ns *noiseServer) sshActionFollowUp( method PollNetMapHandler (line 550) | func (ns *noiseServer) PollNetMapHandler( method RegistrationHandler (line 590) | func (ns *noiseServer) RegistrationHandler( method getAndValidateNode (line 650) | func (ns *noiseServer) getAndValidateNode(mapRequest tailcfg.MapReques... method NoiseUpgradeHandler (line 73) | func (h *Headscale) NoiseUpgradeHandler( function unsupportedClientError (line 200) | func unsupportedClientError(version tailcfg.CapabilityVersion) error { function isSupportedVersion (line 241) | func isSupportedVersion(version tailcfg.CapabilityVersion) bool { function rejectUnsupported (line 245) | func rejectUnsupported( function urlParam (line 275) | func urlParam[T any](req *http.Request, key string) (T, error) { function regErr (line 585) | func regErr(err error) *tailcfg.RegisterResponse { FILE: hscontrol/noise_test.go function newNoiseRouterWithBodyLimit (line 22) | func newNoiseRouterWithBodyLimit(readBody *[]byte, readErr *error) http.... function TestNoiseBodyLimit_MapEndpoint (line 48) | func TestNoiseBodyLimit_MapEndpoint(t *testing.T) { function TestNoiseBodyLimit_RegisterEndpoint (line 93) | func TestNoiseBodyLimit_RegisterEndpoint(t *testing.T) { function TestNoiseBodyLimit_AtExactLimit (line 138) | func TestNoiseBodyLimit_AtExactLimit(t *testing.T) { function TestPollNetMapHandler_OversizedBody (line 160) | func TestPollNetMapHandler_OversizedBody(t *testing.T) { function TestRegistrationHandler_OversizedBody (line 179) | func TestRegistrationHandler_OversizedBody(t *testing.T) { FILE: hscontrol/oidc.go constant randomByteSize (line 26) | randomByteSize = 16 constant defaultOAuthOptionsCount (line 27) | defaultOAuthOptionsCount = 3 constant authCacheExpiration (line 28) | authCacheExpiration = time.Minute * 15 constant authCacheCleanup (line 29) | authCacheCleanup = time.Minute * 20 type AuthInfo (line 47) | type AuthInfo struct type AuthProviderOIDC (line 53) | type AuthProviderOIDC struct method AuthURL (line 103) | func (a *AuthProviderOIDC) AuthURL(authID types.AuthID) string { method AuthHandler (line 110) | func (a *AuthProviderOIDC) AuthHandler( method RegisterURL (line 117) | func (a *AuthProviderOIDC) RegisterURL(authID types.AuthID) string { method RegisterHandler (line 127) | func (a *AuthProviderOIDC) RegisterHandler( method authHandler (line 136) | func (a *AuthProviderOIDC) authHandler( method OIDCCallbackHandler (line 204) | func (a *AuthProviderOIDC) OIDCCallbackHandler( method determineNodeExpiry (line 386) | func (a *AuthProviderOIDC) determineNodeExpiry(idTokenExpiration time.... method getOauth2Token (line 408) | func (a *AuthProviderOIDC) getOauth2Token( method extractIDToken (line 435) | func (a *AuthProviderOIDC) extractIDToken( method getAuthInfoFromState (line 550) | func (a *AuthProviderOIDC) getAuthInfoFromState(state string) *AuthInfo { method createOrUpdateUserFromClaim (line 559) | func (a *AuthProviderOIDC) createOrUpdateUserFromClaim( method handleRegistration (line 602) | func (a *AuthProviderOIDC) handleRegistration( function NewAuthProviderOIDC (line 66) | func NewAuthProviderOIDC( function extractCodeAndStateParamFromRequest (line 394) | func extractCodeAndStateParamFromRequest( function validateOIDCAllowedDomains (line 456) | func validateOIDCAllowedDomains( function validateOIDCAllowedGroups (line 474) | func validateOIDCAllowedGroups( function validateOIDCAllowedUsers (line 489) | func validateOIDCAllowedUsers( function doOIDCAuthorization (line 514) | func doOIDCAuthorization( function renderRegistrationSuccessTemplate (line 639) | func renderRegistrationSuccessTemplate( function renderAuthSuccessTemplate (line 659) | func renderAuthSuccessTemplate( function getCookieName (line 674) | func getCookieName(baseName, value string) string { function setCSRFCookie (line 678) | func setCSRFCookie(w http.ResponseWriter, r *http.Request, name string) ... FILE: hscontrol/oidc_template_test.go function TestAuthSuccessTemplate (line 10) | func TestAuthSuccessTemplate(t *testing.T) { FILE: hscontrol/oidc_test.go function TestDoOIDCAuthorization (line 9) | func TestDoOIDCAuthorization(t *testing.T) { FILE: hscontrol/platform_config.go method WindowsConfigMessage (line 16) | func (h *Headscale) WindowsConfigMessage( method AppleConfigMessage (line 26) | func (h *Headscale) AppleConfigMessage( method ApplePlatformConfig (line 35) | func (h *Headscale) ApplePlatformConfig( type AppleMobileConfig (line 108) | type AppleMobileConfig struct type AppleMobilePlatformConfig (line 114) | type AppleMobilePlatformConfig struct FILE: hscontrol/policy/matcher/matcher.go type Match (line 14) | type Match struct method DebugString (line 19) | func (m *Match) DebugString() string { method SrcsContainsIPs (line 83) | func (m *Match) SrcsContainsIPs(ips ...netip.Addr) bool { method DestsContainsIP (line 87) | func (m *Match) DestsContainsIP(ips ...netip.Addr) bool { method SrcsOverlapsPrefixes (line 91) | func (m *Match) SrcsOverlapsPrefixes(prefixes ...netip.Prefix) bool { method DestsOverlapsPrefixes (line 95) | func (m *Match) DestsOverlapsPrefixes(prefixes ...netip.Prefix) bool { method DestsIsTheInternet (line 104) | func (m *Match) DestsIsTheInternet() bool { function MatchesFromFilterRules (line 38) | func MatchesFromFilterRules(rules []tailcfg.FilterRule) []Match { function MatchFromFilterRule (line 47) | func MatchFromFilterRule(rule tailcfg.FilterRule) Match { function MatchFromStrings (line 56) | func MatchFromStrings(sources, destinations []string) Match { FILE: hscontrol/policy/pm.go type PolicyManager (line 14) | type PolicyManager interface function NewPolicyManager (line 44) | func NewPolicyManager(pol []byte, users []types.User, nodes views.Slice[... function PolicyManagersForTest (line 61) | func PolicyManagersForTest(pol []byte, users []types.User, nodes views.S... function PolicyManagerFuncsForTest (line 76) | func PolicyManagerFuncsForTest(pol []byte) []func([]types.User, views.Sl... FILE: hscontrol/policy/policy.go function ReduceNodes (line 16) | func ReduceNodes( function ReduceRoutes (line 37) | func ReduceRoutes( function BuildPeerMap (line 54) | func BuildPeerMap( function ApproveRoutesWithPolicy (line 89) | func ApproveRoutesWithPolicy(pm PolicyManager, nv types.NodeView, curren... FILE: hscontrol/policy/policy_autoapprove_test.go function TestApproveRoutesWithPolicy_NeverRemovesApprovedRoutes (line 19) | func TestApproveRoutesWithPolicy_NeverRemovesApprovedRoutes(t *testing.T) { function TestApproveRoutesWithPolicy_NilAndEmptyCases (line 209) | func TestApproveRoutesWithPolicy_NilAndEmptyCases(t *testing.T) { FILE: hscontrol/policy/policy_route_approval_test.go function TestApproveRoutesWithPolicy_NeverRemovesRoutes (line 18) | func TestApproveRoutesWithPolicy_NeverRemovesRoutes(t *testing.T) { function TestApproveRoutesWithPolicy_EdgeCases (line 221) | func TestApproveRoutesWithPolicy_EdgeCases(t *testing.T) { function TestApproveRoutesWithPolicy_NilPolicyManagerCase (line 327) | func TestApproveRoutesWithPolicy_NilPolicyManagerCase(t *testing.T) { FILE: hscontrol/policy/policy_test.go function TestReduceNodes (line 29) | func TestReduceNodes(t *testing.T) { function TestReduceNodesFromPolicy (line 799) | func TestReduceNodesFromPolicy(t *testing.T) { function TestSSHPolicyRules (line 1075) | func TestSSHPolicyRules(t *testing.T) { function TestReduceRoutes (line 1610) | func TestReduceRoutes(t *testing.T) { FILE: hscontrol/policy/policyutil/reduce.go function ReduceFilterRules (line 15) | func ReduceFilterRules(node types.NodeView, rules []tailcfg.FilterRule) ... FILE: hscontrol/policy/policyutil/reduce_test.go function TestTheInternet (line 86) | func TestTheInternet(t *testing.T) { function TestReduceFilterRules (line 110) | func TestReduceFilterRules(t *testing.T) { FILE: hscontrol/policy/route_approval_test.go function TestNodeCanApproveRoute (line 15) | func TestNodeCanApproveRoute(t *testing.T) { FILE: hscontrol/policy/v2/filter.go method compileFilterRules (line 27) | func (pol *Policy) compileFilterRules( method compileFilterRulesForNode (line 112) | func (pol *Policy) compileFilterRulesForNode( method compileACLWithAutogroupSelf (line 151) | func (pol *Policy) compileACLWithAutogroupSelf( function checkPeriodFromRule (line 333) | func checkPeriodFromRule(rule SSH) time.Duration { function sshCheck (line 344) | func sshCheck(baseURL string, duration time.Duration) tailcfg.SSHAction { method compileSSHPolicy (line 365) | func (pol *Policy) compileSSHPolicy( function ipSetToPrincipals (line 572) | func ipSetToPrincipals(ipSet *netipx.IPSet) []*tailcfg.SSHPrincipal { function resolveLocalparts (line 591) | func resolveLocalparts( function groupSourcesByUser (line 636) | func groupSourcesByUser( function ipSetToPrefixStringList (line 702) | func ipSetToPrefixStringList(ips *netipx.IPSet) []string { function filterRuleKey (line 717) | func filterRuleKey(rule tailcfg.FilterRule) string { function mergeFilterRules (line 730) | func mergeFilterRules(rules []tailcfg.FilterRule) []tailcfg.FilterRule { FILE: hscontrol/policy/v2/filter_test.go function aliasWithPorts (line 21) | func aliasWithPorts(alias Alias, ports ...tailcfg.PortRange) AliasWithPo... function TestParsing (line 28) | func TestParsing(t *testing.T) { function TestCompileSSHPolicy_UserMapping (line 401) | func TestCompileSSHPolicy_UserMapping(t *testing.T) { function TestCompileSSHPolicy_LocalpartMapping (line 649) | func TestCompileSSHPolicy_LocalpartMapping(t *testing.T) { function TestCompileSSHPolicy_CheckAction (line 1016) | func TestCompileSSHPolicy_CheckAction(t *testing.T) { function TestCompileSSHPolicy_CheckBeforeAcceptOrdering (line 1088) | func TestCompileSSHPolicy_CheckBeforeAcceptOrdering(t *testing.T) { function TestSSHIntegrationReproduction (line 1163) | func TestSSHIntegrationReproduction(t *testing.T) { function TestSSHJSONSerialization (line 1229) | func TestSSHJSONSerialization(t *testing.T) { function TestCompileFilterRulesForNodeWithAutogroupSelf (line 1289) | func TestCompileFilterRulesForNodeWithAutogroupSelf(t *testing.T) { function TestTagUserMutualExclusivity (line 1423) | func TestTagUserMutualExclusivity(t *testing.T) { function TestAutogroupTagged (line 1539) | func TestAutogroupTagged(t *testing.T) { function TestAutogroupSelfInSourceIsRejected (line 1667) | func TestAutogroupSelfInSourceIsRejected(t *testing.T) { function TestAutogroupSelfWithSpecificUserSource (line 1694) | func TestAutogroupSelfWithSpecificUserSource(t *testing.T) { function TestAutogroupSelfWithGroupSource (line 1761) | func TestAutogroupSelfWithGroupSource(t *testing.T) { function createAddr (line 1823) | func createAddr(ip string) *netip.Addr { function TestSSHWithAutogroupSelfInDestination (line 1830) | func TestSSHWithAutogroupSelfInDestination(t *testing.T) { function TestSSHWithAutogroupSelfAndSpecificUser (line 1912) | func TestSSHWithAutogroupSelfAndSpecificUser(t *testing.T) { function TestSSHWithAutogroupSelfAndGroup (line 1967) | func TestSSHWithAutogroupSelfAndGroup(t *testing.T) { function TestSSHWithAutogroupSelfExcludesTaggedDevices (line 2028) | func TestSSHWithAutogroupSelfExcludesTaggedDevices(t *testing.T) { function TestSSHWithAutogroupSelfAndMixedDestinations (line 2089) | func TestSSHWithAutogroupSelfAndMixedDestinations(t *testing.T) { function TestAutogroupSelfWithNonExistentUserInGroup (line 2162) | func TestAutogroupSelfWithNonExistentUserInGroup(t *testing.T) { function TestMergeFilterRules (line 2330) | func TestMergeFilterRules(t *testing.T) { function TestCompileSSHPolicy_CheckPeriodVariants (line 2539) | func TestCompileSSHPolicy_CheckPeriodVariants(t *testing.T) { function TestIPSetToPrincipals (line 2612) | func TestIPSetToPrincipals(t *testing.T) { function TestSSHCheckParams (line 2695) | func TestSSHCheckParams(t *testing.T) { function TestResolveLocalparts (line 2876) | func TestResolveLocalparts(t *testing.T) { function TestGroupSourcesByUser (line 2954) | func TestGroupSourcesByUser(t *testing.T) { FILE: hscontrol/policy/v2/main_test.go function TestMain (line 13) | func TestMain(m *testing.M) { FILE: hscontrol/policy/v2/policy.go type PolicyManager (line 28) | type PolicyManager struct method updateLocked (line 93) | func (pm *PolicyManager) updateLocked() (bool, error) { method SSHPolicy (line 226) | func (pm *PolicyManager) SSHPolicy(baseURL string, node types.NodeView... method SSHCheckParams (line 249) | func (pm *PolicyManager) SSHCheckParams( method SetPolicy (line 322) | func (pm *PolicyManager) SetPolicy(polB []byte) (bool, error) { method Filter (line 351) | func (pm *PolicyManager) Filter() ([]tailcfg.FilterRule, []matcher.Mat... method BuildPeerMap (line 366) | func (pm *PolicyManager) BuildPeerMap(nodes views.Slice[types.NodeView... method compileFilterRulesForNodeLocked (line 454) | func (pm *PolicyManager) compileFilterRulesForNodeLocked(node types.No... method filterForNodeLocked (line 480) | func (pm *PolicyManager) filterForNodeLocked(node types.NodeView) ([]t... method FilterForNode (line 525) | func (pm *PolicyManager) FilterForNode(node types.NodeView) ([]tailcfg... method MatchersForNode (line 542) | func (pm *PolicyManager) MatchersForNode(node types.NodeView) ([]match... method SetUsers (line 566) | func (pm *PolicyManager) SetUsers(users []types.User) (bool, error) { method SetNodes (line 596) | func (pm *PolicyManager) SetNodes(nodes views.Slice[types.NodeView]) (... method nodesHavePolicyAffectingChanges (line 644) | func (pm *PolicyManager) nodesHavePolicyAffectingChanges(newNodes view... method NodeCanHaveTag (line 674) | func (pm *PolicyManager) NodeCanHaveTag(node types.NodeView, tag strin... method userMatchesOwner (line 714) | func (pm *PolicyManager) userMatchesOwner(user types.UserView, owner O... method TagExists (line 757) | func (pm *PolicyManager) TagExists(tag string) bool { method NodeCanApproveRoute (line 770) | func (pm *PolicyManager) NodeCanApproveRoute(node types.NodeView, rout... method Version (line 824) | func (pm *PolicyManager) Version() int { method DebugString (line 828) | func (pm *PolicyManager) DebugString() string { method invalidateAutogroupSelfCache (line 904) | func (pm *PolicyManager) invalidateAutogroupSelfCache(oldNodes, newNod... method invalidateNodeCache (line 1051) | func (pm *PolicyManager) invalidateNodeCache(newNodes views.Slice[type... method invalidateGlobalPolicyCache (line 1065) | func (pm *PolicyManager) invalidateGlobalPolicyCache(newNodes views.Sl... type filterAndPolicy (line 59) | type filterAndPolicy struct function NewPolicyManager (line 67) | func NewPolicyManager(b []byte, users []types.User, nodes views.Slice[ty... function flattenTags (line 1099) | func flattenTags(tagOwners TagOwners, tag Tag, visiting map[Tag]bool, ch... function flattenTagOwners (line 1150) | func flattenTagOwners(tagOwners TagOwners) (TagOwners, error) { function resolveTagOwners (line 1173) | func resolveTagOwners(p *Policy, users types.Users, nodes views.Slice[ty... FILE: hscontrol/policy/v2/policy_test.go function node (line 16) | func node(name, ipv4, ipv6 string, user types.User) *types.Node { function TestPolicyManager (line 27) | func TestPolicyManager(t *testing.T) { function TestInvalidateAutogroupSelfCache (line 72) | func TestInvalidateAutogroupSelfCache(t *testing.T) { function TestInvalidateGlobalPolicyCache (line 215) | func TestInvalidateGlobalPolicyCache(t *testing.T) { function TestAutogroupSelfReducedVsUnreducedRules (line 377) | func TestAutogroupSelfReducedVsUnreducedRules(t *testing.T) { function TestAutogroupSelfWithOtherRules (line 453) | func TestAutogroupSelfWithOtherRules(t *testing.T) { function TestAutogroupSelfPolicyUpdateTriggersMapResponse (line 534) | func TestAutogroupSelfPolicyUpdateTriggersMapResponse(t *testing.T) { function TestTagPropagationToPeerMap (line 618) | func TestTagPropagationToPeerMap(t *testing.T) { function TestAutogroupSelfWithAdminOverride (line 745) | func TestAutogroupSelfWithAdminOverride(t *testing.T) { function TestAutogroupSelfSymmetricVisibility (line 828) | func TestAutogroupSelfSymmetricVisibility(t *testing.T) { function TestAutogroupSelfDoesNotBreakOtherUsersAccess (line 911) | func TestAutogroupSelfDoesNotBreakOtherUsersAccess(t *testing.T) { function TestEmptyFilterNodesStillVisible (line 1081) | func TestEmptyFilterNodesStillVisible(t *testing.T) { function TestAutogroupSelfCombinedWithTags (line 1149) | func TestAutogroupSelfCombinedWithTags(t *testing.T) { function TestIssue2990SameUserTaggedDevice (line 1245) | func TestIssue2990SameUserTaggedDevice(t *testing.T) { FILE: hscontrol/policy/v2/tailscale_compat_test.go function ptrAddr (line 32) | func ptrAddr(s string) *netip.Addr { function setupTailscaleCompatUsers (line 38) | func setupTailscaleCompatUsers() types.Users { function setupTailscaleCompatNodes (line 48) | func setupTailscaleCompatNodes(users types.Users) types.Nodes { function findNodeByGivenName (line 110) | func findNodeByGivenName(nodes types.Nodes, name string) *types.Node { type tailscaleCompatTest (line 121) | type tailscaleCompatTest struct constant basePolicyPrefix (line 129) | basePolicyPrefix = `{ constant basePolicySuffix (line 149) | basePolicySuffix = ` function makePolicy (line 154) | func makePolicy(aclRules string) string { function cmpOptions (line 160) | func cmpOptions() []cmp.Option { function TestTailscaleCompatWildcardACLs (line 203) | func TestTailscaleCompatWildcardACLs(t *testing.T) { function TestTailscaleCompatBasicTags (line 511) | func TestTailscaleCompatBasicTags(t *testing.T) { function TestTailscaleCompatUsersGroups (line 788) | func TestTailscaleCompatUsersGroups(t *testing.T) { function TestTailscaleCompatAutogroups (line 1059) | func TestTailscaleCompatAutogroups(t *testing.T) { function TestTailscaleCompatHosts (line 1506) | func TestTailscaleCompatHosts(t *testing.T) { function TestTailscaleCompatProtocolsPorts (line 1715) | func TestTailscaleCompatProtocolsPorts(t *testing.T) { function TestTailscaleCompatMixedSources (line 1917) | func TestTailscaleCompatMixedSources(t *testing.T) { function TestTailscaleCompatComplexScenarios (line 2229) | func TestTailscaleCompatComplexScenarios(t *testing.T) { function TestTailscaleCompatErrorCases (line 9634) | func TestTailscaleCompatErrorCases(t *testing.T) { function TestTailscaleCompatErrorCasesHeadscaleDiffers (line 9733) | func TestTailscaleCompatErrorCasesHeadscaleDiffers(t *testing.T) { FILE: hscontrol/policy/v2/tailscale_routes_compat_test.go function setupRouteCompatUsers (line 47) | func setupRouteCompatUsers() types.Users { function setupRouteCompatNodes (line 62) | func setupRouteCompatNodes(users types.Users) types.Nodes { constant routesPolicyPrefix (line 212) | routesPolicyPrefix = `{ constant routesPolicySuffix (line 228) | routesPolicySuffix = ` function makeRoutesPolicy (line 233) | func makeRoutesPolicy(aclRules string) string { type routesCompatTest (line 238) | type routesCompatTest struct function TestTailscaleRoutesCompatSubnetBasics (line 248) | func TestTailscaleRoutesCompatSubnetBasics(t *testing.T) { function TestTailscaleRoutesCompatExitNodes (line 960) | func TestTailscaleRoutesCompatExitNodes(t *testing.T) { function TestTailscaleRoutesCompatHARouters (line 1584) | func TestTailscaleRoutesCompatHARouters(t *testing.T) { function TestTailscaleRoutesCompatFilterPlacement (line 2066) | func TestTailscaleRoutesCompatFilterPlacement(t *testing.T) { function runRoutesCompatTests (line 3255) | func runRoutesCompatTests(t *testing.T, users types.Users, nodes types.N... function TestTailscaleRoutesCompatRouteCoverage (line 3294) | func TestTailscaleRoutesCompatRouteCoverage(t *testing.T) { function TestTailscaleRoutesCompatOverlapping (line 3544) | func TestTailscaleRoutesCompatOverlapping(t *testing.T) { function TestTailscaleRoutesCompatTagResolution (line 3814) | func TestTailscaleRoutesCompatTagResolution(t *testing.T) { function TestTailscaleRoutesCompatProtocolPort (line 4072) | func TestTailscaleRoutesCompatProtocolPort(t *testing.T) { function TestTailscaleRoutesCompatIPv6 (line 4372) | func TestTailscaleRoutesCompatIPv6(t *testing.T) { function TestTailscaleRoutesCompatEdgeCases (line 4726) | func TestTailscaleRoutesCompatEdgeCases(t *testing.T) { function TestTailscaleRoutesCompatAdditionalR (line 5431) | func TestTailscaleRoutesCompatAdditionalR(t *testing.T) { function TestTailscaleRoutesCompatAdditionalO (line 5710) | func TestTailscaleRoutesCompatAdditionalO(t *testing.T) { function TestTailscaleRoutesCompatAdditionalG (line 6157) | func TestTailscaleRoutesCompatAdditionalG(t *testing.T) { function TestTailscaleRoutesCompatAdditionalT (line 6315) | func TestTailscaleRoutesCompatAdditionalT(t *testing.T) { function TestTailscaleRoutesCompatAutoApprover (line 6608) | func TestTailscaleRoutesCompatAutoApprover(t *testing.T) { function TestTailscaleRoutesCompatAdditionalProtocol (line 7423) | func TestTailscaleRoutesCompatAdditionalProtocol(t *testing.T) { function TestTailscaleRoutesCompatAdditionalEdgeCases (line 7591) | func TestTailscaleRoutesCompatAdditionalEdgeCases(t *testing.T) { function TestTailscaleRoutesCompatAdditionalIPv6 (line 7786) | func TestTailscaleRoutesCompatAdditionalIPv6(t *testing.T) { function TestTailscaleRoutesCompatAdditionalOverlapping (line 8137) | func TestTailscaleRoutesCompatAdditionalOverlapping(t *testing.T) { FILE: hscontrol/policy/v2/tailscale_ssh_data_compat_test.go type sshTestFile (line 37) | type sshTestFile struct type sshNodeCapture (line 45) | type sshNodeCapture struct function setupSSHDataCompatUsers (line 55) | func setupSSHDataCompatUsers() types.Users { function setupSSHDataCompatNodes (line 82) | func setupSSHDataCompatNodes(users types.Users) types.Nodes { function convertSSHPolicyEmails (line 142) | func convertSSHPolicyEmails(s string) string { function constructSSHFullPolicy (line 157) | func constructSSHFullPolicy(sshSection json.RawMessage) string { function loadSSHTestFile (line 188) | func loadSSHTestFile(t *testing.T, path string) sshTestFile { function TestSSHDataCompat (line 226) | func TestSSHDataCompat(t *testing.T) { FILE: hscontrol/policy/v2/types.go constant Wildcard (line 32) | Wildcard = Asterix(0) constant SSHCheckPeriodDefault (line 56) | SSHCheckPeriodDefault = 12 * time.Hour constant SSHCheckPeriodMin (line 57) | SSHCheckPeriodMin = time.Minute constant SSHCheckPeriodMax (line 58) | SSHCheckPeriodMax = 168 * time.Hour type Asterix (line 115) | type Asterix method Validate (line 117) | func (a Asterix) Validate() error { method String (line 121) | func (a Asterix) String() string { method MarshalJSON (line 126) | func (a Asterix) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 181) | func (a Asterix) UnmarshalJSON(b []byte) error { method Resolve (line 185) | func (a Asterix) Resolve(_ *Policy, _ types.Users, nodes views.Slice[t... type Username (line 198) | type Username method Validate (line 200) | func (u *Username) Validate() error { method String (line 208) | func (u *Username) String() string { method MarshalJSON (line 213) | func (u *Username) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 222) | func (u *Username) UnmarshalJSON(b []byte) error { method CanBeTagOwner (line 233) | func (u *Username) CanBeTagOwner() bool { method CanBeAutoApprover (line 237) | func (u *Username) CanBeAutoApprover() bool { method resolveUser (line 246) | func (u *Username) resolveUser(users types.Users) (types.User, error) { method Resolve (line 277) | func (u *Username) Resolve(_ *Policy, users types.Users, nodes views.S... type Group (line 308) | type Group method Validate (line 310) | func (g *Group) Validate() error { method UnmarshalJSON (line 318) | func (g *Group) UnmarshalJSON(b []byte) error { method CanBeTagOwner (line 329) | func (g *Group) CanBeTagOwner() bool { method CanBeAutoApprover (line 333) | func (g *Group) CanBeAutoApprover() bool { method String (line 338) | func (g *Group) String() string { method MarshalJSON (line 352) | func (g *Group) MarshalJSON() ([]byte, error) { method Resolve (line 356) | func (g *Group) Resolve(p *Policy, users types.Users, nodes views.Slic... type Tag (line 375) | type Tag method Validate (line 377) | func (t *Tag) Validate() error { method UnmarshalJSON (line 385) | func (t *Tag) UnmarshalJSON(b []byte) error { method Resolve (line 396) | func (t *Tag) Resolve(p *Policy, users types.Users, nodes views.Slice[... method CanBeAutoApprover (line 409) | func (t *Tag) CanBeAutoApprover() bool { method CanBeTagOwner (line 413) | func (t *Tag) CanBeTagOwner() bool { method String (line 417) | func (t *Tag) String() string { method MarshalJSON (line 422) | func (t *Tag) MarshalJSON() ([]byte, error) { type Host (line 427) | type Host method String (line 342) | func (h *Host) String() string { method MarshalJSON (line 347) | func (h *Host) MarshalJSON() ([]byte, error) { method Validate (line 429) | func (h *Host) Validate() error { method UnmarshalJSON (line 437) | func (h *Host) UnmarshalJSON(b []byte) error { method Resolve (line 448) | func (h *Host) Resolve(p *Policy, _ types.Users, nodes views.Slice[typ... type Prefix (line 486) | type Prefix method MarshalJSON (line 218) | func (p *Prefix) MarshalJSON() ([]byte, error) { method Validate (line 488) | func (p *Prefix) Validate() error { method String (line 496) | func (p *Prefix) String() string { method parseString (line 500) | func (p *Prefix) parseString(addr string) error { method UnmarshalJSON (line 527) | func (p *Prefix) UnmarshalJSON(b []byte) error { method Resolve (line 545) | func (p *Prefix) Resolve(_ *Policy, _ types.Users, nodes views.Slice[t... function appendIfNodeHasIP (line 561) | func appendIfNodeHasIP(nodes views.Slice[types.NodeView], ips *netipx.IP... type AutoGroup (line 574) | type AutoGroup method Validate (line 592) | func (ag *AutoGroup) Validate() error { method UnmarshalJSON (line 600) | func (ag *AutoGroup) UnmarshalJSON(b []byte) error { method String (line 611) | func (ag *AutoGroup) String() string { method MarshalJSON (line 616) | func (ag *AutoGroup) MarshalJSON() ([]byte, error) { method Resolve (line 620) | func (ag *AutoGroup) Resolve(p *Policy, users types.Users, nodes views... method Is (line 668) | func (ag *AutoGroup) Is(c AutoGroup) bool { constant AutoGroupInternet (line 577) | AutoGroupInternet AutoGroup = "autogroup:internet" constant AutoGroupMember (line 578) | AutoGroupMember AutoGroup = "autogroup:member" constant AutoGroupNonRoot (line 579) | AutoGroupNonRoot AutoGroup = "autogroup:nonroot" constant AutoGroupTagged (line 580) | AutoGroupTagged AutoGroup = "autogroup:tagged" constant AutoGroupSelf (line 581) | AutoGroupSelf AutoGroup = "autogroup:self" type Alias (line 676) | type Alias interface type AliasWithPorts (line 688) | type AliasWithPorts struct method MarshalJSON (line 131) | func (a AliasWithPorts) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 694) | func (ve *AliasWithPorts) UnmarshalJSON(b []byte) error { function isWildcard (line 741) | func isWildcard(str string) bool { function isUser (line 745) | func isUser(str string) bool { function isGroup (line 749) | func isGroup(str string) bool { function isTag (line 753) | func isTag(str string) bool { function isAutoGroup (line 757) | func isAutoGroup(str string) bool { function isHost (line 761) | func isHost(str string) bool { function parseAlias (line 765) | func parseAlias(vs string) (Alias, error) { type AliasEnc (line 794) | type AliasEnc struct method UnmarshalJSON (line 796) | func (ve *AliasEnc) UnmarshalJSON(b []byte) error { type Aliases (line 810) | type Aliases method UnmarshalJSON (line 812) | func (a *Aliases) UnmarshalJSON(b []byte) error { method MarshalJSON (line 829) | func (a *Aliases) MarshalJSON() ([]byte, error) { method Resolve (line 859) | func (a *Aliases) Resolve(p *Policy, users types.Users, nodes views.Sl... function buildIPSetMultiErr (line 877) | func buildIPSetMultiErr(ipBuilder *netipx.IPSetBuilder, errs []error) (*... function unmarshalPointer (line 883) | func unmarshalPointer[T any]( type AutoApprover (line 898) | type AutoApprover interface type AutoApprovers (line 904) | type AutoApprovers method UnmarshalJSON (line 906) | func (aa *AutoApprovers) UnmarshalJSON(b []byte) error { method MarshalJSON (line 923) | func (aa AutoApprovers) MarshalJSON() ([]byte, error) { function parseAutoApprover (line 945) | func parseAutoApprover(s string) (AutoApprover, error) { type AutoApproverEnc (line 959) | type AutoApproverEnc struct method UnmarshalJSON (line 961) | func (ve *AutoApproverEnc) UnmarshalJSON(b []byte) error { type Owner (line 975) | type Owner interface type OwnerEnc (line 982) | type OwnerEnc struct method UnmarshalJSON (line 984) | func (ve *OwnerEnc) UnmarshalJSON(b []byte) error { type Owners (line 998) | type Owners method UnmarshalJSON (line 1000) | func (o *Owners) UnmarshalJSON(b []byte) error { method MarshalJSON (line 1017) | func (o Owners) MarshalJSON() ([]byte, error) { function parseOwner (line 1039) | func parseOwner(s string) (Owner, error) { type Usernames (line 1052) | type Usernames type Groups (line 1055) | type Groups method Contains (line 1057) | func (g *Groups) Contains(group *Group) error { method UnmarshalJSON (line 1075) | func (g *Groups) UnmarshalJSON(b []byte) error { method MarshalJSON (line 2211) | func (g *Groups) MarshalJSON() ([]byte, error) { type Hosts (line 1148) | type Hosts method UnmarshalJSON (line 1150) | func (h *Hosts) UnmarshalJSON(b []byte) error { method MarshalJSON (line 1182) | func (h *Hosts) MarshalJSON() ([]byte, error) { method exist (line 1195) | func (h *Hosts) exist(name Host) bool { type TagOwners (line 1232) | type TagOwners method MarshalJSON (line 1201) | func (to TagOwners) MarshalJSON() ([]byte, error) { method Contains (line 1234) | func (to TagOwners) Contains(tagOwner *Tag) error { type AutoApproverPolicy (line 1248) | type AutoApproverPolicy struct method MarshalJSON (line 1254) | func (ap AutoApproverPolicy) MarshalJSON() ([]byte, error) { function resolveAutoApprovers (line 1280) | func resolveAutoApprovers(p *Policy, users types.Users, nodes views.Slic... type Action (line 1344) | type Action method String (line 1359) | func (a *Action) String() string { method UnmarshalJSON (line 1364) | func (a *Action) UnmarshalJSON(b []byte) error { method MarshalJSON (line 1377) | func (a *Action) MarshalJSON() ([]byte, error) { constant ActionAccept (line 1347) | ActionAccept Action = "accept" type SSHAction (line 1351) | type SSHAction method String (line 1382) | func (a *SSHAction) String() string { method UnmarshalJSON (line 1387) | func (a *SSHAction) UnmarshalJSON(b []byte) error { method MarshalJSON (line 1402) | func (a *SSHAction) MarshalJSON() ([]byte, error) { constant SSHActionAccept (line 1354) | SSHActionAccept SSHAction = "accept" constant SSHActionCheck (line 1355) | SSHActionCheck SSHAction = "check" type Protocol (line 1407) | type Protocol method String (line 1428) | func (p *Protocol) String() string { method Description (line 1433) | func (p *Protocol) Description() string { method parseProtocol (line 1472) | func (p *Protocol) parseProtocol() []int { method UnmarshalJSON (line 1517) | func (p *Protocol) UnmarshalJSON(b []byte) error { method validate (line 1533) | func (p *Protocol) validate() error { method MarshalJSON (line 1565) | func (p *Protocol) MarshalJSON() ([]byte, error) { constant ProtocolNameICMP (line 1410) | ProtocolNameICMP Protocol = "icmp" constant ProtocolNameIGMP (line 1411) | ProtocolNameIGMP Protocol = "igmp" constant ProtocolNameIPv4 (line 1412) | ProtocolNameIPv4 Protocol = "ipv4" constant ProtocolNameIPInIP (line 1413) | ProtocolNameIPInIP Protocol = "ip-in-ip" constant ProtocolNameTCP (line 1414) | ProtocolNameTCP Protocol = "tcp" constant ProtocolNameEGP (line 1415) | ProtocolNameEGP Protocol = "egp" constant ProtocolNameIGP (line 1416) | ProtocolNameIGP Protocol = "igp" constant ProtocolNameUDP (line 1417) | ProtocolNameUDP Protocol = "udp" constant ProtocolNameGRE (line 1418) | ProtocolNameGRE Protocol = "gre" constant ProtocolNameESP (line 1419) | ProtocolNameESP Protocol = "esp" constant ProtocolNameAH (line 1420) | ProtocolNameAH Protocol = "ah" constant ProtocolNameIPv6ICMP (line 1421) | ProtocolNameIPv6ICMP Protocol = "ipv6-icmp" constant ProtocolNameSCTP (line 1422) | ProtocolNameSCTP Protocol = "sctp" constant ProtocolNameFC (line 1423) | ProtocolNameFC Protocol = "fc" constant ProtocolNameWildcard (line 1424) | ProtocolNameWildcard Protocol = "*" constant ProtocolICMP (line 1571) | ProtocolICMP = 1 constant ProtocolIGMP (line 1572) | ProtocolIGMP = 2 constant ProtocolIPv4 (line 1573) | ProtocolIPv4 = 4 constant ProtocolTCP (line 1574) | ProtocolTCP = 6 constant ProtocolEGP (line 1575) | ProtocolEGP = 8 constant ProtocolIGP (line 1576) | ProtocolIGP = 9 constant ProtocolUDP (line 1577) | ProtocolUDP = 17 constant ProtocolGRE (line 1578) | ProtocolGRE = 47 constant ProtocolESP (line 1579) | ProtocolESP = 50 constant ProtocolAH (line 1580) | ProtocolAH = 51 constant ProtocolIPv6ICMP (line 1581) | ProtocolIPv6ICMP = 58 constant ProtocolSCTP (line 1582) | ProtocolSCTP = 132 constant ProtocolFC (line 1583) | ProtocolFC = 133 type ACL (line 1586) | type ACL struct method UnmarshalJSON (line 1597) | func (a *ACL) UnmarshalJSON(b []byte) error { type Policy (line 1642) | type Policy struct method validate (line 1867) | func (p *Policy) validate() error { method usesAutogroupSelf (line 2495) | func (p *Policy) usesAutogroupSelf() bool { function validateAutogroupSupported (line 1671) | func validateAutogroupSupported(ag *AutoGroup) error { function validateAutogroupForSrc (line 1683) | func validateAutogroupForSrc(src *AutoGroup) error { function validateAutogroupForDst (line 1703) | func validateAutogroupForDst(dst *AutoGroup) error { function validateAutogroupForSSHSrc (line 1715) | func validateAutogroupForSSHSrc(src *AutoGroup) error { function validateAutogroupForSSHDst (line 1731) | func validateAutogroupForSSHDst(dst *AutoGroup) error { function validateAutogroupForSSHUser (line 1747) | func validateAutogroupForSSHUser(user *AutoGroup) error { function validateSSHSrcDstCombination (line 1764) | func validateSSHSrcDstCombination(sources SSHSrcAliases, destinations SS... function validateACLSrcDstCombination (line 1821) | func validateACLSrcDstCombination(sources Aliases, destinations []AliasW... type SSHCheckPeriod (line 2138) | type SSHCheckPeriod struct method UnmarshalJSON (line 2144) | func (p *SSHCheckPeriod) UnmarshalJSON(b []byte) error { method MarshalJSON (line 2163) | func (p SSHCheckPeriod) MarshalJSON() ([]byte, error) { method Validate (line 2172) | func (p *SSHCheckPeriod) Validate() error { type SSH (line 2197) | type SSH struct type SSHSrcAliases (line 2208) | type SSHSrcAliases method UnmarshalJSON (line 2229) | func (a *SSHSrcAliases) UnmarshalJSON(b []byte) error { method MarshalJSON (line 2305) | func (a *SSHSrcAliases) MarshalJSON() ([]byte, error) { method Resolve (line 2331) | func (a *SSHSrcAliases) Resolve(p *Policy, users types.Users, nodes vi... type SSHDstAliases (line 2351) | type SSHDstAliases method UnmarshalJSON (line 2250) | func (a *SSHDstAliases) UnmarshalJSON(b []byte) error { method MarshalJSON (line 2276) | func (a SSHDstAliases) MarshalJSON() ([]byte, error) { type SSHUsers (line 2353) | type SSHUsers method ContainsRoot (line 2360) | func (u SSHUsers) ContainsRoot() bool { method ContainsNonRoot (line 2364) | func (u SSHUsers) ContainsNonRoot() bool { method ContainsLocalpart (line 2369) | func (u SSHUsers) ContainsLocalpart() bool { method NormalUsers (line 2377) | func (u SSHUsers) NormalUsers() []SSHUser { method LocalpartEntries (line 2384) | func (u SSHUsers) LocalpartEntries() []SSHUser { constant SSHUserLocalpartPrefix (line 2358) | SSHUserLocalpartPrefix = "localpart:" type SSHUser (line 2390) | type SSHUser method String (line 2392) | func (u SSHUser) String() string { method IsLocalpart (line 2397) | func (u SSHUser) IsLocalpart() bool { method ParseLocalpart (line 2404) | func (u SSHUser) ParseLocalpart() (string, error) { method MarshalJSON (line 2432) | func (u SSHUser) MarshalJSON() ([]byte, error) { function unmarshalPolicy (line 2439) | func unmarshalPolicy(b []byte) (*Policy, error) { function validateProtocolPortCompatibility (line 2473) | func validateProtocolPortCompatibility(protocol Protocol, destinations [... FILE: hscontrol/policy/v2/types_test.go function TestMarshalJSON (line 37) | func TestMarshalJSON(t *testing.T) { function TestUnmarshalPolicy (line 101) | func TestUnmarshalPolicy(t *testing.T) { function gp (line 2115) | func gp(s string) *Group { return new(Group(s)) } function up (line 2116) | func up(s string) *Username { return new(Username(s)) } function hp (line 2117) | func hp(s string) *Host { return new(Host(s)) } function tp (line 2118) | func tp(s string) *Tag { return new(Tag(s)) } function agp (line 2119) | func agp(s string) *AutoGroup { return new(AutoGroup(s)) } function mp (line 2120) | func mp(pref string) netip.Prefix { return netip.MustParsePrefix(pref) } function ap (line 2121) | func ap(addr string) *netip.Addr { return new(netip.MustParseAddr(addr)) } function pp (line 2122) | func pp(pref string) *Prefix { return new(Prefix(mp(pref))) } function p (line 2123) | func p(pref string) Prefix { return Prefix(mp(pref)) } function TestResolvePolicy (line 2125) | func TestResolvePolicy(t *testing.T) { function TestResolveAutoApprovers (line 2559) | func TestResolveAutoApprovers(t *testing.T) { function TestSSHUsers_NormalUsers (line 2735) | func TestSSHUsers_NormalUsers(t *testing.T) { function TestSSHUsers_ContainsRoot (line 2798) | func TestSSHUsers_ContainsRoot(t *testing.T) { function TestSSHUsers_ContainsNonRoot (line 2834) | func TestSSHUsers_ContainsNonRoot(t *testing.T) { function TestSSHUsers_ContainsLocalpart (line 2870) | func TestSSHUsers_ContainsLocalpart(t *testing.T) { function TestSSHUsers_LocalpartEntries (line 2911) | func TestSSHUsers_LocalpartEntries(t *testing.T) { function TestSSHUser_ParseLocalpart (line 2949) | func TestSSHUser_ParseLocalpart(t *testing.T) { function mustIPSet (line 3006) | func mustIPSet(prefixes ...string) *netipx.IPSet { function ipSetComparer (line 3017) | func ipSetComparer(x, y *netipx.IPSet) bool { function TestNodeCanApproveRoute (line 3025) | func TestNodeCanApproveRoute(t *testing.T) { function TestResolveTagOwners (line 3158) | func TestResolveTagOwners(t *testing.T) { function TestNodeCanHaveTag (line 3258) | func TestNodeCanHaveTag(t *testing.T) { function TestUserMatchesOwner (line 3537) | func TestUserMatchesOwner(t *testing.T) { function TestACL_UnmarshalJSON_WithCommentFields (line 3637) | func TestACL_UnmarshalJSON_WithCommentFields(t *testing.T) { function TestACL_UnmarshalJSON_Roundtrip (line 3819) | func TestACL_UnmarshalJSON_Roundtrip(t *testing.T) { function TestACL_UnmarshalJSON_PolicyIntegration (line 3850) | func TestACL_UnmarshalJSON_PolicyIntegration(t *testing.T) { function TestACL_UnmarshalJSON_InvalidAction (line 3900) | func TestACL_UnmarshalJSON_InvalidAction(t *testing.T) { function mustParseAlias (line 3919) | func mustParseAlias(s string) Alias { function TestFlattenTagOwners (line 3928) | func TestFlattenTagOwners(t *testing.T) { function TestSSHCheckPeriodUnmarshal (line 4072) | func TestSSHCheckPeriodUnmarshal(t *testing.T) { function TestSSHCheckPeriodRoundTrip (line 4123) | func TestSSHCheckPeriodRoundTrip(t *testing.T) { function TestSSHCheckPeriodNilInSSH (line 4153) | func TestSSHCheckPeriodNilInSSH(t *testing.T) { function TestSSHCheckPeriodValidate (line 4168) | func TestSSHCheckPeriodValidate(t *testing.T) { function TestSSHCheckPeriodPolicyValidation (line 4212) | func TestSSHCheckPeriodPolicyValidation(t *testing.T) { FILE: hscontrol/policy/v2/utils.go function splitDestinationAndPort (line 36) | func splitDestinationAndPort(input string) (string, string, error) { function parsePortRange (line 86) | func parsePortRange(portDef string) ([]tailcfg.PortRange, error) { function parsePort (line 139) | func parsePort(portStr string) (uint16, error) { FILE: hscontrol/policy/v2/utils_test.go function TestParseDestinationAndPort (line 12) | func TestParseDestinationAndPort(t *testing.T) { function TestParsePort (line 154) | func TestParsePort(t *testing.T) { function TestParsePortRange (line 185) | func TestParsePortRange(t *testing.T) { FILE: hscontrol/poll.go constant keepAliveInterval (line 24) | keepAliveInterval = 50 * time.Second type contextKey (line 27) | type contextKey constant nodeNameContextKey (line 29) | nodeNameContextKey = contextKey("nodeName") type mapSession (line 31) | type mapSession struct method isStreaming (line 81) | func (m *mapSession) isStreaming() bool { method isEndpointUpdate (line 85) | func (m *mapSession) isEndpointUpdate() bool { method resetKeepAlive (line 89) | func (m *mapSession) resetKeepAlive() { method stopFromBatcher (line 93) | func (m *mapSession) stopFromBatcher() { method beforeServeLongPoll (line 99) | func (m *mapSession) beforeServeLongPoll() { method afterServeLongPoll (line 107) | func (m *mapSession) afterServeLongPoll() { method serve (line 114) | func (m *mapSession) serve() { method serveLongPoll (line 146) | func (m *mapSession) serveLongPoll() { method writeMap (line 313) | func (m *mapSession) writeMap(msg *tailcfg.MapResponse) error { method newMapSession (line 50) | func (h *Headscale) newMapSession( FILE: hscontrol/poll_test.go type delayedSuccessResponseWriter (line 18) | type delayedSuccessResponseWriter struct method Header (line 42) | func (w *delayedSuccessResponseWriter) Header() http.Header { method WriteHeader (line 46) | func (w *delayedSuccessResponseWriter) WriteHeader(int) {} method Write (line 48) | func (w *delayedSuccessResponseWriter) Write(data []byte) (int, error) { method Flush (line 75) | func (w *delayedSuccessResponseWriter) Flush() {} method FirstWriteStarted (line 77) | func (w *delayedSuccessResponseWriter) FirstWriteStarted() <-chan stru... method FirstWriteFinished (line 81) | func (w *delayedSuccessResponseWriter) FirstWriteFinished() <-chan str... method WriteCount (line 85) | func (w *delayedSuccessResponseWriter) WriteCount() int { function newDelayedSuccessResponseWriter (line 33) | func newDelayedSuccessResponseWriter(firstWriteDelay time.Duration) *del... function TestGitHubIssue3129_TransientlyBlockedWriteDoesNotLeaveLiveStaleSession (line 107) | func TestGitHubIssue3129_TransientlyBlockedWriteDoesNotLeaveLiveStaleSes... FILE: hscontrol/routes/primary.go type PrimaryRoutes (line 20) | type PrimaryRoutes struct method updatePrimaryLocked (line 49) | func (pr *PrimaryRoutes) updatePrimaryLocked() bool { method SetRoutes (line 156) | func (pr *PrimaryRoutes) SetRoutes(node types.NodeID, prefixes ...neti... method PrimaryRoutes (line 222) | func (pr *PrimaryRoutes) PrimaryRoutes(id types.NodeID) []netip.Prefix { method String (line 248) | func (pr *PrimaryRoutes) String() string { method stringLocked (line 255) | func (pr *PrimaryRoutes) stringLocked() string { method DebugJSON (line 291) | func (pr *PrimaryRoutes) DebugJSON() DebugRoutes { function New (line 32) | func New() *PrimaryRoutes { type DebugRoutes (line 278) | type DebugRoutes struct FILE: hscontrol/routes/primary_test.go function mp (line 16) | func mp(prefix string) netip.Prefix { function TestPrimaryRoutes (line 20) | func TestPrimaryRoutes(t *testing.T) { FILE: hscontrol/servertest/assertions.go function AssertMeshComplete (line 11) | func AssertMeshComplete(tb testing.TB, clients []*TestClient) { function AssertSymmetricVisibility (line 32) | func AssertSymmetricVisibility(tb testing.TB, clients []*TestClient) { function AssertPeerOnline (line 53) | func AssertPeerOnline(tb testing.TB, observer *TestClient, peerName stri... function AssertPeerOffline (line 71) | func AssertPeerOffline(tb testing.TB, observer *TestClient, peerName str... function AssertPeerGone (line 89) | func AssertPeerGone(tb testing.TB, observer *TestClient, peerName string) { function AssertPeerHasAllowedIPs (line 100) | func AssertPeerHasAllowedIPs(tb testing.TB, observer *TestClient, peerNa... function AssertConsistentState (line 139) | func AssertConsistentState(tb testing.TB, clients []*TestClient) { function AssertDERPMapPresent (line 171) | func AssertDERPMapPresent(tb testing.TB, client *TestClient) { function AssertSelfHasAddresses (line 193) | func AssertSelfHasAddresses(tb testing.TB, client *TestClient) { function EventuallyAssertMeshComplete (line 216) | func EventuallyAssertMeshComplete(tb testing.TB, clients []*TestClient, ... FILE: hscontrol/servertest/client.go type TestClient (line 26) | type TestClient struct method register (line 167) | func (c *TestClient) register(tb testing.TB) { method startPoll (line 184) | func (c *TestClient) startPoll(tb testing.TB) { method UpdateFullNetmap (line 200) | func (c *TestClient) UpdateFullNetmap(nm *netmap.NetworkMap) { method cleanup (line 214) | func (c *TestClient) cleanup() { method Disconnect (line 244) | func (c *TestClient) Disconnect(tb testing.TB) { method Reconnect (line 255) | func (c *TestClient) Reconnect(tb testing.TB) { method ReconnectAfter (line 297) | func (c *TestClient) ReconnectAfter(tb testing.TB, d time.Duration) { method Netmap (line 311) | func (c *TestClient) Netmap() *netmap.NetworkMap { method WaitForPeers (line 320) | func (c *TestClient) WaitForPeers(tb testing.TB, n int, timeout time.D... method WaitForUpdate (line 347) | func (c *TestClient) WaitForUpdate(tb testing.TB, timeout time.Duratio... method Peers (line 361) | func (c *TestClient) Peers() []tailcfg.NodeView { method PeerByName (line 374) | func (c *TestClient) PeerByName(hostname string) (tailcfg.NodeView, bo... method PeerNames (line 393) | func (c *TestClient) PeerNames() []string { method UpdateCount (line 413) | func (c *TestClient) UpdateCount() int { method History (line 421) | func (c *TestClient) History() []*netmap.NetworkMap { method SelfName (line 432) | func (c *TestClient) SelfName() string { method WaitForPeerCount (line 442) | func (c *TestClient) WaitForPeerCount(tb testing.TB, n int, timeout ti... method WaitForCondition (line 471) | func (c *TestClient) WaitForCondition(tb testing.TB, desc string, time... method Direct (line 492) | func (c *TestClient) Direct() *controlclient.Direct { method String (line 497) | func (c *TestClient) String() string { type ClientOption (line 55) | type ClientOption type clientConfig (line 57) | type clientConfig struct function WithEphemeral (line 65) | func WithEphemeral() ClientOption { function WithHostname (line 70) | func WithHostname(name string) ClientOption { function WithTags (line 75) | func WithTags(tags ...string) ClientOption { function WithUser (line 81) | func WithUser(user *types.User) ClientOption { function NewClient (line 87) | func NewClient(tb testing.TB, server *TestServer, name string, opts ...C... FILE: hscontrol/servertest/consistency_test.go function TestConsistency (line 14) | func TestConsistency(t *testing.T) { FILE: hscontrol/servertest/content_test.go function TestContentVerification (line 16) | func TestContentVerification(t *testing.T) { FILE: hscontrol/servertest/ephemeral_test.go function TestEphemeralNodes (line 15) | func TestEphemeralNodes(t *testing.T) { FILE: hscontrol/servertest/harness.go type TestHarness (line 13) | type TestHarness struct method Client (line 96) | func (h *TestHarness) Client(i int) *TestClient { method Clients (line 101) | func (h *TestHarness) Clients() []*TestClient { method ConnectedClients (line 107) | func (h *TestHarness) ConnectedClients() []*TestClient { method AddClient (line 123) | func (h *TestHarness) AddClient(tb testing.TB, opts ...ClientOption) *... method WaitForMeshComplete (line 136) | func (h *TestHarness) WaitForMeshComplete(tb testing.TB, timeout time.... method WaitForConvergence (line 150) | func (h *TestHarness) WaitForConvergence(tb testing.TB, timeout time.D... method ChangePolicy (line 157) | func (h *TestHarness) ChangePolicy(tb testing.TB, policy []byte) { method DefaultUser (line 176) | func (h *TestHarness) DefaultUser() *types.User { type HarnessOption (line 22) | type HarnessOption type harnessConfig (line 24) | type harnessConfig struct function defaultHarnessConfig (line 30) | func defaultHarnessConfig() *harnessConfig { function WithServerOptions (line 38) | func WithServerOptions(opts ...ServerOption) HarnessOption { function WithDefaultClientOptions (line 44) | func WithDefaultClientOptions(opts ...ClientOption) HarnessOption { function WithConvergenceTimeout (line 49) | func WithConvergenceTimeout(d time.Duration) HarnessOption { function NewHarness (line 57) | func NewHarness(tb testing.TB, numClients int, opts ...HarnessOption) *T... function clientName (line 180) | func clientName(index int) string { FILE: hscontrol/servertest/issues_test.go function TestIssuesMapContent (line 22) | func TestIssuesMapContent(t *testing.T) { function TestIssuesRoutes (line 137) | func TestIssuesRoutes(t *testing.T) { function TestIssuesIPAllocation (line 272) | func TestIssuesIPAllocation(t *testing.T) { function TestIssuesServerMutations (line 373) | func TestIssuesServerMutations(t *testing.T) { function TestIssuesNodeStoreConsistency (line 500) | func TestIssuesNodeStoreConsistency(t *testing.T) { function TestIssuesGracePeriod (line 571) | func TestIssuesGracePeriod(t *testing.T) { function TestIssuesScale (line 673) | func TestIssuesScale(t *testing.T) { function TestIssuesIdentity (line 738) | func TestIssuesIdentity(t *testing.T) { function findNodeID (line 869) | func findNodeID(tb testing.TB, srv *servertest.TestServer, hostname stri... FILE: hscontrol/servertest/lifecycle_test.go function TestConnectionLifecycle (line 16) | func TestConnectionLifecycle(t *testing.T) { FILE: hscontrol/servertest/policy_test.go function TestPolicyChanges (line 16) | func TestPolicyChanges(t *testing.T) { FILE: hscontrol/servertest/poll_race_test.go function TestPollRace (line 19) | func TestPollRace(t *testing.T) { FILE: hscontrol/servertest/race_test.go function TestRacePollSessionReplacement (line 26) | func TestRacePollSessionReplacement(t *testing.T) { function TestRaceConcurrentServerMutations (line 101) | func TestRaceConcurrentServerMutations(t *testing.T) { function TestRaceConnectDuringGracePeriod (line 310) | func TestRaceConnectDuringGracePeriod(t *testing.T) { function TestRaceBatcherContention (line 398) | func TestRaceBatcherContention(t *testing.T) { function TestRaceMapResponseDuringDisconnect (line 518) | func TestRaceMapResponseDuringDisconnect(t *testing.T) { function TestRaceNodeStoreContention (line 591) | func TestRaceNodeStoreContention(t *testing.T) { FILE: hscontrol/servertest/routes_test.go function TestRoutes (line 18) | func TestRoutes(t *testing.T) { FILE: hscontrol/servertest/server.go type TestServer (line 21) | type TestServer struct method State (line 148) | func (s *TestServer) State() *state.State { method CreateUser (line 153) | func (s *TestServer) CreateUser(tb testing.TB, name string) *types.User { method CreatePreAuthKey (line 165) | func (s *TestServer) CreatePreAuthKey(tb testing.TB, userID types.User... method CreateEphemeralPreAuthKey (line 179) | func (s *TestServer) CreateEphemeralPreAuthKey(tb testing.TB, userID t... type ServerOption (line 29) | type ServerOption type serverConfig (line 31) | type serverConfig struct function defaultServerConfig (line 38) | func defaultServerConfig() *serverConfig { function WithBatchDelay (line 48) | func WithBatchDelay(d time.Duration) ServerOption { function WithBufferedChanSize (line 53) | func WithBufferedChanSize(n int) ServerOption { function WithEphemeralTimeout (line 58) | func WithEphemeralTimeout(d time.Duration) ServerOption { function NewServer (line 65) | func NewServer(tb testing.TB, opts ...ServerOption) *TestServer { FILE: hscontrol/servertest/stress_test.go function TestStressConnectDisconnect (line 24) | func TestStressConnectDisconnect(t *testing.T) { function TestStressStateMutations (line 194) | func TestStressStateMutations(t *testing.T) { function TestStressDataIntegrity (line 331) | func TestStressDataIntegrity(t *testing.T) { function TestStressChurn (line 594) | func TestStressChurn(t *testing.T) { FILE: hscontrol/servertest/weather_test.go function TestNetworkWeather (line 14) | func TestNetworkWeather(t *testing.T) { FILE: hscontrol/state/debug.go type DebugOverviewInfo (line 15) | type DebugOverviewInfo struct type DebugDERPInfo (line 36) | type DebugDERPInfo struct type DebugDERPRegion (line 43) | type DebugDERPRegion struct type DebugDERPNode (line 50) | type DebugDERPNode struct type DebugStringInfo (line 58) | type DebugStringInfo struct method DebugOverview (line 63) | func (s *State) DebugOverview() string { method DebugNodeStore (line 151) | func (s *State) DebugNodeStore() string { method DebugDERPMap (line 156) | func (s *State) DebugDERPMap() string { method DebugSSHPolicies (line 188) | func (s *State) DebugSSHPolicies() map[string]*tailcfg.SSHPolicy { method DebugRegistrationCache (line 213) | func (s *State) DebugRegistrationCache() map[string]any { method DebugConfig (line 226) | func (s *State) DebugConfig() *types.Config { method DebugPolicy (line 231) | func (s *State) DebugPolicy() (string, error) { method DebugFilter (line 253) | func (s *State) DebugFilter() ([]tailcfg.FilterRule, error) { method DebugRoutes (line 259) | func (s *State) DebugRoutes() routes.DebugRoutes { method DebugRoutesString (line 264) | func (s *State) DebugRoutesString() string { method DebugPolicyManager (line 269) | func (s *State) DebugPolicyManager() string { method PolicyDebugString (line 274) | func (s *State) PolicyDebugString() string { method DebugOverviewJSON (line 279) | func (s *State) DebugOverviewJSON() DebugOverviewInfo { method DebugDERPJSON (line 338) | func (s *State) DebugDERPJSON() DebugDERPInfo { method DebugNodeStoreJSON (line 376) | func (s *State) DebugNodeStoreJSON() map[types.NodeID]types.Node { method DebugPolicyManagerJSON (line 382) | func (s *State) DebugPolicyManagerJSON() DebugStringInfo { FILE: hscontrol/state/debug_test.go function TestNodeStoreDebugString (line 9) | func TestNodeStoreDebugString(t *testing.T) { function TestDebugRegistrationCache (line 67) | func TestDebugRegistrationCache(t *testing.T) { FILE: hscontrol/state/endpoint_test.go function TestEndpointStorageInNodeStore (line 16) | func TestEndpointStorageInNodeStore(t *testing.T) { FILE: hscontrol/state/ephemeral_test.go function TestEphemeralNodeDeleteWithConcurrentUpdate (line 17) | func TestEphemeralNodeDeleteWithConcurrentUpdate(t *testing.T) { function TestUpdateNodeReturnsInvalidWhenDeletedInSameBatch (line 95) | func TestUpdateNodeReturnsInvalidWhenDeletedInSameBatch(t *testing.T) { function TestPersistNodeToDBPreventsRaceCondition (line 154) | func TestPersistNodeToDBPreventsRaceCondition(t *testing.T) { function TestEphemeralNodeLogoutRaceCondition (line 205) | func TestEphemeralNodeLogoutRaceCondition(t *testing.T) { function TestUpdateNodeDeletedInSameBatchReturnsInvalid (line 362) | func TestUpdateNodeDeletedInSameBatchReturnsInvalid(t *testing.T) { function TestPersistNodeToDBChecksNodeStoreBeforePersist (line 419) | func TestPersistNodeToDBChecksNodeStoreBeforePersist(t *testing.T) { FILE: hscontrol/state/maprequest.go function netInfoFromMapRequest (line 15) | func netInfoFromMapRequest( FILE: hscontrol/state/maprequest_test.go function TestNetInfoFromMapRequest (line 12) | func TestNetInfoFromMapRequest(t *testing.T) { function TestNetInfoPreservationInRegistrationFlow (line 74) | func TestNetInfoPreservationInRegistrationFlow(t *testing.T) { FILE: hscontrol/state/node_store.go constant put (line 18) | put = 1 constant del (line 19) | del = 2 constant update (line 20) | update = 3 constant rebuildPeerMaps (line 21) | rebuildPeerMaps = 4 constant prometheusNamespace (line 24) | prometheusNamespace = "headscale" type NodeStore (line 85) | type NodeStore struct method PutNode (line 156) | func (s *NodeStore) PutNode(n types.Node) types.NodeView { method UpdateNode (line 199) | func (s *NodeStore) UpdateNode(nodeID types.NodeID, updateFn func(n *t... method DeleteNode (line 228) | func (s *NodeStore) DeleteNode(id types.NodeID) { method Start (line 249) | func (s *NodeStore) Start() { method Stop (line 255) | func (s *NodeStore) Stop() { method processWrite (line 260) | func (s *NodeStore) processWrite() { method applyBatch (line 306) | func (s *NodeStore) applyBatch(batch []work) { method GetNode (line 451) | func (s *NodeStore) GetNode(id types.NodeID) (types.NodeView, bool) { method GetNodeByNodeKey (line 469) | func (s *NodeStore) GetNodeByNodeKey(nodeKey key.NodePublic) (types.No... method GetNodeByMachineKey (line 481) | func (s *NodeStore) GetNodeByMachineKey(machineKey key.MachinePublic, ... method GetNodeByMachineKeyAnyUser (line 503) | func (s *NodeStore) GetNodeByMachineKeyAnyUser(machineKey key.MachineP... method DebugString (line 521) | func (s *NodeStore) DebugString() string { method ListNodes (line 580) | func (s *NodeStore) ListNodes() views.Slice[types.NodeView] { method ListPeers (line 590) | func (s *NodeStore) ListPeers(id types.NodeID) views.Slice[types.NodeV... method RebuildPeerMaps (line 603) | func (s *NodeStore) RebuildPeerMaps() { method ListNodesByUser (line 617) | func (s *NodeStore) ListNodesByUser(uid types.UserID) views.Slice[type... function NewNodeStore (line 95) | func NewNodeStore(allNodes types.Nodes, peersFunc PeersFunc, batchSize i... type Snapshot (line 121) | type Snapshot struct type PeersFunc (line 137) | type PeersFunc type work (line 140) | type work struct type UpdateNodeFunc (line 183) | type UpdateNodeFunc function snapshotFromNodes (line 395) | func snapshotFromNodes(nodes map[types.NodeID]types.Node, peersFunc Peer... FILE: hscontrol/state/node_store_test.go function TestSnapshotFromNodes (line 18) | func TestSnapshotFromNodes(t *testing.T) { function createTestNode (line 161) | func createTestNode(nodeID types.NodeID, userID uint, username, hostname... function allowAllPeersFunc (line 192) | func allowAllPeersFunc(nodes []types.NodeView) map[types.NodeID][]types.... function oddEvenPeersFunc (line 209) | func oddEvenPeersFunc(nodes []types.NodeView) map[types.NodeID][]types.N... function TestNodeStoreOperations (line 235) | func TestNodeStoreOperations(t *testing.T) { type testStep (line 868) | type testStep struct function createConcurrentTestNode (line 876) | func createConcurrentTestNode(id types.NodeID, hostname string) types.No... function TestNodeStoreConcurrentPutNode (line 893) | func TestNodeStoreConcurrentPutNode(t *testing.T) { function TestNodeStoreBatchingEfficiency (line 932) | func TestNodeStoreBatchingEfficiency(t *testing.T) { function TestNodeStoreRaceConditions (line 971) | func TestNodeStoreRaceConditions(t *testing.T) { function TestNodeStoreResourceCleanup (line 1040) | func TestNodeStoreResourceCleanup(t *testing.T) { function TestNodeStoreOperationTimeout (line 1083) | func TestNodeStoreOperationTimeout(t *testing.T) { function TestNodeStoreUpdateNonExistentNode (line 1187) | func TestNodeStoreUpdateNonExistentNode(t *testing.T) { function BenchmarkNodeStoreAllocations (line 1209) | func BenchmarkNodeStoreAllocations(b *testing.B) { function TestNodeStoreAllocationStats (line 1230) | func TestNodeStoreAllocationStats(t *testing.T) { function TestRebuildPeerMapsWithChangedPeersFunc (line 1240) | func TestRebuildPeerMapsWithChangedPeersFunc(t *testing.T) { FILE: hscontrol/state/ssh_check_test.go function newTestStateForSSHCheck (line 13) | func newTestStateForSSHCheck() *State { function TestSSHCheckAuth (line 19) | func TestSSHCheckAuth(t *testing.T) { function TestSSHCheckAuthClear (line 48) | func TestSSHCheckAuthClear(t *testing.T) { function TestSSHCheckAuthConcurrent (line 70) | func TestSSHCheckAuthConcurrent(t *testing.T) { FILE: hscontrol/state/state.go constant registerCacheExpiration (line 38) | registerCacheExpiration = time.Minute * 15 constant registerCacheCleanup (line 41) | registerCacheCleanup = time.Minute * 20 constant defaultNodeStoreBatchSize (line 45) | defaultNodeStoreBatchSize = 100 constant defaultNodeStoreBatchTimeout (line 49) | defaultNodeStoreBatchTimeout = 500 * time.Millisecond type sshCheckPair (line 72) | type sshCheckPair struct type State (line 79) | type State struct method Close (line 230) | func (s *State) Close() error { method SetDERPMap (line 242) | func (s *State) SetDERPMap(dm *tailcfg.DERPMap) { method DERPMap (line 247) | func (s *State) DERPMap() tailcfg.DERPMapView { method ReloadPolicy (line 253) | func (s *State) ReloadPolicy() ([]change.Change, error) { method CreateUser (line 304) | func (s *State) CreateUser(user types.User) (*types.User, change.Chang... method UpdateUser (line 332) | func (s *State) UpdateUser(userID types.UserID, updateFn func(*types.U... method DeleteUser (line 370) | func (s *State) DeleteUser(userID types.UserID) (change.Change, error) { method RenameUser (line 394) | func (s *State) RenameUser(userID types.UserID, newName string) (*type... method GetUserByID (line 402) | func (s *State) GetUserByID(userID types.UserID) (*types.User, error) { method GetUserByName (line 407) | func (s *State) GetUserByName(name string) (*types.User, error) { method GetUserByOIDCIdentifier (line 412) | func (s *State) GetUserByOIDCIdentifier(id string) (*types.User, error) { method ListUsersWithFilter (line 417) | func (s *State) ListUsersWithFilter(filter *types.User) ([]types.User,... method ListAllUsers (line 422) | func (s *State) ListAllUsers() ([]types.User, error) { method persistNodeToDB (line 431) | func (s *State) persistNodeToDB(node types.NodeView) (types.NodeView, ... method SaveNode (line 477) | func (s *State) SaveNode(node types.NodeView) (types.NodeView, change.... method DeleteNode (line 489) | func (s *State) DeleteNode(node types.NodeView) (change.Change, error) { method Connect (line 520) | func (s *State) Connect(id types.NodeID) ([]change.Change, uint64) { method nextConnectGen (line 553) | func (s *State) nextConnectGen(id types.NodeID) uint64 { method connectGeneration (line 565) | func (s *State) connectGeneration(id types.NodeID) uint64 { method Disconnect (line 584) | func (s *State) Disconnect(id types.NodeID, gen uint64) ([]change.Chan... method GetNodeByID (line 640) | func (s *State) GetNodeByID(nodeID types.NodeID) (types.NodeView, bool) { method GetNodeByNodeKey (line 648) | func (s *State) GetNodeByNodeKey(nodeKey key.NodePublic) (types.NodeVi... method GetNodeByMachineKey (line 656) | func (s *State) GetNodeByMachineKey(machineKey key.MachinePublic, user... method ListNodes (line 661) | func (s *State) ListNodes(nodeIDs ...types.NodeID) views.Slice[types.N... method ListNodesByUser (line 686) | func (s *State) ListNodesByUser(userID types.UserID) views.Slice[types... method ListPeers (line 691) | func (s *State) ListPeers(nodeID types.NodeID, peerIDs ...types.NodeID... method ListEphemeralNodes (line 716) | func (s *State) ListEphemeralNodes() views.Slice[types.NodeView] { method SetNodeExpiry (line 733) | func (s *State) SetNodeExpiry(nodeID types.NodeID, expiry *time.Time) ... method SetNodeTags (line 769) | func (s *State) SetNodeTags(nodeID types.NodeID, tags []string) (types... method SetApprovedRoutes (line 833) | func (s *State) SetApprovedRoutes(nodeID types.NodeID, routes []netip.... method RenameNode (line 866) | func (s *State) RenameNode(nodeID types.NodeID, newName string) (types... method BackfillNodeIPs (line 896) | func (s *State) BackfillNodeIPs() ([]string, error) { method ExpireExpiredNodes (line 934) | func (s *State) ExpireExpiredNodes(lastCheck time.Time) (time.Time, []... method SSHPolicy (line 961) | func (s *State) SSHPolicy(node types.NodeView) (*tailcfg.SSHPolicy, er... method SSHCheckParams (line 967) | func (s *State) SSHCheckParams( method Filter (line 974) | func (s *State) Filter() ([]tailcfg.FilterRule, []matcher.Match) { method FilterForNode (line 979) | func (s *State) FilterForNode(node types.NodeView) ([]tailcfg.FilterRu... method MatchersForNode (line 984) | func (s *State) MatchersForNode(node types.NodeView) ([]matcher.Match,... method NodeCanHaveTag (line 989) | func (s *State) NodeCanHaveTag(node types.NodeView, tag string) bool { method SetPolicy (line 994) | func (s *State) SetPolicy(pol []byte) (bool, error) { method AutoApproveRoutes (line 1008) | func (s *State) AutoApproveRoutes(nv types.NodeView) (change.Change, e... method GetPolicy (line 1039) | func (s *State) GetPolicy() (*types.Policy, error) { method SetPolicyInDB (line 1044) | func (s *State) SetPolicyInDB(data string) (*types.Policy, error) { method SetNodeRoutes (line 1049) | func (s *State) SetNodeRoutes(nodeID types.NodeID, routes ...netip.Pre... method GetNodePrimaryRoutes (line 1060) | func (s *State) GetNodePrimaryRoutes(nodeID types.NodeID) []netip.Pref... method PrimaryRoutesString (line 1065) | func (s *State) PrimaryRoutesString() string { method ValidateAPIKey (line 1070) | func (s *State) ValidateAPIKey(keyStr string) (bool, error) { method CreateAPIKey (line 1075) | func (s *State) CreateAPIKey(expiration *time.Time) (string, *types.AP... method GetAPIKey (line 1081) | func (s *State) GetAPIKey(displayPrefix string) (*types.APIKey, error) { method GetAPIKeyByID (line 1092) | func (s *State) GetAPIKeyByID(id uint64) (*types.APIKey, error) { method ExpireAPIKey (line 1097) | func (s *State) ExpireAPIKey(key *types.APIKey) error { method ListAPIKeys (line 1102) | func (s *State) ListAPIKeys() ([]types.APIKey, error) { method DestroyAPIKey (line 1107) | func (s *State) DestroyAPIKey(key types.APIKey) error { method CreatePreAuthKey (line 1113) | func (s *State) CreatePreAuthKey(userID *types.UserID, reusable bool, ... method CreateUserForTest (line 1120) | func (s *State) CreateUserForTest(name ...string) *types.User { method CreateNodeForTest (line 1125) | func (s *State) CreateNodeForTest(user *types.User, hostname ...string... method CreateRegisteredNodeForTest (line 1130) | func (s *State) CreateRegisteredNodeForTest(user *types.User, hostname... method CreateNodesForTest (line 1135) | func (s *State) CreateNodesForTest(user *types.User, count int, namePr... method CreateUsersForTest (line 1140) | func (s *State) CreateUsersForTest(count int, namePrefix ...string) []... method DB (line 1145) | func (s *State) DB() *hsdb.HSDatabase { method GetPreAuthKey (line 1150) | func (s *State) GetPreAuthKey(id string) (*types.PreAuthKey, error) { method ListPreAuthKeys (line 1155) | func (s *State) ListPreAuthKeys() ([]types.PreAuthKey, error) { method ExpirePreAuthKey (line 1160) | func (s *State) ExpirePreAuthKey(id uint64) error { method DeletePreAuthKey (line 1165) | func (s *State) DeletePreAuthKey(id uint64) error { method GetAuthCacheEntry (line 1170) | func (s *State) GetAuthCacheEntry(id types.AuthID) (*types.AuthRequest... method SetAuthCacheEntry (line 1180) | func (s *State) SetAuthCacheEntry(id types.AuthID, entry types.AuthReq... method SetLastSSHAuth (line 1186) | func (s *State) SetLastSSHAuth(src, dst types.NodeID) { method GetLastSSHAuth (line 1195) | func (s *State) GetLastSSHAuth(src, dst types.NodeID) (time.Time, bool) { method ClearSSHCheckAuth (line 1206) | func (s *State) ClearSSHCheckAuth() { method createAndSaveNewNode (line 1424) | func (s *State) createAndSaveNewNode(params newNodeParams) (types.Node... method validateRequestTags (line 1562) | func (s *State) validateRequestTags(node types.NodeView, requestTags [... method processReauthTags (line 1582) | func (s *State) processReauthTags( method HandleNodeFromAuthPath (line 1671) | func (s *State) HandleNodeFromAuthPath( method createNewNodeFromAuth (line 1814) | func (s *State) createNewNodeFromAuth( method findExistingNodeForPAK (line 1847) | func (s *State) findExistingNodeForPAK( method updatePolicyManagerUsers (line 2116) | func (s *State) updatePolicyManagerUsers() (change.Change, error) { method UpdatePolicyManagerUsersForTest (line 2141) | func (s *State) UpdatePolicyManagerUsersForTest() error { method updatePolicyManagerNodes (line 2152) | func (s *State) updatePolicyManagerNodes() (change.Change, error) { method PingDB (line 2171) | func (s *State) PingDB(ctx context.Context) error { method autoApproveNodes (line 2181) | func (s *State) autoApproveNodes() ([]change.Change, error) { method UpdateNodeFromMapRequest (line 2233) | func (s *State) UpdateNodeFromMapRequest(id types.NodeID, req tailcfg.... method maybeUpdateNodeRoutes (line 2468) | func (s *State) maybeUpdateNodeRoutes( function NewState (line 130) | func NewState(cfg *types.Config) (*State, error) { function logHostinfoValidation (line 1214) | func logHostinfoValidation(nv types.NodeView, username, hostname string) { function preserveNetInfo (line 1234) | func preserveNetInfo(existingNode types.NodeView, nodeID types.NodeID, v... type newNodeParams (line 1244) | type newNodeParams struct type authNodeUpdateParams (line 1263) | type authNodeUpdateParams struct function buildMapRequestChangeResponse (line 2393) | func buildMapRequestChangeResponse( function hostinfoEqual (line 2425) | func hostinfoEqual(oldNode types.NodeView, newHI *tailcfg.Hostinfo) bool { function routesChanged (line 2439) | func routesChanged(oldNode types.NodeView, newHI *tailcfg.Hostinfo) bool { function peerChangeEmpty (line 2456) | func peerChangeEmpty(peerChange tailcfg.PeerChange) bool { FILE: hscontrol/state/tags.go function validateNodeOwnership (line 29) | func validateNodeOwnership(node *types.Node) error { function logTagOperation (line 51) | func logTagOperation(existingNode types.NodeView, newTags []string) { FILE: hscontrol/state/test_helpers.go constant TestBatchSize (line 10) | TestBatchSize = 5 constant TestBatchTimeout (line 11) | TestBatchTimeout = 5 * time.Millisecond FILE: hscontrol/tailsql.go function runTailSQLService (line 19) | func runTailSQLService(ctx context.Context, logf logger.Logf, stateDir, ... FILE: hscontrol/templates/apple.go function Apple (line 11) | func Apple(url string) *elem.Element { FILE: hscontrol/templates/auth_success.go type AuthSuccessResult (line 11) | type AuthSuccessResult struct function AuthSuccess (line 36) | func AuthSuccess(result AuthSuccessResult) *elem.Element { FILE: hscontrol/templates/auth_web.go function AuthWeb (line 10) | func AuthWeb(title, description, command string) *elem.Element { FILE: hscontrol/templates/design.go constant colorTextPrimary (line 18) | colorTextPrimary = "#000000de" constant colorTextSecondary (line 19) | colorTextSecondary = "#0000008a" constant colorTextTertiary (line 20) | colorTextTertiary = "#00000052" constant colorTextLightest (line 21) | colorTextLightest = "#00000012" constant colorCodeFg (line 24) | colorCodeFg = "#36464e" constant colorCodeBg (line 25) | colorCodeBg = "#f5f5f5" constant colorBorderLight (line 28) | colorBorderLight = "#e5e7eb" constant colorBorderMedium (line 29) | colorBorderMedium = "#d1d5db" constant colorBackgroundPage (line 32) | colorBackgroundPage = "#ffffff" constant colorBackgroundCard (line 33) | colorBackgroundCard = "#ffffff" constant colorPrimaryAccent (line 36) | colorPrimaryAccent = "#4051b5" constant colorAccent (line 37) | colorAccent = "#526cfe" constant colorSuccess (line 40) | colorSuccess = "#059669" constant colorSuccessLight (line 41) | colorSuccessLight = "#d1fae5" constant spaceXS (line 48) | spaceXS = "0.25rem" constant spaceS (line 49) | spaceS = "0.5rem" constant spaceM (line 50) | spaceM = "1rem" constant spaceL (line 51) | spaceL = "1.5rem" constant spaceXL (line 52) | spaceXL = "2rem" constant space2XL (line 53) | space2XL = "3rem" constant space3XL (line 54) | space3XL = "4rem" constant fontFamilySystem (line 62) | fontFamilySystem = `"Roboto", -apple-system, BlinkMacSystemFont, "Segoe ... constant fontFamilyCode (line 63) | fontFamilyCode = `"Roboto Mono", "SF Mono", Monaco, "Cascadia Code", C... constant fontSizeBase (line 66) | fontSizeBase = "0.8rem" constant fontSizeH1 (line 67) | fontSizeH1 = "2em" constant fontSizeH2 (line 68) | fontSizeH2 = "1.5625em" constant fontSizeH3 (line 69) | fontSizeH3 = "1.25em" constant fontSizeSmall (line 70) | fontSizeSmall = "0.8em" constant fontSizeCode (line 71) | fontSizeCode = "0.85em" constant lineHeightBase (line 74) | lineHeightBase = "1.6" constant lineHeightH1 (line 75) | lineHeightH1 = "1.3" constant lineHeightH2 (line 76) | lineHeightH2 = "1.4" constant lineHeightH3 (line 77) | lineHeightH3 = "1.5" constant lineHeightCode (line 78) | lineHeightCode = "1.4" function responsiveContainer (line 86) | func responsiveContainer(children ...elem.Node) *elem.Element { function card (line 104) | func card(title string, children ...elem.Node) *elem.Element { function codeBlock (line 138) | func codeBlock(code string) *elem.Element { function baseTypesetStyles (line 168) | func baseTypesetStyles() styles.Props { function h1Styles (line 184) | func h1Styles() styles.Props { function h2Styles (line 202) | func h2Styles() styles.Props { function h3Styles (line 220) | func h3Styles() styles.Props { function paragraphStyles (line 238) | func paragraphStyles() styles.Props { function orderedListStyles (line 254) | func orderedListStyles() styles.Props { function unorderedListStyles (line 272) | func unorderedListStyles() styles.Props { function linkStyles (line 291) | func linkStyles() styles.Props { function inlineCodeStyles (line 305) | func inlineCodeStyles() styles.Props { function inlineCode (line 321) | func inlineCode(code string) *elem.Element { function orDivider (line 331) | func orDivider() *elem.Element { function successBox (line 373) | func successBox(heading string, children ...elem.Node) *elem.Element { function checkboxIcon (line 403) | func checkboxIcon() elem.Node { function warningBox (line 412) | func warningBox(title, message string) *elem.Element { function downloadButton (line 449) | func downloadButton(href, text string) *elem.Element { function externalLink (line 473) | func externalLink(href, text string) *elem.Element { function instructionStep (line 489) | func instructionStep(_ int, text string) *elem.Element { function statusMessage (line 502) | func statusMessage(message string, isSuccess bool) *elem.Element { FILE: hscontrol/templates/general.go function mdTypesetBody (line 13) | func mdTypesetBody(children ...elem.Node) *elem.Element { function H1 (line 40) | func H1(children ...elem.Node) *elem.Element { function H2 (line 45) | func H2(children ...elem.Node) *elem.Element { function H3 (line 50) | func H3(children ...elem.Node) *elem.Element { function P (line 55) | func P(children ...elem.Node) *elem.Element { function Ol (line 60) | func Ol(children ...elem.Node) *elem.Element { function Ul (line 65) | func Ul(children ...elem.Node) *elem.Element { function A (line 70) | func A(href string, children ...elem.Node) *elem.Element { function Code (line 75) | func Code(children ...elem.Node) *elem.Element { function Pre (line 80) | func Pre(children ...elem.Node) *elem.Element { function PreCode (line 85) | func PreCode(code string) *elem.Element { function headerOne (line 90) | func headerOne(text string) *elem.Element { function headerTwo (line 95) | func headerTwo(text string) *elem.Element { function headerThree (line 100) | func headerThree(text string) *elem.Element { function contentContainer (line 106) | func contentContainer(children ...elem.Node) *elem.Element { function headscaleLogo (line 120) | func headscaleLogo() elem.Node { function pageFooter (line 126) | func pageFooter() *elem.Element { function HtmlStructure (line 165) | func HtmlStructure(head, body *elem.Element) *elem.Element { function BlankPage (line 203) | func BlankPage() *elem.Element { FILE: hscontrol/templates/windows.go function Windows (line 7) | func Windows(url string) *elem.Element { FILE: hscontrol/templates_consistency_test.go function TestTemplateHTMLConsistency (line 11) | func TestTemplateHTMLConsistency(t *testing.T) { function TestTemplateModernHTMLFeatures (line 86) | func TestTemplateModernHTMLFeatures(t *testing.T) { function TestTemplateExternalLinkSecurity (line 146) | func TestTemplateExternalLinkSecurity(t *testing.T) { function TestTemplateAccessibilityAttributes (line 235) | func TestTemplateAccessibilityAttributes(t *testing.T) { FILE: hscontrol/types/api_key.go constant NewAPIKeyPrefixLength (line 14) | NewAPIKeyPrefixLength = 12 constant LegacyAPIKeyPrefixLength (line 16) | LegacyAPIKeyPrefixLength = 7 type APIKey (line 21) | type APIKey struct method Proto (line 31) | func (key *APIKey) Proto() *v1.ApiKey { method maskedPrefix (line 62) | func (k *APIKey) maskedPrefix() string { method MarshalZerologObject (line 73) | func (k *APIKey) MarshalZerologObject(e *zerolog.Event) { FILE: hscontrol/types/change/change.go type Change (line 13) | type Change struct method boolFieldNames (line 46) | func (r Change) boolFieldNames() []string { method Merge (line 58) | func (r Change) Merge(other Change) Change { method IsEmpty (line 94) | func (r Change) IsEmpty() bool { method IsSelfOnly (line 109) | func (r Change) IsSelfOnly() bool { method IsTargetedToNode (line 122) | func (r Change) IsTargetedToNode() bool { method IsFull (line 127) | func (r Change) IsFull() bool { method Type (line 135) | func (r Change) Type() string { method ShouldSendToNode (line 165) | func (r Change) ShouldSendToNode(nodeID types.NodeID) bool { function HasFull (line 175) | func HasFull(rs []Change) bool { function SplitTargetedAndBroadcast (line 186) | func SplitTargetedAndBroadcast(rs []Change) ([]Change, []Change) { function FilterForNode (line 201) | func FilterForNode(nodeID types.NodeID, rs []Change) []Change { function uniqueNodeIDs (line 213) | func uniqueNodeIDs(ids []types.NodeID) []types.NodeID { function FullUpdate (line 225) | func FullUpdate() Change { function FullSelf (line 238) | func FullSelf(nodeID types.NodeID) Change { function SelfUpdate (line 251) | func SelfUpdate(nodeID types.NodeID) Change { function PolicyOnly (line 259) | func PolicyOnly() Change { function PolicyAndPeers (line 266) | func PolicyAndPeers(changedPeers ...types.NodeID) Change { function VisibilityChange (line 274) | func VisibilityChange(reason string, added, removed []types.NodeID) Chan... function PeersChanged (line 283) | func PeersChanged(reason string, peerIDs ...types.NodeID) Change { function PeersRemoved (line 290) | func PeersRemoved(peerIDs ...types.NodeID) Change { function PeerPatched (line 297) | func PeerPatched(reason string, patches ...*tailcfg.PeerChange) Change { function DERPMap (line 304) | func DERPMap() Change { function PolicyChange (line 313) | func PolicyChange() Change { function DNSConfig (line 322) | func DNSConfig() Change { function NodeOnline (line 330) | func NodeOnline(nodeID types.NodeID) Change { function NodeOffline (line 343) | func NodeOffline(nodeID types.NodeID) Change { function KeyExpiry (line 356) | func KeyExpiry(nodeID types.NodeID, expiry *time.Time) Change { function NodeAdded (line 372) | func NodeAdded(id types.NodeID) Change { function NodeRemoved (line 380) | func NodeRemoved(id types.NodeID) Change { function NodeOnlineFor (line 386) | func NodeOnlineFor(node types.NodeView) Change { function NodeOfflineFor (line 399) | func NodeOfflineFor(node types.NodeView) Change { function KeyExpiryFor (line 412) | func KeyExpiryFor(id types.NodeID, expiry time.Time) Change { function EndpointOrDERPUpdate (line 421) | func EndpointOrDERPUpdate(id types.NodeID, patch *tailcfg.PeerChange) Ch... function UserAdded (line 430) | func UserAdded() Change { function UserRemoved (line 439) | func UserRemoved() Change { function ExtraRecords (line 447) | func ExtraRecords() Change { FILE: hscontrol/types/change/change_test.go function TestChange_FieldSync (line 12) | func TestChange_FieldSync(t *testing.T) { function TestChange_IsEmpty (line 31) | func TestChange_IsEmpty(t *testing.T) { function TestChange_IsSelfOnly (line 102) | func TestChange_IsSelfOnly(t *testing.T) { function TestChange_Merge (line 168) | func TestChange_Merge(t *testing.T) { function TestChange_Constructors (line 276) | func TestChange_Constructors(t *testing.T) { function TestSelfUpdate (line 326) | func TestSelfUpdate(t *testing.T) { function TestPolicyAndPeers (line 334) | func TestPolicyAndPeers(t *testing.T) { function TestVisibilityChange (line 341) | func TestVisibilityChange(t *testing.T) { function TestPeersChanged (line 349) | func TestPeersChanged(t *testing.T) { function TestPeersRemoved (line 356) | func TestPeersRemoved(t *testing.T) { function TestPeerPatched (line 362) | func TestPeerPatched(t *testing.T) { function TestChange_Type (line 369) | func TestChange_Type(t *testing.T) { function TestUniqueNodeIDs (line 435) | func TestUniqueNodeIDs(t *testing.T) { FILE: hscontrol/types/common.go constant SelfUpdateIdentifier (line 19) | SelfUpdateIdentifier = "self-update" constant DatabasePostgres (line 20) | DatabasePostgres = "postgres" constant DatabaseSqlite (line 21) | DatabaseSqlite = "sqlite3" type StateUpdateType (line 31) | type StateUpdateType method String (line 33) | func (su StateUpdateType) String() string { constant StateFullUpdate (line 53) | StateFullUpdate StateUpdateType = iota constant StatePeerChanged (line 58) | StatePeerChanged constant StatePeerChangedPatch (line 59) | StatePeerChangedPatch constant StatePeerRemoved (line 60) | StatePeerRemoved constant StateSelfUpdate (line 66) | StateSelfUpdate constant StateDERPUpdated (line 67) | StateDERPUpdated type StateUpdate (line 73) | type StateUpdate struct method Empty (line 101) | func (su *StateUpdate) Empty() bool { function UpdateFull (line 118) | func UpdateFull() StateUpdate { function UpdateSelf (line 124) | func UpdateSelf(nodeID NodeID) StateUpdate { function UpdatePeerChanged (line 131) | func UpdatePeerChanged(nodeIDs ...NodeID) StateUpdate { function UpdatePeerPatch (line 138) | func UpdatePeerPatch(changes ...*tailcfg.PeerChange) StateUpdate { function UpdatePeerRemoved (line 145) | func UpdatePeerRemoved(nodeIDs ...NodeID) StateUpdate { function UpdateExpire (line 152) | func UpdateExpire(nodeID NodeID, expiry time.Time) StateUpdate { constant authIDPrefix (line 165) | authIDPrefix = "hskey-authreq-" constant authIDRandomLength (line 166) | authIDRandomLength = 24 constant AuthIDLength (line 168) | AuthIDLength = 38 type AuthID (line 171) | type AuthID method String (line 202) | func (r AuthID) String() string { method Validate (line 206) | func (r AuthID) Validate() error { function NewAuthID (line 173) | func NewAuthID() (AuthID, error) { function MustAuthID (line 182) | func MustAuthID() AuthID { function AuthIDFromString (line 191) | func AuthIDFromString(str string) (AuthID, error) { type AuthRequest (line 228) | type AuthRequest struct method Node (line 252) | func (rn *AuthRequest) Node() NodeView { method FinishAuth (line 260) | func (rn *AuthRequest) FinishAuth(verdict AuthVerdict) { method WaitForAuth (line 273) | func (rn *AuthRequest) WaitForAuth() <-chan AuthVerdict { function NewAuthRequest (line 234) | func NewAuthRequest() AuthRequest { function NewRegisterAuthRequest (line 241) | func NewRegisterAuthRequest(node Node) AuthRequest { type AuthVerdict (line 277) | type AuthVerdict struct method Accept (line 289) | func (v AuthVerdict) Accept() bool { function DefaultBatcherWorkers (line 295) | func DefaultBatcherWorkers() int { function DefaultBatcherWorkersFor (line 301) | func DefaultBatcherWorkersFor(cpuCount int) int { FILE: hscontrol/types/common_test.go function TestDefaultBatcherWorkersFor (line 7) | func TestDefaultBatcherWorkersFor(t *testing.T) { function TestDefaultBatcherWorkers (line 30) | func TestDefaultBatcherWorkers(t *testing.T) { FILE: hscontrol/types/config.go constant defaultOIDCExpiryTime (line 27) | defaultOIDCExpiryTime = 180 * 24 * time.Hour constant maxDuration (line 28) | maxDuration time.Duration = 1<<63 - 1 constant PKCEMethodPlain (line 29) | PKCEMethodPlain string = "plain" constant PKCEMethodS256 (line 30) | PKCEMethodS256 string = "S256" constant defaultNodeStoreBatchSize (line 32) | defaultNodeStoreBatchSize = 100 type IPAllocationStrategy (line 44) | type IPAllocationStrategy constant IPAllocationStrategySequential (line 47) | IPAllocationStrategySequential IPAllocationStrategy = "sequential" constant IPAllocationStrategyRandom (line 48) | IPAllocationStrategyRandom IPAllocationStrategy = "random" type PolicyMode (line 51) | type PolicyMode constant PolicyModeDB (line 54) | PolicyModeDB = "database" constant PolicyModeFile (line 55) | PolicyModeFile = "file" type Config (line 59) | type Config struct method Domain (line 312) | func (c *Config) Domain() string { type DNSConfig (line 108) | type DNSConfig struct method globalResolvers (line 755) | func (d *DNSConfig) globalResolvers() []*dnstype.Resolver { method splitResolvers (line 785) | func (d *DNSConfig) splitResolvers() map[string][]*dnstype.Resolver { type Nameservers (line 118) | type Nameservers struct type SqliteConfig (line 123) | type SqliteConfig struct type PostgresConfig (line 129) | type PostgresConfig struct type GormConfig (line 141) | type GormConfig struct type DatabaseConfig (line 149) | type DatabaseConfig struct type TLSConfig (line 161) | type TLSConfig struct type LetsEncryptConfig (line 168) | type LetsEncryptConfig struct type PKCEConfig (line 175) | type PKCEConfig struct type OIDCConfig (line 180) | type OIDCConfig struct type DERPConfig (line 196) | type DERPConfig struct type LogTailConfig (line 214) | type LogTailConfig struct type TaildropConfig (line 218) | type TaildropConfig struct type CLIConfig (line 222) | type CLIConfig struct type PolicyConfig (line 229) | type PolicyConfig struct method IsEmpty (line 234) | func (p *PolicyConfig) IsEmpty() bool { type LogConfig (line 238) | type LogConfig struct type Tuning (line 248) | type Tuning struct function validatePKCEMethod (line 302) | func validatePKCEMethod(method string) error { function LoadConfig (line 327) | func LoadConfig(path string, isFile bool) error { function validateServerConfig (line 421) | func validateServerConfig() error { function tlsConfig (line 531) | func tlsConfig() TLSConfig { function derpConfig (line 550) | func derpConfig() DERPConfig { function logtailConfig (line 615) | func logtailConfig() LogTailConfig { function policyConfig (line 623) | func policyConfig() PolicyConfig { function logConfig (line 633) | func logConfig() LogConfig { function databaseConfig (line 665) | func databaseConfig() DatabaseConfig { function dns (line 718) | func dns() (DNSConfig, error) { function dnsToTailcfgDNS (line 817) | func dnsToTailcfgDNS(dns DNSConfig) *tailcfg.DNSConfig { function warnBanner (line 848) | func warnBanner(lines []string) { function prefixV4 (line 874) | func prefixV4() (*netip.Prefix, bool, error) { function prefixV6 (line 894) | func prefixV6() (*netip.Prefix, bool, error) { function LoadCLIConfig (line 915) | func LoadCLIConfig() (*Config, error) { function LoadServerConfig (line 934) | func LoadServerConfig() (*Config, error) { function isSafeServerURL (line 1153) | func isSafeServerURL(serverURL, baseDomain string) error { type deprecator (line 1182) | type deprecator struct method warnWithAlias (line 1191) | func (d *deprecator) warnWithAlias(newKey, oldKey string) { method fatal (line 1208) | func (d *deprecator) fatal(oldKey string) { method fatalIfNewKeyIsNotUsed (line 1221) | func (d *deprecator) fatalIfNewKeyIsNotUsed(newKey, oldKey string) { method warnNoAlias (line 1239) | func (d *deprecator) warnNoAlias(newKey, oldKey string) { method warn (line 1255) | func (d *deprecator) warn(oldKey string) { method String (line 1266) | func (d *deprecator) String() string { method Log (line 1280) | func (d *deprecator) Log() { FILE: hscontrol/types/config_test.go function TestReadConfig (line 18) | func TestReadConfig(t *testing.T) { function TestReadConfigFromEnv (line 266) | func TestReadConfigFromEnv(t *testing.T) { function TestTLSConfigValidation (line 353) | func TestTLSConfigValidation(t *testing.T) { function TestSafeServerURL (line 419) | func TestSafeServerURL(t *testing.T) { FILE: hscontrol/types/const.go constant HTTPTimeout (line 6) | HTTPTimeout = 30 * time.Second constant HTTPShutdownTimeout (line 7) | HTTPShutdownTimeout = 3 * time.Second constant TLSALPN01ChallengeType (line 8) | TLSALPN01ChallengeType = "TLS-ALPN-01" constant HTTP01ChallengeType (line 9) | HTTP01ChallengeType = "HTTP-01" constant JSONLogFormat (line 11) | JSONLogFormat = "json" constant TextLogFormat (line 12) | TextLogFormat = "text" constant KeepAliveInterval (line 14) | KeepAliveInterval = 60 * time.Second constant MaxHostnameLength (line 15) | MaxHostnameLength = 255 FILE: hscontrol/types/main_test.go function TestMain (line 13) | func TestMain(m *testing.M) { FILE: hscontrol/types/node.go type RouteFunc (line 40) | type RouteFunc type NodeID (line 43) | type NodeID method StableID (line 51) | func (id NodeID) StableID() tailcfg.StableNodeID { method NodeID (line 55) | func (id NodeID) NodeID() tailcfg.NodeID { method Uint64 (line 59) | func (id NodeID) Uint64() uint64 { method String (line 63) | func (id NodeID) String() string { type NodeIDs (line 44) | type NodeIDs method Len (line 47) | func (n NodeIDs) Len() int { return len(n) } method Less (line 48) | func (n NodeIDs) Less(i, j int) bool { return n[i] < n[j] } method Swap (line 49) | func (n NodeIDs) Swap(i, j int) { n[i], n[j] = n[j], n[i] } function ParseNodeID (line 67) | func ParseNodeID(s string) (NodeID, error) { function MustParseNodeID (line 72) | func MustParseNodeID(s string) NodeID { type Node (line 82) | type Node struct method GivenNameHasBeenChanged (line 159) | func (node *Node) GivenNameHasBeenChanged() bool { method IsExpired (line 168) | func (node *Node) IsExpired() bool { method IsEphemeral (line 181) | func (node *Node) IsEphemeral() bool { method IPs (line 185) | func (node *Node) IPs() []netip.Addr { method HasIP (line 200) | func (node *Node) HasIP(i netip.Addr) bool { method IsTagged (line 213) | func (node *Node) IsTagged() bool { method IsUserOwned (line 219) | func (node *Node) IsUserOwned() bool { method HasTag (line 224) | func (node *Node) HasTag(tag string) bool { method TypedUserID (line 230) | func (node *Node) TypedUserID() UserID { method RequestTags (line 238) | func (node *Node) RequestTags() []string { method Prefixes (line 246) | func (node *Node) Prefixes() []netip.Prefix { method ExitRoutes (line 265) | func (node *Node) ExitRoutes() []netip.Prefix { method IsExitNode (line 277) | func (node *Node) IsExitNode() bool { method IPsAsString (line 281) | func (node *Node) IPsAsString() []string { method InIPSet (line 296) | func (node *Node) InIPSet(set *netipx.IPSet) bool { method AppendToIPSet (line 302) | func (node *Node) AppendToIPSet(build *netipx.IPSetBuilder) { method CanAccess (line 308) | func (node *Node) CanAccess(matchers []matcher.Match, node2 *Node) bool { method CanAccessRoute (line 336) | func (node *Node) CanAccessRoute(matchers []matcher.Match, route netip... method Proto (line 379) | func (node *Node) Proto() *v1.Node { method GetFQDN (line 428) | func (node *Node) GetFQDN(baseDomain string) (string, error) { method AnnouncedRoutes (line 456) | func (node *Node) AnnouncedRoutes() []netip.Prefix { method SubnetRoutes (line 472) | func (node *Node) SubnetRoutes() []netip.Prefix { method IsSubnetRouter (line 489) | func (node *Node) IsSubnetRouter() bool { method AllApprovedRoutes (line 494) | func (node *Node) AllApprovedRoutes() []netip.Prefix { method String (line 498) | func (node *Node) String() string { method MarshalZerologObject (line 505) | func (node *Node) MarshalZerologObject(e *zerolog.Event) { method PeerChangeFromMapRequest (line 538) | func (node *Node) PeerChangeFromMapRequest(req tailcfg.MapRequest) tai... method RegisterMethodToV1Enum (line 609) | func (node *Node) RegisterMethodToV1Enum() v1.RegisterMethod { method ApplyHostnameFromHostInfo (line 623) | func (node *Node) ApplyHostnameFromHostInfo(hostInfo *tailcfg.Hostinfo) { method ApplyPeerChange (line 669) | func (node *Node) ApplyPeerChange(change *tailcfg.PeerChange) { method DebugString (line 739) | func (node *Node) DebugString() string { type Nodes (line 147) | type Nodes method ViewSlice (line 149) | func (ns Nodes) ViewSlice() views.Slice[NodeView] { method FilterByIP (line 352) | func (nodes Nodes) FilterByIP(ip netip.Addr) Nodes { method ContainsNodeKey (line 369) | func (nodes Nodes) ContainsNodeKey(nodeKey key.NodePublic) bool { method String (line 707) | func (nodes Nodes) String() string { method IDMap (line 717) | func (nodes Nodes) IDMap() map[NodeID]*Node { method DebugString (line 727) | func (nodes Nodes) DebugString() string { function EndpointsChanged (line 585) | func EndpointsChanged(oldEndpoints, newEndpoints []netip.AddrPort) bool { method MarshalZerologObject (line 768) | func (nv NodeView) MarshalZerologObject(e *zerolog.Event) { method Owner (line 778) | func (nv NodeView) Owner() UserView { method IPs (line 786) | func (nv NodeView) IPs() []netip.Addr { method InIPSet (line 794) | func (nv NodeView) InIPSet(set *netipx.IPSet) bool { method CanAccess (line 802) | func (nv NodeView) CanAccess(matchers []matcher.Match, node2 NodeView) b... method CanAccessRoute (line 810) | func (nv NodeView) CanAccessRoute(matchers []matcher.Match, route netip.... method AnnouncedRoutes (line 818) | func (nv NodeView) AnnouncedRoutes() []netip.Prefix { method SubnetRoutes (line 826) | func (nv NodeView) SubnetRoutes() []netip.Prefix { method IsSubnetRouter (line 834) | func (nv NodeView) IsSubnetRouter() bool { method AllApprovedRoutes (line 842) | func (nv NodeView) AllApprovedRoutes() []netip.Prefix { method AppendToIPSet (line 850) | func (nv NodeView) AppendToIPSet(build *netipx.IPSetBuilder) { method RequestTagsSlice (line 858) | func (nv NodeView) RequestTagsSlice() views.Slice[string] { method IsTagged (line 871) | func (nv NodeView) IsTagged() bool { method IsExpired (line 880) | func (nv NodeView) IsExpired() bool { method IsEphemeral (line 890) | func (nv NodeView) IsEphemeral() bool { method PeerChangeFromMapRequest (line 901) | func (nv NodeView) PeerChangeFromMapRequest(req tailcfg.MapRequest) tail... method GetFQDN (line 910) | func (nv NodeView) GetFQDN(baseDomain string) (string, error) { method ExitRoutes (line 921) | func (nv NodeView) ExitRoutes() []netip.Prefix { method IsExitNode (line 929) | func (nv NodeView) IsExitNode() bool { method RequestTags (line 938) | func (nv NodeView) RequestTags() []string { method Proto (line 947) | func (nv NodeView) Proto() *v1.Node { method HasIP (line 956) | func (nv NodeView) HasIP(i netip.Addr) bool { method HasTag (line 965) | func (nv NodeView) HasTag(tag string) bool { method TypedUserID (line 975) | func (nv NodeView) TypedUserID() UserID { method TailscaleUserID (line 985) | func (nv NodeView) TailscaleUserID() tailcfg.UserID { method Prefixes (line 1000) | func (nv NodeView) Prefixes() []netip.Prefix { method IPsAsString (line 1009) | func (nv NodeView) IPsAsString() []string { method HasNetworkChanges (line 1020) | func (nv NodeView) HasNetworkChanges(other NodeView) bool { method HasPolicyChange (line 1037) | func (nv NodeView) HasPolicyChange(other NodeView) bool { function TailNodes (line 1054) | func TailNodes( method TailNode (line 1075) | func (nv NodeView) TailNode( FILE: hscontrol/types/node_benchmark_test.go function BenchmarkNodeViewCanAccess (line 12) | func BenchmarkNodeViewCanAccess(b *testing.B) { FILE: hscontrol/types/node_tags_test.go function TestNodeIsTagged (line 12) | func TestNodeIsTagged(t *testing.T) { function TestNodeViewIsTagged (line 87) | func TestNodeViewIsTagged(t *testing.T) { function TestNodeHasTag (line 130) | func TestNodeHasTag(t *testing.T) { function TestNodeTagsImmutableAfterRegistration (line 204) | func TestNodeTagsImmutableAfterRegistration(t *testing.T) { function TestNodeOwnershipModel (line 234) | func TestNodeOwnershipModel(t *testing.T) { function TestUserTypedID (line 286) | func TestUserTypedID(t *testing.T) { FILE: hscontrol/types/node_test.go function Test_NodeCanAccess (line 18) | func Test_NodeCanAccess(t *testing.T) { function TestNodeFQDN (line 130) | func TestNodeFQDN(t *testing.T) { function TestPeerChangeFromMapRequest (line 210) | func TestPeerChangeFromMapRequest(t *testing.T) { function TestApplyHostnameFromHostInfo (line 342) | func TestApplyHostnameFromHostInfo(t *testing.T) { function TestApplyPeerChange (line 640) | func TestApplyPeerChange(t *testing.T) { function TestNodeRegisterMethodToV1Enum (line 747) | func TestNodeRegisterMethodToV1Enum(t *testing.T) { function TestHasNetworkChanges (line 799) | func TestHasNetworkChanges(t *testing.T) { FILE: hscontrol/types/policy.go type Policy (line 15) | type Policy struct FILE: hscontrol/types/preauth_key.go type PAKError (line 13) | type PAKError method Error (line 15) | func (e PAKError) Error() string { return string(e) } type PreAuthKey (line 18) | type PreAuthKey struct method Proto (line 84) | func (key *PreAuthKey) Proto() *v1.PreAuthKey { method Validate (line 120) | func (pak *PreAuthKey) Validate() error { method IsTagged (line 149) | func (pak *PreAuthKey) IsTagged() bool { method maskedPrefix (line 155) | func (pak *PreAuthKey) maskedPrefix() string { method MarshalZerologObject (line 166) | func (pak *PreAuthKey) MarshalZerologObject(e *zerolog.Event) { type PreAuthKeyNew (line 48) | type PreAuthKeyNew struct method Proto (line 59) | func (key *PreAuthKeyNew) Proto() *v1.PreAuthKey { FILE: hscontrol/types/preauth_key_test.go function TestCanUsePreAuthKey (line 11) | func TestCanUsePreAuthKey(t *testing.T) { FILE: hscontrol/types/routes.go type Route (line 11) | type Route struct type Routes (line 31) | type Routes FILE: hscontrol/types/types_clone.go method Clone (line 21) | func (src *User) Clone() *User { method Clone (line 43) | func (src *Node) Clone() *Node { method Clone (line 113) | func (src *PreAuthKey) Clone() *PreAuthKey { FILE: hscontrol/types/types_view.go method View (line 26) | func (p *User) View() UserView { type UserView (line 33) | type UserView struct method Valid (line 42) | func (v UserView) Valid() bool { return v.ж != nil } method AsStruct (line 46) | func (v UserView) AsStruct() *User { method MarshalJSON (line 54) | func (v UserView) MarshalJSON() ([]byte, error) { method MarshalJSONTo (line 59) | func (v UserView) MarshalJSONTo(enc *jsontext.Encoder) error { method UnmarshalJSON (line 64) | func (v *UserView) UnmarshalJSON(b []byte) error { method UnmarshalJSONFrom (line 80) | func (v *UserView) UnmarshalJSONFrom(dec *jsontext.Decoder) error { method Model (line 92) | func (v UserView) Model() gorm.Model { return v.ж.Model } method Name (line 97) | func (v UserView) Name() string { return v.ж.Name } method DisplayName (line 100) | func (v UserView) DisplayName() string { return v.ж.DisplayName } method Email (line 104) | func (v UserView) Email() string { return v.ж.Email } method ProviderIdentifier (line 111) | func (v UserView) ProviderIdentifier() sql.NullString { return v.ж.Pro... method Provider (line 115) | func (v UserView) Provider() string { return v.ж.Provider } method ProfilePicURL (line 116) | func (v UserView) ProfilePicURL() string { return v.ж.ProfilePicURL } method View (line 130) | func (p *Node) View() NodeView { type NodeView (line 137) | type NodeView struct method Valid (line 146) | func (v NodeView) Valid() bool { return v.ж != nil } method AsStruct (line 150) | func (v NodeView) AsStruct() *Node { method MarshalJSON (line 158) | func (v NodeView) MarshalJSON() ([]byte, error) { method MarshalJSONTo (line 163) | func (v NodeView) MarshalJSONTo(enc *jsontext.Encoder) error { method UnmarshalJSON (line 168) | func (v *NodeView) UnmarshalJSON(b []byte) error { method UnmarshalJSONFrom (line 184) | func (v *NodeView) UnmarshalJSONFrom(dec *jsontext.Decoder) error { method ID (line 196) | func (v NodeView) ID() NodeID { return v.ж... method MachineKey (line 197) | func (v NodeView) MachineKey() key.MachinePublic { return v.ж... method NodeKey (line 198) | func (v NodeView) NodeKey() key.NodePublic { return v.ж... method DiscoKey (line 199) | func (v NodeView) DiscoKey() key.DiscoPublic { return v.ж... method Endpoints (line 200) | func (v NodeView) Endpoints() views.Slice[netip.AddrPort] { return vie... method Hostinfo (line 201) | func (v NodeView) Hostinfo() tailcfg.HostinfoView { return v.ж... method IPv4 (line 202) | func (v NodeView) IPv4() views.ValuePointer[netip.Addr] { return vie... method IPv6 (line 204) | func (v NodeView) IPv6() views.ValuePointer[netip.Addr] { return views... method Hostname (line 208) | func (v NodeView) Hostname() string { return v.ж.Hostname } method GivenName (line 216) | func (v NodeView) GivenName() string { return v.ж.GivenName } method UserID (line 220) | func (v NodeView) UserID() views.ValuePointer[uint] { return views.Val... method User (line 222) | func (v NodeView) User() UserView { return v.ж.User.View() } method RegisterMethod (line 223) | func (v NodeView) RegisterMethod() string { return v.ж.RegisterMethod } method Tags (line 229) | func (v NodeView) Tags() views.Slice[string] { return views.SliceOf(v.... method AuthKeyID (line 235) | func (v NodeView) AuthKeyID() views.ValuePointer[uint64] { return view... method AuthKey (line 237) | func (v NodeView) AuthKey() PreAuthKeyView { return v.ж.... method Expiry (line 238) | func (v NodeView) Expiry() views.ValuePointer[time.Time] { return view... method LastSeen (line 242) | func (v NodeView) LastSeen() views.ValuePointer[time.Time] { method ApprovedRoutes (line 250) | func (v NodeView) ApprovedRoutes() views.Slice[netip.Prefix] { method CreatedAt (line 253) | func (v NodeView) CreatedAt() time.Time { return v.ж.CreatedAt } method UpdatedAt (line 254) | func (v NodeView) UpdatedAt() time.Time { return v.ж.UpdatedAt } method DeletedAt (line 255) | func (v NodeView) DeletedAt() views.ValuePointer[time.Time] { method IsOnline (line 259) | func (v NodeView) IsOnline() views.ValuePointer[bool] { return views.V... method String (line 261) | func (v NodeView) String() string { return v.ж.String() } method View (line 291) | func (p *PreAuthKey) View() PreAuthKeyView { type PreAuthKeyView (line 298) | type PreAuthKeyView struct method Valid (line 307) | func (v PreAuthKeyView) Valid() bool { return v.ж != nil } method AsStruct (line 311) | func (v PreAuthKeyView) AsStruct() *PreAuthKey { method MarshalJSON (line 319) | func (v PreAuthKeyView) MarshalJSON() ([]byte, error) { method MarshalJSONTo (line 324) | func (v PreAuthKeyView) MarshalJSONTo(enc *jsontext.Encoder) error { method UnmarshalJSON (line 329) | func (v *PreAuthKeyView) UnmarshalJSON(b []byte) error { method UnmarshalJSONFrom (line 345) | func (v *PreAuthKeyView) UnmarshalJSONFrom(dec *jsontext.Decoder) error { method ID (line 357) | func (v PreAuthKeyView) ID() uint64 { return v.ж.ID } method Key (line 360) | func (v PreAuthKeyView) Key() string { return v.ж.Key } method Prefix (line 363) | func (v PreAuthKeyView) Prefix() string { return v.ж.Prefix } method Hash (line 366) | func (v PreAuthKeyView) Hash() views.ByteSlice[[]byte] { return views.... method UserID (line 371) | func (v PreAuthKeyView) UserID() views.ValuePointer[uint] { return vie... method User (line 373) | func (v PreAuthKeyView) User() UserView { return v.ж.User.View() } method Reusable (line 374) | func (v PreAuthKeyView) Reusable() bool { return v.ж.Reusable } method Ephemeral (line 375) | func (v PreAuthKeyView) Ephemeral() bool { return v.ж.Ephemeral } method Used (line 376) | func (v PreAuthKeyView) Used() bool { return v.ж.Used } method Tags (line 381) | func (v PreAuthKeyView) Tags() views.Slice[string] { return views.Slic... method CreatedAt (line 382) | func (v PreAuthKeyView) CreatedAt() views.ValuePointer[time.Time] { method Expiration (line 386) | func (v PreAuthKeyView) Expiration() views.ValuePointer[time.Time] { FILE: hscontrol/types/users.go type UserID (line 27) | type UserID type Users (line 29) | type Users method String (line 46) | func (u Users) String() string { constant TaggedDevicesUserID (line 34) | TaggedDevicesUserID = 2147455555 type User (line 63) | type User struct method StringID (line 97) | func (u *User) StringID() string { method TypedID (line 107) | func (u *User) TypedID() *UserID { method Username (line 119) | func (u *User) Username() string { method Display (line 130) | func (u *User) Display() string { method profilePicURL (line 135) | func (u *User) profilePicURL() string { method TailscaleUser (line 139) | func (u *User) TailscaleUser() tailcfg.User { method TailscaleLogin (line 159) | func (u *User) TailscaleLogin() tailcfg.Login { method TailscaleUserProfile (line 173) | func (u *User) TailscaleUserProfile() tailcfg.UserProfile { method Proto (line 186) | func (u *User) Proto() *v1.User { method MarshalZerologObject (line 209) | func (u *User) MarshalZerologObject(e *zerolog.Event) { method FromClaim (line 404) | func (u *User) FromClaim(claims *OIDCClaims, emailVerifiedRequired boo... method TailscaleUser (line 148) | func (u UserView) TailscaleUser() tailcfg.User { method ID (line 155) | func (u UserView) ID() uint { method TailscaleLogin (line 169) | func (u UserView) TailscaleLogin() tailcfg.Login { method TailscaleUserProfile (line 182) | func (u UserView) TailscaleUserProfile() tailcfg.UserProfile { method MarshalZerologObject (line 224) | func (u UserView) MarshalZerologObject(e *zerolog.Event) { type FlexibleBoolean (line 237) | type FlexibleBoolean method UnmarshalJSON (line 239) | func (bit *FlexibleBoolean) UnmarshalJSON(data []byte) error { type OIDCClaims (line 265) | type OIDCClaims struct method Identifier (line 288) | func (c *OIDCClaims) Identifier() string { function CleanIdentifier (line 337) | func CleanIdentifier(identifier string) string { type OIDCUserInfo (line 390) | type OIDCUserInfo struct FILE: hscontrol/types/users_test.go function TestUnmarshallOIDCClaims (line 13) | func TestUnmarshallOIDCClaims(t *testing.T) { function TestOIDCClaimsIdentifier (line 83) | func TestOIDCClaimsIdentifier(t *testing.T) { function TestCleanIdentifier (line 212) | func TestCleanIdentifier(t *testing.T) { function TestOIDCClaimsJSONToUser (line 297) | func TestOIDCClaimsJSONToUser(t *testing.T) { FILE: hscontrol/types/version.go type GoInfo (line 11) | type GoInfo struct type VersionInfo (line 17) | type VersionInfo struct method String (line 25) | func (v *VersionInfo) String() string { FILE: hscontrol/util/addr.go function ParseIPSet (line 30) | func ParseIPSet(arg string, bits *int) (*netipx.IPSet, error) { function GetIPPrefixEndpoints (line 92) | func GetIPPrefixEndpoints(na netip.Prefix) (netip.Addr, netip.Addr) { function StringToIPPrefix (line 102) | func StringToIPPrefix(prefixes []string) ([]netip.Prefix, error) { function IPSetAddrIter (line 118) | func IPSetAddrIter(ipSet *netipx.IPSet) iter.Seq[netip.Addr] { FILE: hscontrol/util/addr_test.go function Test_parseIPSet (line 11) | func Test_parseIPSet(t *testing.T) { FILE: hscontrol/util/const.go constant RegisterMethodAuthKey (line 4) | RegisterMethodAuthKey = "authkey" constant RegisterMethodOIDC (line 5) | RegisterMethodOIDC = "oidc" constant RegisterMethodCLI (line 6) | RegisterMethodCLI = "cli" FILE: hscontrol/util/dns.go constant ByteSize (line 17) | ByteSize = 8 constant ipv4AddressLength (line 18) | ipv4AddressLength = 32 constant ipv6AddressLength (line 19) | ipv6AddressLength = 128 constant LabelHostnameLength (line 23) | LabelHostnameLength = 63 function ValidateUsername (line 48) | func ValidateUsername(username string) error { function ValidateHostname (line 85) | func ValidateHostname(name string) error { function NormaliseHostname (line 122) | func NormaliseHostname(name string) (string, error) { function GenerateIPv4DNSRootDomain (line 173) | func GenerateIPv4DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN { function GenerateIPv6DNSRootDomain (line 232) | func GenerateIPv6DNSRootDomain(ipPrefix netip.Prefix) []dnsname.FQDN { FILE: hscontrol/util/dns_test.go function TestNormaliseHostname (line 13) | func TestNormaliseHostname(t *testing.T) { function TestValidateHostname (line 102) | func TestValidateHostname(t *testing.T) { function TestMagicDNSRootDomains100 (line 187) | func TestMagicDNSRootDomains100(t *testing.T) { function TestMagicDNSRootDomains172 (line 195) | func TestMagicDNSRootDomains172(t *testing.T) { function TestMagicDNSRootDomainsIPv6Single (line 203) | func TestMagicDNSRootDomainsIPv6Single(t *testing.T) { function TestMagicDNSRootDomainsIPv6SingleMultiple (line 210) | func TestMagicDNSRootDomainsIPv6SingleMultiple(t *testing.T) { FILE: hscontrol/util/file.go constant Base8 (line 16) | Base8 = 8 constant Base10 (line 17) | Base10 = 10 constant BitSize16 (line 18) | BitSize16 = 16 constant BitSize32 (line 19) | BitSize32 = 32 constant BitSize64 (line 20) | BitSize64 = 64 constant PermissionFallback (line 21) | PermissionFallback = 0o700 function AbsolutePathFromConfigPath (line 27) | func AbsolutePathFromConfigPath(path string) string { function GetFileMode (line 40) | func GetFileMode(key string) fs.FileMode { function EnsureDir (line 51) | func EnsureDir(dir string) error { FILE: hscontrol/util/log.go function LogErr (line 15) | func LogErr(err error, msg string) { function TSLogfWrapper (line 19) | func TSLogfWrapper() logger.Logf { type DBLogWrapper (line 25) | type DBLogWrapper struct method LogMode (line 48) | func (l *DBLogWrapper) LogMode(gormLogger.LogLevel) gormLogger.Interfa... method Info (line 52) | func (l *DBLogWrapper) Info(ctx context.Context, msg string, data ...a... method Warn (line 56) | func (l *DBLogWrapper) Warn(ctx context.Context, msg string, data ...a... method Error (line 60) | func (l *DBLogWrapper) Error(ctx context.Context, msg string, data ...... method Trace (line 64) | func (l *DBLogWrapper) Trace(ctx context.Context, begin time.Time, fc ... method ParamsFilter (line 86) | func (l *DBLogWrapper) ParamsFilter(ctx context.Context, sql string, p... function NewDBLogWrapper (line 34) | func NewDBLogWrapper(origin *zerolog.Logger, slowThreshold time.Duration... type DBLogWrapperOption (line 46) | type DBLogWrapperOption FILE: hscontrol/util/net.go function GrpcSocketDialer (line 13) | func GrpcSocketDialer(ctx context.Context, addr string) (net.Conn, error) { function PrefixesToString (line 19) | func PrefixesToString(prefixes []netip.Prefix) []string { function MustStringsToPrefixes (line 28) | func MustStringsToPrefixes(strings []string) []netip.Prefix { FILE: hscontrol/util/norace.go constant RaceEnabled (line 6) | RaceEnabled = false FILE: hscontrol/util/prompt.go function YesNo (line 13) | func YesNo(msg string) bool { FILE: hscontrol/util/prompt_test.go function TestYesNo (line 11) | func TestYesNo(t *testing.T) { function TestYesNoPromptMessage (line 123) | func TestYesNoPromptMessage(t *testing.T) { function TestYesNoCaseInsensitive (line 165) | func TestYesNoCaseInsensitive(t *testing.T) { FILE: hscontrol/util/race.go constant RaceEnabled (line 6) | RaceEnabled = true FILE: hscontrol/util/string.go function GenerateRandomBytes (line 16) | func GenerateRandomBytes(n int) ([]byte, error) { function GenerateRandomStringURLSafe (line 32) | func GenerateRandomStringURLSafe(n int) (string, error) { function GenerateRandomStringDNSSafe (line 45) | func GenerateRandomStringDNSSafe(size int) (string, error) { function MustGenerateRandomStringDNSSafe (line 65) | func MustGenerateRandomStringDNSSafe(size int) string { function InvalidString (line 74) | func InvalidString() string { function TailNodesToString (line 79) | func TailNodesToString(nodes []*tailcfg.Node) string { function TailMapResponseToString (line 89) | func TailMapResponseToString(resp tailcfg.MapResponse) string { function TailcfgFilterRulesToString (line 97) | func TailcfgFilterRulesToString(rules []tailcfg.FilterRule) string { FILE: hscontrol/util/string_test.go function TestGenerateRandomStringDNSSafe (line 10) | func TestGenerateRandomStringDNSSafe(t *testing.T) { FILE: hscontrol/util/util.go function TailscaleVersionNewerOrEqual (line 28) | func TailscaleVersionNewerOrEqual(minimum, toCheck string) bool { function ParseLoginURLFromCLILogin (line 40) | func ParseLoginURLFromCLILogin(output string) (*url.URL, error) { type TraceroutePath (line 68) | type TraceroutePath struct type Traceroute (line 82) | type Traceroute struct function ParseTraceroute (line 100) | func ParseTraceroute(output string) (Traceroute, error) { function IsCI (line 273) | func IsCI() bool { function EnsureHostname (line 298) | func EnsureHostname(hostinfo tailcfg.HostinfoView, machineKey, nodeKey s... function GenerateRegistrationKey (line 326) | func GenerateRegistrationKey() (string, error) { FILE: hscontrol/util/util_test.go constant testUnknownNode (line 13) | testUnknownNode = "unknown-node" function TestTailscaleVersionNewerOrEqual (line 15) | func TestTailscaleVersionNewerOrEqual(t *testing.T) { function TestParseLoginURLFromCLILogin (line 108) | func TestParseLoginURLFromCLILogin(t *testing.T) { function TestParseTraceroute (line 194) | func TestParseTraceroute(t *testing.T) { function TestEnsureHostname (line 802) | func TestEnsureHostname(t *testing.T) { function TestEnsureHostnameWithHostinfo (line 1086) | func TestEnsureHostnameWithHostinfo(t *testing.T) { function TestEnsureHostname_DNSLabelLimit (line 1271) | func TestEnsureHostname_DNSLabelLimit(t *testing.T) { function TestEnsureHostname_Idempotent (line 1295) | func TestEnsureHostname_Idempotent(t *testing.T) { function TestGenerateRegistrationKey (line 1311) | func TestGenerateRegistrationKey(t *testing.T) { FILE: hscontrol/util/zlog/hostinfo.go type SafeHostinfo (line 23) | type SafeHostinfo struct method MarshalZerologObject (line 33) | func (s SafeHostinfo) MarshalZerologObject(e *zerolog.Event) { function Hostinfo (line 28) | func Hostinfo(hi *tailcfg.Hostinfo) SafeHostinfo { FILE: hscontrol/util/zlog/maprequest.go type SafeMapRequest (line 22) | type SafeMapRequest struct method MarshalZerologObject (line 32) | func (s SafeMapRequest) MarshalZerologObject(e *zerolog.Event) { function MapRequest (line 27) | func MapRequest(req *tailcfg.MapRequest) SafeMapRequest { FILE: hscontrol/util/zlog/zf/fields.go constant NodeID (line 15) | NodeID = "node.id" constant NodeName (line 16) | NodeName = "node.name" constant NodeKey (line 17) | NodeKey = "node.key" constant NodeKeyExisting (line 18) | NodeKeyExisting = "node.key.existing" constant NodeKeyRequest (line 19) | NodeKeyRequest = "node.key.request" constant NodeTags (line 20) | NodeTags = "node.tags" constant NodeIsTagged (line 21) | NodeIsTagged = "node.is_tagged" constant NodeOnline (line 22) | NodeOnline = "node.online" constant NodeExpired (line 23) | NodeExpired = "node.expired" constant NodeHostname (line 24) | NodeHostname = "node.hostname" constant ExistingNodeName (line 25) | ExistingNodeName = "existing.node.name" constant ExistingNodeID (line 26) | ExistingNodeID = "existing.node.id" constant CurrentHostname (line 27) | CurrentHostname = "current_hostname" constant RejectedHostname (line 28) | RejectedHostname = "rejected_hostname" constant OldHostname (line 29) | OldHostname = "old_hostname" constant NewHostnameField (line 30) | NewHostnameField = "new_hostname" constant OldGivenName (line 31) | OldGivenName = "old_given_name" constant NewGivenName (line 32) | NewGivenName = "new_given_name" constant NewName (line 33) | NewName = "new_name" constant GeneratedHostname (line 34) | GeneratedHostname = "generated.hostname" constant RegistrationKey (line 35) | RegistrationKey = "registration_key" constant RegistrationMethod (line 36) | RegistrationMethod = "registrationMethod" constant ExpiresAt (line 37) | ExpiresAt = "expiresAt" constant CurrentTags (line 42) | CurrentTags = "current.tags" constant RemovedTags (line 43) | RemovedTags = "removed.tags" constant RejectedTags (line 44) | RejectedTags = "rejected.tags" constant NewTags (line 45) | NewTags = "new.tags" constant OldTags (line 46) | OldTags = "old.tags" constant IsTagged (line 47) | IsTagged = "is.tagged" constant WasAuthKeyTagged (line 48) | WasAuthKeyTagged = "was.authkey.tagged" constant MachineKey (line 53) | MachineKey = "machine.key" constant UserID (line 58) | UserID = "user.id" constant UserName (line 59) | UserName = "user.name" constant UserDisplay (line 60) | UserDisplay = "user.display" constant UserProvider (line 61) | UserProvider = "user.provider" constant UserCount (line 62) | UserCount = "user.count" constant OldUser (line 63) | OldUser = "old.user" constant NewUser (line 64) | NewUser = "new.user" constant PAKID (line 69) | PAKID = "pak.id" constant PAKPrefix (line 70) | PAKPrefix = "pak.prefix" constant PAKTags (line 71) | PAKTags = "pak.tags" constant PAKReusable (line 72) | PAKReusable = "pak.reusable" constant PAKEphemeral (line 73) | PAKEphemeral = "pak.ephemeral" constant PAKUsed (line 74) | PAKUsed = "pak.used" constant PAKIsTagged (line 75) | PAKIsTagged = "pak.is_tagged" constant PAKExpiration (line 76) | PAKExpiration = "pak.expiration" constant AuthKeyID (line 77) | AuthKeyID = "authkey.id" constant AuthKeyUsed (line 78) | AuthKeyUsed = "authkey.used" constant AuthKeyExpired (line 79) | AuthKeyExpired = "authkey.expired" constant AuthKeyReusable (line 80) | AuthKeyReusable = "authkey.reusable" constant NodeKeyRotation (line 81) | NodeKeyRotation = "nodekey.rotation" constant APIKeyID (line 86) | APIKeyID = "api_key.id" constant APIKeyPrefix (line 87) | APIKeyPrefix = "api_key.prefix" constant APIKeyExpiration (line 88) | APIKeyExpiration = "api_key.expiration" constant APIKeyLastSeen (line 89) | APIKeyLastSeen = "api_key.last_seen" constant RoutesAnnounced (line 94) | RoutesAnnounced = "routes.announced" constant RoutesApproved (line 95) | RoutesApproved = "routes.approved" constant RoutesApprovedOld (line 96) | RoutesApprovedOld = "routes.approved.old" constant RoutesApprovedNew (line 97) | RoutesApprovedNew = "routes.approved.new" constant OldAnnouncedRoutes (line 98) | OldAnnouncedRoutes = "oldAnnouncedRoutes" constant NewAnnouncedRoutes (line 99) | NewAnnouncedRoutes = "newAnnouncedRoutes" constant ApprovedRoutes (line 100) | ApprovedRoutes = "approvedRoutes" constant OldApprovedRoutes (line 101) | OldApprovedRoutes = "oldApprovedRoutes" constant NewApprovedRoutes (line 102) | NewApprovedRoutes = "newApprovedRoutes" constant AutoApprovedRoutes (line 103) | AutoApprovedRoutes = "autoApprovedRoutes" constant AllApprovedRoutes (line 104) | AllApprovedRoutes = "allApprovedRoutes" constant RouteChanged (line 105) | RouteChanged = "routeChanged" constant Prefix (line 106) | Prefix = "prefix" constant FinalState (line 107) | FinalState = "finalState" constant NewState (line 108) | NewState = "newState" constant OmitPeers (line 113) | OmitPeers = "omit_peers" constant Stream (line 114) | Stream = "stream" constant Version (line 115) | Version = "version" constant StatusCode (line 116) | StatusCode = "status_code" constant RegistrationID (line 117) | RegistrationID = "registration_id" constant EndpointsCount (line 122) | EndpointsCount = "endpoints_count" constant DERP (line 123) | DERP = "derp" constant Hostname (line 124) | Hostname = "hostname" constant OS (line 125) | OS = "os" constant RoutableIPCount (line 126) | RoutableIPCount = "routable_ips_count" constant RequestTags (line 127) | RequestTags = "request_tags" constant InvalidHostname (line 128) | InvalidHostname = "invalid_hostname" constant NewHostname (line 129) | NewHostname = "new_hostname" constant URL (line 130) | URL = "url" constant Path (line 131) | Path = "path" constant ClientAddress (line 132) | ClientAddress = "client_address" constant ClientVersion (line 133) | ClientVersion = "client_version" constant MinimumVersion (line 134) | MinimumVersion = "minimum_version" constant PolicyChanged (line 139) | PolicyChanged = "policy.changed" constant FilterHashOld (line 140) | FilterHashOld = "filter.hash.old" constant FilterHashNew (line 141) | FilterHashNew = "filter.hash.new" constant TagOwnerHashOld (line 142) | TagOwnerHashOld = "tagOwner.hash.old" constant TagOwnerHashNew (line 143) | TagOwnerHashNew = "tagOwner.hash.new" constant AutoApproveHashOld (line 144) | AutoApproveHashOld = "autoApprove.hash.old" constant AutoApproveHashNew (line 145) | AutoApproveHashNew = "autoApprove.hash.new" constant ExitSetHashOld (line 146) | ExitSetHashOld = "exitSet.hash.old" constant ExitSetHashNew (line 147) | ExitSetHashNew = "exitSet.hash.new" constant Chan (line 152) | Chan = "chan" constant ConnID (line 153) | ConnID = "conn.id" constant ConnectionIndex (line 154) | ConnectionIndex = "connection_index" constant Address (line 155) | Address = "address" constant Client (line 160) | Client = "client" constant Request (line 161) | Request = "request" constant Users (line 162) | Users = "users" constant WorkerID (line 167) | WorkerID = "worker.id" constant Reason (line 168) | Reason = "reason" constant Op (line 169) | Op = "op" constant OK (line 170) | OK = "ok" constant Changes (line 171) | Changes = "changes" constant Watching (line 172) | Watching = "watching" constant CleanedNodes (line 173) | CleanedNodes = "cleaned_nodes" constant Method (line 174) | Method = "method" constant Signal (line 175) | Signal = "signal" constant Func (line 176) | Func = "func" constant TotalDuration (line 181) | TotalDuration = "total.duration" constant TimeoutDuration (line 182) | TimeoutDuration = "timeout.duration" constant Table (line 187) | Table = "table" constant MigrationID (line 188) | MigrationID = "migration_id" constant Commit (line 189) | Commit = "commit" constant Records (line 190) | Records = "records" constant Code (line 191) | Code = "code" constant Got (line 192) | Got = "got" constant Database (line 193) | Database = "database" constant Index (line 194) | Index = "index" constant Parent (line 195) | Parent = "parent" constant Type (line 196) | Type = "type" constant Component (line 201) | Component = "component" constant DebugDeadlock (line 206) | DebugDeadlock = "HEADSCALE_DEBUG_DEADLOCK" constant DebugDERPUseIP (line 207) | DebugDERPUseIP = "HEADSCALE_DEBUG_DERP_USE_IP" constant DebugDumpConfig (line 208) | DebugDumpConfig = "HEADSCALE_DEBUG_DUMP_CONFIG" constant DebugHighCardinalityMetric (line 209) | DebugHighCardinalityMetric = "HEADSCALE_DEBUG_HIGH_CARDINALITY_METRICS" constant DebugProfilingEnabled (line 210) | DebugProfilingEnabled = "HEADSCALE_DEBUG_PROFILING_ENABLED" constant DebugTailSQLEnabled (line 211) | DebugTailSQLEnabled = "HEADSCALE_DEBUG_TAILSQL_ENABLED" FILE: hscontrol/util/zlog/zlog_test.go function TestSafeHostinfo_MarshalZerologObject (line 17) | func TestSafeHostinfo_MarshalZerologObject(t *testing.T) { function TestSafeMapRequest_MarshalZerologObject (line 113) | func TestSafeMapRequest_MarshalZerologObject(t *testing.T) { function TestFieldConstants (line 198) | func TestFieldConstants(t *testing.T) { FILE: integration/acl_test.go function aclScenario (line 58) | func aclScenario( function TestACLHostsInNetMapTable (line 100) | func TestACLHostsInNetMapTable(t *testing.T) { function TestACLAllowUser80Dst (line 339) | func TestACLAllowUser80Dst(t *testing.T) { function TestACLDenyAllPort80 (line 400) | func TestACLDenyAllPort80(t *testing.T) { function TestACLAllowUserDst (line 452) | func TestACLAllowUserDst(t *testing.T) { function TestACLAllowStarDst (line 515) | func TestACLAllowStarDst(t *testing.T) { function TestACLNamedHostsCanReachBySubnet (line 579) | func TestACLNamedHostsCanReachBySubnet(t *testing.T) { function TestACLNamedHostsCanReach (line 685) | func TestACLNamedHostsCanReach(t *testing.T) { function TestACLDevice1CanAccessDevice2 (line 964) | func TestACLDevice1CanAccessDevice2(t *testing.T) { function TestPolicyUpdateWhileRunningWithCLIInDatabase (line 1144) | func TestPolicyUpdateWhileRunningWithCLIInDatabase(t *testing.T) { function TestACLAutogroupMember (line 1284) | func TestACLAutogroupMember(t *testing.T) { function TestACLAutogroupTagged (line 1360) | func TestACLAutogroupTagged(t *testing.T) { function TestACLAutogroupSelf (line 1645) | func TestACLAutogroupSelf(t *testing.T) { function TestACLPolicyPropagationOverTime (line 1908) | func TestACLPolicyPropagationOverTime(t *testing.T) { function TestACLTagPropagation (line 2304) | func TestACLTagPropagation(t *testing.T) { function TestACLTagPropagationPortSpecific (line 2844) | func TestACLTagPropagationPortSpecific(t *testing.T) { function TestACLGroupWithUnknownUser (line 3025) | func TestACLGroupWithUnknownUser(t *testing.T) { function TestACLGroupAfterUserDeletion (line 3127) | func TestACLGroupAfterUserDeletion(t *testing.T) { function TestACLGroupDeletionExactReproduction (line 3316) | func TestACLGroupDeletionExactReproduction(t *testing.T) { function TestACLDynamicUnknownUserAddition (line 3500) | func TestACLDynamicUnknownUserAddition(t *testing.T) { function TestACLDynamicUnknownUserRemoval (line 3655) | func TestACLDynamicUnknownUserRemoval(t *testing.T) { FILE: integration/api_auth_test.go function TestAPIAuthenticationBypass (line 31) | func TestAPIAuthenticationBypass(t *testing.T) { function TestAPIAuthenticationBypassCurl (line 240) | func TestAPIAuthenticationBypassCurl(t *testing.T) { function TestGRPCAuthenticationBypass (line 422) | func TestGRPCAuthenticationBypass(t *testing.T) { function TestCLIWithConfigAuthenticationBypass (line 547) | func TestCLIWithConfigAuthenticationBypass(t *testing.T) { FILE: integration/auth_key_test.go function TestAuthKeyLogoutAndReloginSameUser (line 22) | func TestAuthKeyLogoutAndReloginSameUser(t *testing.T) { function TestAuthKeyLogoutAndReloginNewUser (line 222) | func TestAuthKeyLogoutAndReloginNewUser(t *testing.T) { function TestAuthKeyLogoutAndReloginSameUserExpiredKey (line 353) | func TestAuthKeyLogoutAndReloginSameUserExpiredKey(t *testing.T) { function TestAuthKeyDeleteKey (line 479) | func TestAuthKeyDeleteKey(t *testing.T) { function TestAuthKeyLogoutAndReloginRoutesPreserved (line 586) | func TestAuthKeyLogoutAndReloginRoutesPreserved(t *testing.T) { FILE: integration/auth_oidc_test.go function TestOIDCAuthenticationPingAll (line 27) | func TestOIDCAuthenticationPingAll(t *testing.T) { function TestOIDCExpireNodesBasedOnTokenExpiry (line 137) | func TestOIDCExpireNodesBasedOnTokenExpiry(t *testing.T) { function TestOIDC024UserCreation (line 240) | func TestOIDC024UserCreation(t *testing.T) { function TestOIDCAuthenticationWithPKCE (line 407) | func TestOIDCAuthenticationWithPKCE(t *testing.T) { function TestOIDCReloginSameNodeNewUser (line 463) | func TestOIDCReloginSameNodeNewUser(t *testing.T) { function TestOIDCFollowUpUrl (line 872) | func TestOIDCFollowUpUrl(t *testing.T) { function TestOIDCMultipleOpenedLoginUrls (line 984) | func TestOIDCMultipleOpenedLoginUrls(t *testing.T) { function TestOIDCReloginSameNodeSameUser (line 1116) | func TestOIDCReloginSameNodeSameUser(t *testing.T) { function TestOIDCExpiryAfterRestart (line 1342) | func TestOIDCExpiryAfterRestart(t *testing.T) { function TestOIDCACLPolicyOnJoin (line 1480) | func TestOIDCACLPolicyOnJoin(t *testing.T) { function TestOIDCReloginSameUserRoutesPreserved (line 1761) | func TestOIDCReloginSameUserRoutesPreserved(t *testing.T) { FILE: integration/auth_web_flow_test.go function TestAuthWebFlowAuthenticationPingAll (line 18) | func TestAuthWebFlowAuthenticationPingAll(t *testing.T) { function TestAuthWebFlowLogoutAndReloginSameUser (line 57) | func TestAuthWebFlowLogoutAndReloginSameUser(t *testing.T) { function TestAuthWebFlowLogoutAndReloginNewUser (line 221) | func TestAuthWebFlowLogoutAndReloginNewUser(t *testing.T) { FILE: integration/cli_test.go function executeAndUnmarshal (line 25) | func executeAndUnmarshal[T any](headscale ControlServer, command []strin... type GRPCSortable (line 41) | type GRPCSortable interface function sortWithID (line 45) | func sortWithID[T GRPCSortable](a, b T) int { function TestUserCommand (line 49) | func TestUserCommand(t *testing.T) { function TestPreAuthKeyCommand (line 269) | func TestPreAuthKeyCommand(t *testing.T) { function TestPreAuthKeyCommandWithoutExpiry (line 422) | func TestPreAuthKeyCommandWithoutExpiry(t *testing.T) { function TestPreAuthKeyCommandReusableEphemeral (line 488) | func TestPreAuthKeyCommandReusableEphemeral(t *testing.T) { function TestPreAuthKeyCorrectUserLoggedInCommand (line 571) | func TestPreAuthKeyCorrectUserLoggedInCommand(t *testing.T) { function TestTaggedNodesCLIOutput (line 681) | func TestTaggedNodesCLIOutput(t *testing.T) { function TestApiKeyCommand (line 796) | func TestApiKeyCommand(t *testing.T) { function TestNodeCommand (line 1045) | func TestNodeCommand(t *testing.T) { function TestNodeExpireCommand (line 1306) | func TestNodeExpireCommand(t *testing.T) { function TestNodeRenameCommand (line 1441) | func TestNodeRenameCommand(t *testing.T) { function TestPolicyCommand (line 1619) | func TestPolicyCommand(t *testing.T) { function TestPolicyBrokenConfigCommand (line 1703) | func TestPolicyBrokenConfigCommand(t *testing.T) { FILE: integration/control.go type ControlServer (line 16) | type ControlServer interface FILE: integration/derp_verify_endpoint_test.go function TestDERPVerifyEndpoint (line 22) | func TestDERPVerifyEndpoint(t *testing.T) { function DERPVerify (line 103) | func DERPVerify( FILE: integration/dns_test.go function TestResolveMagicDNS (line 17) | func TestResolveMagicDNS(t *testing.T) { function TestResolveMagicDNSExtraRecordsPath (line 74) | func TestResolveMagicDNSExtraRecordsPath(t *testing.T) { FILE: integration/dockertestutil/build.go function RunDockerBuildForDiagnostics (line 14) | func RunDockerBuildForDiagnostics(contextDir, dockerfile string) (string... FILE: integration/dockertestutil/config.go constant TimestampFormatRunID (line 16) | TimestampFormatRunID = "20060102-150405" function GetIntegrationRunID (line 21) | func GetIntegrationRunID() string { function DockerAddIntegrationLabels (line 28) | func DockerAddIntegrationLabels(opts *dockertest.RunOptions, testType st... function GenerateRunID (line 44) | func GenerateRunID() string { function ExtractRunIDFromContainerName (line 56) | func ExtractRunIDFromContainerName(containerName string) string { function IsRunningInContainer (line 68) | func IsRunningInContainer() bool { FILE: integration/dockertestutil/execute.go constant dockerExecuteTimeout (line 13) | dockerExecuteTimeout = time.Second * 10 type ExecuteCommandConfig (line 20) | type ExecuteCommandConfig struct type ExecuteCommandOption (line 24) | type ExecuteCommandOption function ExecuteCommandTimeout (line 26) | func ExecuteCommandTimeout(timeout time.Duration) ExecuteCommandOption { type buffer (line 34) | type buffer struct method Write (line 41) | func (b *buffer) Write(p []byte) (int, error) { method String (line 50) | func (b *buffer) String() string { function ExecuteCommand (line 57) | func ExecuteCommand( FILE: integration/dockertestutil/logs.go constant filePerm (line 15) | filePerm = 0o644 function WriteLog (line 17) | func WriteLog( function SaveLog (line 39) | func SaveLog( FILE: integration/dockertestutil/network.go function GetFirstOrCreateNetwork (line 16) | func GetFirstOrCreateNetwork(pool *dockertest.Pool, name string) (*docke... function AddContainerToNetwork (line 40) | func AddContainerToNetwork( function RandomFreeHostPort (line 76) | func RandomFreeHostPort() (int, error) { function CleanUnreferencedNetworks (line 92) | func CleanUnreferencedNetworks(pool *dockertest.Pool) error { function CleanImagesInCI (line 115) | func CleanImagesInCI(pool *dockertest.Pool) error { function DockerRestartPolicy (line 153) | func DockerRestartPolicy(config *docker.HostConfig) { function DockerAllowLocalIPv6 (line 160) | func DockerAllowLocalIPv6(config *docker.HostConfig) { function DockerAllowNetworkAdministration (line 168) | func DockerAllowNetworkAdministration(config *docker.HostConfig) { function DockerMemoryLimit (line 174) | func DockerMemoryLimit(config *docker.HostConfig) { FILE: integration/dsic/dsic.go constant dsicHashLength (line 22) | dsicHashLength = 6 constant dockerContextPath (line 23) | dockerContextPath = "../." constant caCertRoot (line 24) | caCertRoot = "/usr/local/share/ca-certificates" constant DERPerCertRoot (line 25) | DERPerCertRoot = "/usr/local/share/derper-certs" constant dockerExecuteTimeout (line 26) | dockerExecuteTimeout = 60 * time.Second type DERPServerInContainer (line 32) | type DERPServerInContainer struct method buildEntrypoint (line 114) | func (dsic *DERPServerInContainer) buildEntrypoint(derperArgs string) ... method Shutdown (line 293) | func (t *DERPServerInContainer) Shutdown() error { method GetCert (line 308) | func (t *DERPServerInContainer) GetCert() []byte { method Hostname (line 313) | func (t *DERPServerInContainer) Hostname() string { method Version (line 318) | func (t *DERPServerInContainer) Version() string { method ID (line 324) | func (t *DERPServerInContainer) ID() string { method GetHostname (line 328) | func (t *DERPServerInContainer) GetHostname() string { method GetSTUNPort (line 333) | func (t *DERPServerInContainer) GetSTUNPort() int { method GetDERPPort (line 338) | func (t *DERPServerInContainer) GetDERPPort() int { method WaitForRunning (line 343) | func (t *DERPServerInContainer) WaitForRunning() error { method ConnectToNetwork (line 366) | func (t *DERPServerInContainer) ConnectToNetwork(network *dockertest.N... method WriteFile (line 371) | func (t *DERPServerInContainer) WriteFile(path string, data []byte) er... method SaveLog (line 377) | func (t *DERPServerInContainer) SaveLog(path string) error { function WithCACert (line 56) | func WithCACert(cert []byte) Option { function WithOrCreateNetwork (line 66) | func WithOrCreateNetwork(network *dockertest.Network) Option { function WithDockerWorkdir (line 87) | func WithDockerWorkdir(dir string) Option { function WithVerifyClientURL (line 94) | func WithVerifyClientURL(url string) Option { function WithExtraHosts (line 101) | func WithExtraHosts(hosts []string) Option { function New (line 140) | func New( FILE: integration/embedded_derp_test.go type ClientsSpec (line 15) | type ClientsSpec struct function TestDERPServerScenario (line 20) | func TestDERPServerScenario(t *testing.T) { function TestDERPServerWebsocketScenario (line 70) | func TestDERPServerWebsocketScenario(t *testing.T) { function derpServerScenario (line 103) | func derpServerScenario( FILE: integration/general_test.go function TestPingAllByIP (line 28) | func TestPingAllByIP(t *testing.T) { function TestPingAllByIPPublicDERP (line 91) | func TestPingAllByIPPublicDERP(t *testing.T) { function TestEphemeral (line 134) | func TestEphemeral(t *testing.T) { function TestEphemeralInAlternateTimezone (line 140) | func TestEphemeralInAlternateTimezone(t *testing.T) { function testEphemeralWithOptions (line 148) | func testEphemeralWithOptions(t *testing.T, opts ...hsic.Option) { function TestEphemeral2006DeletedTooQuickly (line 222) | func TestEphemeral2006DeletedTooQuickly(t *testing.T) { function TestPingAllByHostname (line 344) | func TestPingAllByHostname(t *testing.T) { function TestTaildrop (line 385) | func TestTaildrop(t *testing.T) { function TestUpdateHostnameFromClient (line 768) | func TestUpdateHostnameFromClient(t *testing.T) { function TestExpireNode (line 945) | func TestExpireNode(t *testing.T) { function TestSetNodeExpiryInFuture (line 1080) | func TestSetNodeExpiryInFuture(t *testing.T) { function TestDisableNodeExpiry (line 1178) | func TestDisableNodeExpiry(t *testing.T) { function TestNodeOnlineStatus (line 1273) | func TestNodeOnlineStatus(t *testing.T) { function TestPingAllByIPManyUpDown (line 1398) | func TestPingAllByIPManyUpDown(t *testing.T) { function Test2118DeletingOnlineNodePanics (line 1504) | func Test2118DeletingOnlineNodePanics(t *testing.T) { FILE: integration/helpers.go constant derpPingTimeout (line 35) | derpPingTimeout = 2 * time.Second constant derpPingCount (line 39) | derpPingCount = 10 constant TimestampFormat (line 44) | TimestampFormat = "2006-01-02T15-04-05.999999999" constant TimestampFormatRunID (line 48) | TimestampFormatRunID = "20060102-150405" constant stateOnline (line 51) | stateOnline = "online" constant stateOffline (line 53) | stateOffline = "offline" type NodeSystemStatus (line 59) | type NodeSystemStatus struct function requireNoErrHeadscaleEnv (line 68) | func requireNoErrHeadscaleEnv(t *testing.T, err error) { function requireNoErrGetHeadscale (line 75) | func requireNoErrGetHeadscale(t *testing.T, err error) { function requireNoErrListClients (line 82) | func requireNoErrListClients(t *testing.T, err error) { function requireNoErrListClientIPs (line 89) | func requireNoErrListClientIPs(t *testing.T, err error) { function requireNoErrSync (line 96) | func requireNoErrSync(t *testing.T, err error) { function requireNoErrListFQDN (line 103) | func requireNoErrListFQDN(t *testing.T, err error) { function requireNoErrLogout (line 110) | func requireNoErrLogout(t *testing.T, err error) { function collectExpectedNodeIDs (line 116) | func collectExpectedNodeIDs(t *testing.T, clients []TailscaleClient) []t... function validateInitialConnection (line 134) | func validateInitialConnection(t *testing.T, headscale ControlServer, ex... function validateLogoutComplete (line 144) | func validateLogoutComplete(t *testing.T, headscale ControlServer, expec... function validateReloginComplete (line 153) | func validateReloginComplete(t *testing.T, headscale ControlServer, expe... function requireAllClientsOnline (line 162) | func requireAllClientsOnline(t *testing.T, headscale ControlServer, expe... function requireAllClientsOnlineWithSingleTimeout (line 189) | func requireAllClientsOnlineWithSingleTimeout(t *testing.T, headscale Co... function requireAllClientsOfflineStaged (line 378) | func requireAllClientsOfflineStaged(t *testing.T, headscale ControlServe... function requireAllClientsNetInfoAndDERP (line 481) | func requireAllClientsNetInfoAndDERP(t *testing.T, headscale ControlServ... function assertLastSeenSet (line 542) | func assertLastSeenSet(t *testing.T, node *v1.Node) { function assertLastSeenSetWithCollect (line 548) | func assertLastSeenSetWithCollect(c *assert.CollectT, node *v1.Node) { function assertTailscaleNodesLogout (line 555) | func assertTailscaleNodesLogout(t assert.TestingT, clients []TailscaleCl... function pingAllHelper (line 573) | func pingAllHelper(t *testing.T, clients []TailscaleClient, addrs []stri... function pingDerpAllHelper (line 595) | func pingDerpAllHelper(t *testing.T, clients []TailscaleClient, addrs []... function isSelfClient (line 626) | func isSelfClient(client TailscaleClient, addr string) bool { function assertClientsState (line 650) | func assertClientsState(t *testing.T, clients []TailscaleClient) { function assertValidNetmap (line 679) | func assertValidNetmap(t *testing.T, client TailscaleClient) { function assertValidStatus (line 743) | func assertValidStatus(t *testing.T, client TailscaleClient) { function assertValidNetcheck (line 803) | func assertValidNetcheck(t *testing.T, client TailscaleClient) { function assertCommandOutputContains (line 821) | func assertCommandOutputContains(t *testing.T, c TailscaleClient, comman... function dockertestMaxWait (line 843) | func dockertestMaxWait() time.Duration { function didClientUseWebsocketForDERP (line 856) | func didClientUseWebsocketForDERP(t *testing.T, client TailscaleClient) ... function countMatchingLines (line 879) | func countMatchingLines(in io.Reader, predicate func(string) bool) (int,... function wildcard (line 901) | func wildcard() policyv2.Alias { function usernamep (line 907) | func usernamep(name string) policyv2.Alias { function hostp (line 913) | func hostp(name string) policyv2.Alias { function groupp (line 919) | func groupp(name string) policyv2.Alias { function tagp (line 925) | func tagp(name string) policyv2.Alias { function prefixp (line 931) | func prefixp(cidr string) policyv2.Alias { function aliasWithPorts (line 939) | func aliasWithPorts(alias policyv2.Alias, ports ...tailcfg.PortRange) po... function usernameOwner (line 948) | func usernameOwner(name string) policyv2.Owner { function groupOwner (line 956) | func groupOwner(name string) policyv2.Owner { function usernameApprover (line 962) | func usernameApprover(name string) policyv2.AutoApprover { function groupApprover (line 968) | func groupApprover(name string) policyv2.AutoApprover { function tagApprover (line 974) | func tagApprover(name string) policyv2.AutoApprover { function oidcMockUser (line 981) | func oidcMockUser(username string, emailVerified bool) mockoidc.MockUser { function GetUserByName (line 992) | func GetUserByName(headscale ControlServer, username string) (*v1.User, ... function findNode (line 1009) | func findNode(nodes []*v1.Node, match func(*v1.Node) bool) *v1.Node { function FindNewClient (line 1022) | func FindNewClient(original, updated []TailscaleClient) (TailscaleClient... method AddAndLoginClient (line 1047) | func (s *Scenario) AddAndLoginClient( method MustAddAndLoginClient (line 1113) | func (s *Scenario) MustAddAndLoginClient( FILE: integration/hsic/config.go function MinimumConfigYAML (line 5) | func MinimumConfigYAML() string { function DefaultConfigEnv (line 13) | func DefaultConfigEnv() map[string]string { FILE: integration/hsic/hsic.go constant hsicHashLength (line 43) | hsicHashLength = 6 constant dockerContextPath (line 44) | dockerContextPath = "../." constant caCertRoot (line 45) | caCertRoot = "/usr/local/share/ca-certificates" constant aclPolicyPath (line 46) | aclPolicyPath = "/etc/headscale/acl.hujson" constant tlsCertPath (line 47) | tlsCertPath = "/etc/headscale/tls.cert" constant tlsKeyPath (line 48) | tlsKeyPath = "/etc/headscale/tls.key" constant headscaleDefaultPort (line 49) | headscaleDefaultPort = 8080 constant IntegrationTestDockerFileName (line 50) | IntegrationTestDockerFileName = "Dockerfile.integration" constant defaultDirPerm (line 51) | defaultDirPerm = 0o755 type fileInContainer (line 61) | type fileInContainer struct type HeadscaleInContainer (line 68) | type HeadscaleInContainer struct method buildEntrypoint (line 290) | func (hsic *HeadscaleInContainer) buildEntrypoint() []string { method ConnectToNetwork (line 633) | func (t *HeadscaleInContainer) ConnectToNetwork(network *dockertest.Ne... method hasTLS (line 637) | func (t *HeadscaleInContainer) hasTLS() bool { method Shutdown (line 642) | func (t *HeadscaleInContainer) Shutdown() (string, string, error) { method WriteLogs (line 707) | func (t *HeadscaleInContainer) WriteLogs(stdout, stderr io.Writer) err... method ReadLog (line 712) | func (t *HeadscaleInContainer) ReadLog() (string, string, error) { method SaveLog (line 725) | func (t *HeadscaleInContainer) SaveLog(path string) (string, string, e... method SaveMetrics (line 729) | func (t *HeadscaleInContainer) SaveMetrics(savePath string) error { method SaveProfile (line 852) | func (t *HeadscaleInContainer) SaveProfile(savePath string) error { method SaveMapResponses (line 863) | func (t *HeadscaleInContainer) SaveMapResponses(savePath string) error { method SaveDatabase (line 874) | func (t *HeadscaleInContainer) SaveDatabase(savePath string) error { method Execute (line 973) | func (t *HeadscaleInContainer) Execute( method GetPort (line 996) | func (t *HeadscaleInContainer) GetPort() string { method GetHostMetricsPort (line 1003) | func (t *HeadscaleInContainer) GetHostMetricsPort() string { method GetHealthEndpoint (line 1009) | func (t *HeadscaleInContainer) GetHealthEndpoint() string { method GetEndpoint (line 1014) | func (t *HeadscaleInContainer) GetEndpoint() string { method GetIPEndpoint (line 1019) | func (t *HeadscaleInContainer) GetIPEndpoint() string { method getEndpoint (line 1024) | func (t *HeadscaleInContainer) getEndpoint(useIP bool) string { method GetCert (line 1044) | func (t *HeadscaleInContainer) GetCert() []byte { method GetHostname (line 1049) | func (t *HeadscaleInContainer) GetHostname() string { method GetIPInNetwork (line 1054) | func (t *HeadscaleInContainer) GetIPInNetwork(network *dockertest.Netw... method WaitForRunning (line 1060) | func (t *HeadscaleInContainer) WaitForRunning() error { method CreateUser (line 1088) | func (t *HeadscaleInContainer) CreateUser( method CreateAuthKeyWithOptions (line 1135) | func (t *HeadscaleInContainer) CreateAuthKeyWithOptions(opts AuthKeyOp... method CreateAuthKey (line 1187) | func (t *HeadscaleInContainer) CreateAuthKey( method CreateAuthKeyWithTags (line 1201) | func (t *HeadscaleInContainer) CreateAuthKeyWithTags( method DeleteAuthKey (line 1216) | func (t *HeadscaleInContainer) DeleteAuthKey( method ListNodes (line 1244) | func (t *HeadscaleInContainer) ListNodes( method DeleteNode (line 1294) | func (t *HeadscaleInContainer) DeleteNode(nodeID uint64) error { method NodesByUser (line 1318) | func (t *HeadscaleInContainer) NodesByUser() (map[string][]*v1.Node, e... method NodesByName (line 1336) | func (t *HeadscaleInContainer) NodesByName() (map[string]*v1.Node, err... method ListUsers (line 1351) | func (t *HeadscaleInContainer) ListUsers() ([]*v1.User, error) { method MapUsers (line 1375) | func (t *HeadscaleInContainer) MapUsers() (map[string]*v1.User, error) { method DeleteUser (line 1390) | func (t *HeadscaleInContainer) DeleteUser(userID uint64) error { method SetPolicy (line 1414) | func (h *HeadscaleInContainer) SetPolicy(pol *policyv2.Policy) error { method reloadDatabasePolicy (line 1438) | func (h *HeadscaleInContainer) reloadDatabasePolicy() error { method writePolicy (line 1455) | func (h *HeadscaleInContainer) writePolicy(pol *policyv2.Policy) error { method PID (line 1469) | func (h *HeadscaleInContainer) PID() (int, error) { method Reload (line 1513) | func (h *HeadscaleInContainer) Reload() error { method ApproveRoutes (line 1528) | func (t *HeadscaleInContainer) ApproveRoutes(id uint64, routes []netip... method SetNodeTags (line 1563) | func (t *HeadscaleInContainer) SetNodeTags(nodeID uint64, tags []strin... method WriteFile (line 1591) | func (t *HeadscaleInContainer) WriteFile(path string, data []byte) err... method FetchPath (line 1597) | func (t *HeadscaleInContainer) FetchPath(path string) ([]byte, error) { method SendInterrupt (line 1601) | func (t *HeadscaleInContainer) SendInterrupt() error { method GetAllMapReponses (line 1615) | func (t *HeadscaleInContainer) GetAllMapReponses() (map[types.NodeID][... method PrimaryRoutes (line 1635) | func (t *HeadscaleInContainer) PrimaryRoutes() (*routes.DebugRoutes, e... method DebugBatcher (line 1655) | func (t *HeadscaleInContainer) DebugBatcher() (*hscontrol.DebugBatcher... method DebugNodeStore (line 1675) | func (t *HeadscaleInContainer) DebugNodeStore() (map[types.NodeID]type... method DebugFilter (line 1695) | func (t *HeadscaleInContainer) DebugFilter() ([]tailcfg.FilterRule, er... method DebugPolicy (line 1715) | func (t *HeadscaleInContainer) DebugPolicy() (string, error) { function WithACLPolicy (line 100) | func WithACLPolicy(acl *policyv2.Policy) Option { function WithCACert (line 114) | func WithCACert(cert []byte) Option { function WithoutTLS (line 123) | func WithoutTLS() Option { function WithCustomTLS (line 132) | func WithCustomTLS(caCert, cert, key []byte) Option { function WithConfigEnv (line 143) | func WithConfigEnv(configEnv map[string]string) Option { function WithPort (line 150) | func WithPort(port int) Option { function WithExtraPorts (line 157) | func WithExtraPorts(ports []string) Option { function WithHostPortBindings (line 163) | func WithHostPortBindings(bindings map[string][]string) Option { function WithTestName (line 171) | func WithTestName(testName string) Option { function WithHostname (line 181) | func WithHostname(hostname string) Option { function WithFileInContainer (line 188) | func WithFileInContainer(path string, contents []byte) Option { function WithPostgres (line 200) | func WithPostgres() Option { function WithPolicyMode (line 207) | func WithPolicyMode(mode types.PolicyMode) Option { function WithIPAllocationStrategy (line 215) | func WithIPAllocationStrategy(strategy types.IPAllocationStrategy) Option { function WithPublicDERP (line 224) | func WithPublicDERP() Option { function WithDERPConfig (line 240) | func WithDERPConfig(derpMap tailcfg.DERPMap) Option { function WithTuning (line 267) | func WithTuning(batchTimeout time.Duration, mapSessionChanSize int) Opti... function WithTimezone (line 276) | func WithTimezone(timezone string) Option { function New (line 320) | func New( function extractTarToDirectory (line 756) | func extractTarToDirectory(tarData []byte, targetDir string) error { type AuthKeyOptions (line 1121) | type AuthKeyOptions struct FILE: integration/integrationutil/util.go function PeerSyncTimeout (line 27) | func PeerSyncTimeout() time.Duration { function PeerSyncRetryInterval (line 36) | func PeerSyncRetryInterval() time.Duration { function WriteFileToContainer (line 40) | func WriteFileToContainer( function FetchPathFromContainer (line 101) | func FetchPathFromContainer( function CreateCertificate (line 127) | func CreateCertificate(hostname string) (caCertPEM, certPEM, keyPEM []by... function BuildExpectedOnlineMap (line 227) | func BuildExpectedOnlineMap(all map[types.NodeID][]tailcfg.MapResponse) ... FILE: integration/route_test.go function TestEnablingRoutes (line 43) | func TestEnablingRoutes(t *testing.T) { function TestHASubnetRouterFailover (line 224) | func TestHASubnetRouterFailover(t *testing.T) { function TestSubnetRouteACL (line 1347) | func TestSubnetRouteACL(t *testing.T) { function TestEnablingExitRoutes (line 1600) | func TestEnablingExitRoutes(t *testing.T) { function TestSubnetRouterMultiNetwork (line 1709) | func TestSubnetRouterMultiNetwork(t *testing.T) { function TestSubnetRouterMultiNetworkExitNode (line 1862) | func TestSubnetRouterMultiNetworkExitNode(t *testing.T) { function MustFindNode (line 2003) | func MustFindNode(hostname string, nodes []*v1.Node) *v1.Node { function TestAutoApproveMultiNetwork (line 2031) | func TestAutoApproveMultiNetwork(t *testing.T) { function assertTracerouteViaIPWithCollect (line 2876) | func assertTracerouteViaIPWithCollect(c *assert.CollectT, tr util.Tracer... function SortPeerStatus (line 2888) | func SortPeerStatus(a, b *ipnstate.PeerStatus) int { function printCurrentRouteMap (line 2892) | func printCurrentRouteMap(t *testing.T, routers ...*ipnstate.PeerStatus) { function filterNonRoutes (line 2909) | func filterNonRoutes(status *ipnstate.PeerStatus) []netip.Prefix { function requirePeerSubnetRoutesWithCollect (line 2919) | func requirePeerSubnetRoutesWithCollect(c *assert.CollectT, status *ipns... function requireNodeRouteCountWithCollect (line 2936) | func requireNodeRouteCountWithCollect(c *assert.CollectT, node *v1.Node,... function TestSubnetRouteACLFiltering (line 2944) | func TestSubnetRouteACLFiltering(t *testing.T) { FILE: integration/scenario.go constant scenarioHashLength (line 48) | scenarioHashLength = 6 type User (line 83) | type User struct type Scenario (line 96) | type Scenario struct method prefixedNetworkName (line 163) | func (s *Scenario) prefixedNetworkName(name string) string { method AddNetwork (line 253) | func (s *Scenario) AddNetwork(name string) (*dockertest.Network, error) { method Networks (line 278) | func (s *Scenario) Networks() []*dockertest.Network { method Network (line 286) | func (s *Scenario) Network(name string) (*dockertest.Network, error) { method SubnetOfNetwork (line 295) | func (s *Scenario) SubnetOfNetwork(name string) (*netip.Prefix, error) { method Services (line 313) | func (s *Scenario) Services(name string) ([]*dockertest.Resource, erro... method ShutdownAssertNoPanics (line 322) | func (s *Scenario) ShutdownAssertNoPanics(t *testing.T) { method Shutdown (line 412) | func (s *Scenario) Shutdown() { method Users (line 417) | func (s *Scenario) Users() []string { method Headscale (line 433) | func (s *Scenario) Headscale(opts ...hsic.Option) (ControlServer, erro... method Pool (line 461) | func (s *Scenario) Pool() *dockertest.Pool { method GetOrCreateUser (line 466) | func (s *Scenario) GetOrCreateUser(userStr string) *User { method CreatePreAuthKey (line 484) | func (s *Scenario) CreatePreAuthKey( method CreatePreAuthKeyWithOptions (line 503) | func (s *Scenario) CreatePreAuthKeyWithOptions(opts hsic.AuthKeyOption... method CreatePreAuthKeyWithTags (line 519) | func (s *Scenario) CreatePreAuthKeyWithTags( method CreateUser (line 540) | func (s *Scenario) CreateUser(user string) (*v1.User, error) { method CreateTailscaleNode (line 561) | func (s *Scenario) CreateTailscaleNode( method CreateTailscaleNodesInUser (line 607) | func (s *Scenario) CreateTailscaleNodesInUser( method RunTailscaleUp (line 708) | func (s *Scenario) RunTailscaleUp( method CountTailscale (line 740) | func (s *Scenario) CountTailscale() int { method WaitForTailscaleSync (line 752) | func (s *Scenario) WaitForTailscaleSync() error { method WaitForTailscaleSyncPerUser (line 773) | func (s *Scenario) WaitForTailscaleSyncPerUser(timeout, retryInterval ... method WaitForTailscaleSyncWithPeerCount (line 804) | func (s *Scenario) WaitForTailscaleSyncWithPeerCount(peerCount int, ti... method CreateHeadscaleEnvWithLoginURL (line 829) | func (s *Scenario) CreateHeadscaleEnvWithLoginURL( method CreateHeadscaleEnv (line 836) | func (s *Scenario) CreateHeadscaleEnv( method createHeadscaleEnv (line 845) | func (s *Scenario) createHeadscaleEnv( method createHeadscaleEnvWithTags (line 862) | func (s *Scenario) createHeadscaleEnvWithTags( method RunTailscaleUpWithURL (line 935) | func (s *Scenario) RunTailscaleUpWithURL(userStr, loginServer string) ... method runHeadscaleRegister (line 1180) | func (s *Scenario) runHeadscaleRegister(userStr string, body string) e... method GetIPs (line 1238) | func (s *Scenario) GetIPs(user string) ([]netip.Addr, error) { method GetClients (line 1258) | func (s *Scenario) GetClients(user string) ([]TailscaleClient, error) { method ListTailscaleClients (line 1274) | func (s *Scenario) ListTailscaleClients(users ...string) ([]TailscaleC... method FindTailscaleClientByIP (line 1295) | func (s *Scenario) FindTailscaleClientByIP(ip netip.Addr) (TailscaleCl... method ListTailscaleClientsIPs (line 1313) | func (s *Scenario) ListTailscaleClientsIPs(users ...string) ([]netip.A... method ListTailscaleClientsFQDNs (line 1334) | func (s *Scenario) ListTailscaleClientsFQDNs(users ...string) ([]strin... method WaitForTailscaleLogout (line 1356) | func (s *Scenario) WaitForTailscaleLogout() error { method CreateDERPServer (line 1376) | func (s *Scenario) CreateDERPServer(version string, opts ...dsic.Optio... method runMockOIDC (line 1429) | func (s *Scenario) runMockOIDC(accessTTL time.Duration, users []mockoi... type ScenarioSpec (line 120) | type ScenarioSpec struct function NewScenario (line 169) | func NewScenario(spec ScenarioSpec) (*Scenario, error) { type debugJar (line 987) | type debugJar struct method SetCookies (line 1005) | func (j *debugJar) SetCookies(u *url.URL, cookies []*http.Cookie) { method Cookies (line 1038) | func (j *debugJar) Cookies(u *url.URL) []*http.Cookie { method Dump (line 1042) | func (j *debugJar) Dump(w io.Writer) { function newDebugJar (line 993) | func newDebugJar() (*debugJar, error) { function copyCookie (line 1062) | func copyCookie(c *http.Cookie) *http.Cookie { function newLoginHTTPClient (line 1067) | func newLoginHTTPClient(hostname string) (*http.Client, error) { function doLoginURL (line 1083) | func doLoginURL(hostname string, loginURL *url.URL) (string, error) { function doLoginURLWithClient (line 1101) | func doLoginURLWithClient(hostname string, loginURL *url.URL, hc *http.C... type LoggingRoundTripper (line 1212) | type LoggingRoundTripper struct method RoundTrip (line 1216) | func (t LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Respo... type scenarioOIDC (line 1392) | type scenarioOIDC struct method Issuer (line 1397) | func (o *scenarioOIDC) Issuer() string { method ClientSecret (line 1405) | func (o *scenarioOIDC) ClientSecret() string { method ClientID (line 1413) | func (o *scenarioOIDC) ClientID() string { constant dockerContextPath (line 1422) | dockerContextPath = "../." constant hsicOIDCMockHashLength (line 1423) | hsicOIDCMockHashLength = 6 constant defaultAccessTTL (line 1424) | defaultAccessTTL = 10 * time.Minute type extraServiceFunc (line 1536) | type extraServiceFunc function Webservice (line 1538) | func Webservice(s *Scenario, networkName string) (*dockertest.Resource, ... FILE: integration/scenario_test.go function IntegrationSkip (line 15) | func IntegrationSkip(t *testing.T) { function TestHeadscale (line 31) | func TestHeadscale(t *testing.T) { function TestTailscaleNodesJoiningHeadcale (line 78) | func TestTailscaleNodesJoiningHeadcale(t *testing.T) { FILE: integration/ssh_test.go function isSSHNoAccessStdError (line 21) | func isSSHNoAccessStdError(stderr string) bool { function sshScenario (line 30) | func sshScenario(t *testing.T, policy *policyv2.Policy, testName string,... function TestSSHOneUserToAll (line 66) | func TestSSHOneUserToAll(t *testing.T) { function TestSSHMultipleUsersAllToAll (line 141) | func TestSSHMultipleUsersAllToAll(t *testing.T) { function TestSSHNoSSHConfigured (line 227) | func TestSSHNoSSHConfigured(t *testing.T) { function TestSSHIsBlockedInACL (line 272) | func TestSSHIsBlockedInACL(t *testing.T) { function TestSSHUserOnlyIsolation (line 324) | func TestSSHUserOnlyIsolation(t *testing.T) { function doSSH (line 419) | func doSSH(t *testing.T, client TailscaleClient, peer TailscaleClient) (... function doSSHWithoutRetry (line 424) | func doSSHWithoutRetry(t *testing.T, client TailscaleClient, peer Tailsc... function doSSHWithRetry (line 429) | func doSSHWithRetry(t *testing.T, client TailscaleClient, peer Tailscale... function doSSHWithRetryAsUser (line 435) | func doSSHWithRetryAsUser( function assertSSHHostname (line 482) | func assertSSHHostname(t *testing.T, client TailscaleClient, peer Tailsc... function assertSSHPermissionDenied (line 491) | func assertSSHPermissionDenied(t *testing.T, client TailscaleClient, pee... function assertSSHTimeout (line 501) | func assertSSHTimeout(t *testing.T, client TailscaleClient, peer Tailsca... function assertSSHNoAccessStdError (line 514) | func assertSSHNoAccessStdError(t *testing.T, err error, stderr string) { function doSSHAsUser (line 523) | func doSSHAsUser(t *testing.T, client TailscaleClient, peer TailscaleCli... function assertSSHHostnameAsUser (line 529) | func assertSSHHostnameAsUser(t *testing.T, client TailscaleClient, peer ... function assertSSHPermissionDeniedAsUser (line 538) | func assertSSHPermissionDeniedAsUser(t *testing.T, client TailscaleClien... function TestSSHAutogroupSelf (line 551) | func TestSSHAutogroupSelf(t *testing.T) { type sshCheckResult (line 630) | type sshCheckResult struct function doSSHCheck (line 639) | func doSSHCheck( function findSSHCheckAuthID (line 676) | func findSSHCheckAuthID(t *testing.T, headscale ControlServer) string { function sshCheckPolicy (line 710) | func sshCheckPolicy() *policyv2.Policy { function sshCheckPolicyWithPeriod (line 743) | func sshCheckPolicyWithPeriod(period time.Duration) *policyv2.Policy { function findNewSSHCheckAuthID (line 778) | func findNewSSHCheckAuthID( function TestSSHOneUserToOneCheckModeCLI (line 817) | func TestSSHOneUserToOneCheckModeCLI(t *testing.T) { function TestSSHOneUserToOneCheckModeOIDC (line 890) | func TestSSHOneUserToOneCheckModeOIDC(t *testing.T) { function TestSSHCheckModeUnapprovedTimeout (line 1005) | func TestSSHCheckModeUnapprovedTimeout(t *testing.T) { function TestSSHCheckModeCheckPeriodCLI (line 1091) | func TestSSHCheckModeCheckPeriodCLI(t *testing.T) { function TestSSHCheckModeAutoApprove (line 1186) | func TestSSHCheckModeAutoApprove(t *testing.T) { function TestSSHCheckModeNegativeCLI (line 1252) | func TestSSHCheckModeNegativeCLI(t *testing.T) { function TestSSHLocalpart (line 1306) | func TestSSHLocalpart(t *testing.T) { FILE: integration/tags_test.go constant tagTestUser (line 18) | tagTestUser = "taguser" function tagsTestPolicy (line 29) | func tagsTestPolicy() *policyv2.Policy { function tagsEqual (line 48) | func tagsEqual(actual, expected []string) bool { function assertNodeHasTagsWithCollect (line 69) | func assertNodeHasTagsWithCollect(c *assert.CollectT, node *v1.Node, exp... function assertNodeHasNoTagsWithCollect (line 80) | func assertNodeHasNoTagsWithCollect(c *assert.CollectT, node *v1.Node) { function assertNodeSelfHasTagsWithCollect (line 86) | func assertNodeSelfHasTagsWithCollect(c *assert.CollectT, client Tailsca... function TestTagsAuthKeyWithTagRequestDifferentTag (line 122) | func TestTagsAuthKeyWithTagRequestDifferentTag(t *testing.T) { function TestTagsAuthKeyWithTagNoAdvertiseFlag (line 196) | func TestTagsAuthKeyWithTagNoAdvertiseFlag(t *testing.T) { function TestTagsAuthKeyWithTagCannotAddViaCLI (line 268) | func TestTagsAuthKeyWithTagCannotAddViaCLI(t *testing.T) { function TestTagsAuthKeyWithTagCannotChangeViaCLI (line 368) | func TestTagsAuthKeyWithTagCannotChangeViaCLI(t *testing.T) { function TestTagsAuthKeyWithTagAdminOverrideReauthPreserves (line 464) | func TestTagsAuthKeyWithTagAdminOverrideReauthPreserves(t *testing.T) { function TestTagsAuthKeyWithTagCLICannotModifyAdminTags (line 591) | func TestTagsAuthKeyWithTagCLICannotModifyAdminTags(t *testing.T) { function TestTagsAuthKeyWithoutTagCannotRequestTags (line 713) | func TestTagsAuthKeyWithoutTagCannotRequestTags(t *testing.T) { function TestTagsAuthKeyWithoutTagRegisterNoTags (line 784) | func TestTagsAuthKeyWithoutTagRegisterNoTags(t *testing.T) { function TestTagsAuthKeyWithoutTagCannotAddViaCLI (line 853) | func TestTagsAuthKeyWithoutTagCannotAddViaCLI(t *testing.T) { function TestTagsAuthKeyWithoutTagCLINoOpAfterAdminWithReset (line 952) | func TestTagsAuthKeyWithoutTagCLINoOpAfterAdminWithReset(t *testing.T) { function TestTagsAuthKeyWithoutTagCLINoOpAfterAdminWithEmptyAdvertise (line 1072) | func TestTagsAuthKeyWithoutTagCLINoOpAfterAdminWithEmptyAdvertise(t *tes... function TestTagsAuthKeyWithoutTagCLICannotReduceAdminMultiTag (line 1191) | func TestTagsAuthKeyWithoutTagCLICannotReduceAdminMultiTag(t *testing.T) { function TestTagsUserLoginOwnedTagAtRegistration (line 1310) | func TestTagsUserLoginOwnedTagAtRegistration(t *testing.T) { function TestTagsUserLoginNonExistentTagAtRegistration (line 1382) | func TestTagsUserLoginNonExistentTagAtRegistration(t *testing.T) { function TestTagsUserLoginUnownedTagAtRegistration (line 1454) | func TestTagsUserLoginUnownedTagAtRegistration(t *testing.T) { function TestTagsUserLoginAddTagViaCLIReauth (line 1523) | func TestTagsUserLoginAddTagViaCLIReauth(t *testing.T) { function TestTagsUserLoginRemoveTagViaCLIReauth (line 1614) | func TestTagsUserLoginRemoveTagViaCLIReauth(t *testing.T) { function TestTagsUserLoginCLINoOpAfterAdminAssignment (line 1705) | func TestTagsUserLoginCLINoOpAfterAdminAssignment(t *testing.T) { function TestTagsUserLoginCLICannotRemoveAdminTags (line 1822) | func TestTagsUserLoginCLICannotRemoveAdminTags(t *testing.T) { function TestTagsAuthKeyWithTagRequestNonExistentTag (line 1939) | func TestTagsAuthKeyWithTagRequestNonExistentTag(t *testing.T) { function TestTagsAuthKeyWithTagRequestUnownedTag (line 2009) | func TestTagsAuthKeyWithTagRequestUnownedTag(t *testing.T) { function TestTagsAuthKeyWithoutTagRequestNonExistentTag (line 2083) | func TestTagsAuthKeyWithoutTagRequestNonExistentTag(t *testing.T) { function TestTagsAuthKeyWithoutTagRequestUnownedTag (line 2153) | func TestTagsAuthKeyWithoutTagRequestUnownedTag(t *testing.T) { function TestTagsAdminAPICannotSetNonExistentTag (line 2227) | func TestTagsAdminAPICannotSetNonExistentTag(t *testing.T) { function TestTagsAdminAPICanSetUnownedTag (line 2299) | func TestTagsAdminAPICanSetUnownedTag(t *testing.T) { function TestTagsAdminAPICannotRemoveAllTags (line 2387) | func TestTagsAdminAPICannotRemoveAllTags(t *testing.T) { function assertNetmapSelfHasTagsWithCollect (line 2465) | func assertNetmapSelfHasTagsWithCollect(c *assert.CollectT, client Tails... function TestTagsIssue2978ReproTagReplacement (line 2501) | func TestTagsIssue2978ReproTagReplacement(t *testing.T) { function TestTagsAdminAPICannotSetInvalidFormat (line 2709) | func TestTagsAdminAPICannotSetInvalidFormat(t *testing.T) { function TestTagsUserLoginReauthWithEmptyTagsRemovesAllTags (line 2799) | func TestTagsUserLoginReauthWithEmptyTagsRemovesAllTags(t *testing.T) { function TestTagsAuthKeyWithoutUserInheritsTags (line 2963) | func TestTagsAuthKeyWithoutUserInheritsTags(t *testing.T) { function TestTagsAuthKeyWithoutUserRejectsAdvertisedTags (line 3034) | func TestTagsAuthKeyWithoutUserRejectsAdvertisedTags(t *testing.T) { function TestTagsAuthKeyConvertToUserViaCLIRegister (line 3100) | func TestTagsAuthKeyConvertToUserViaCLIRegister(t *testing.T) { FILE: integration/tailscale.go type TailscaleClient (line 21) | type TailscaleClient interface FILE: integration/tsic/tsic.go constant tsicHashLength (line 41) | tsicHashLength = 6 constant defaultPingTimeout (line 42) | defaultPingTimeout = 200 * time.Millisecond constant defaultPingCount (line 43) | defaultPingCount = 5 constant dockerContextPath (line 44) | dockerContextPath = "../." constant caCertRoot (line 45) | caCertRoot = "/usr/local/share/ca-certificates" constant dockerExecuteTimeout (line 46) | dockerExecuteTimeout = 60 * time.Second constant VersionHead (line 63) | VersionHead = "head" function errTailscaleStatus (line 66) | func errTailscaleStatus(hostname string, err error) error { type TailscaleInContainer (line 72) | type TailscaleInContainer struct method buildEntrypoint (line 255) | func (t *TailscaleInContainer) buildEntrypoint() []string { method Shutdown (line 566) | func (t *TailscaleInContainer) Shutdown() (string, string, error) { method Hostname (line 580) | func (t *TailscaleInContainer) Hostname() string { method Version (line 585) | func (t *TailscaleInContainer) Version() string { method ContainerID (line 591) | func (t *TailscaleInContainer) ContainerID() string { method Execute (line 597) | func (t *TailscaleInContainer) Execute( method Logs (line 625) | func (t *TailscaleInContainer) Logs(stdout, stderr io.Writer) error { method buildLoginCommand (line 633) | func (t *TailscaleInContainer) buildLoginCommand( method Login (line 671) | func (t *TailscaleInContainer) Login( method LoginWithURL (line 690) | func (t *TailscaleInContainer) LoginWithURL( method Logout (line 715) | func (t *TailscaleInContainer) Logout() error { method Restart (line 733) | func (t *TailscaleInContainer) Restart() error { method Up (line 763) | func (t *TailscaleInContainer) Up() error { method Down (line 782) | func (t *TailscaleInContainer) Down() error { method IPs (line 801) | func (t *TailscaleInContainer) IPs() ([]netip.Addr, error) { method MustIPs (line 847) | func (t *TailscaleInContainer) MustIPs() []netip.Addr { method IPv4 (line 857) | func (t *TailscaleInContainer) IPv4() (netip.Addr, error) { method MustIPv4 (line 872) | func (t *TailscaleInContainer) MustIPv4() netip.Addr { method MustIPv6 (line 881) | func (t *TailscaleInContainer) MustIPv6() netip.Addr { method Status (line 892) | func (t *TailscaleInContainer) Status(save ...bool) (*ipnstate.Status,... method MustStatus (line 920) | func (t *TailscaleInContainer) MustStatus() *ipnstate.Status { method MustID (line 930) | func (t *TailscaleInContainer) MustID() types.NodeID { method Netmap (line 947) | func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error) { method watchIPN (line 1006) | func (t *TailscaleInContainer) watchIPN(ctx context.Context) (*ipn.Not... method DebugDERPRegion (line 1074) | func (t *TailscaleInContainer) DebugDERPRegion(region string) (*ipnsta... method Netcheck (line 1104) | func (t *TailscaleInContainer) Netcheck() (*netcheck.Report, error) { method FQDN (line 1128) | func (t *TailscaleInContainer) FQDN() (string, error) { method MustFQDN (line 1154) | func (t *TailscaleInContainer) MustFQDN() string { method FailingPeersAsString (line 1165) | func (t *TailscaleInContainer) FailingPeersAsString() (string, bool, e... method WaitForNeedsLogin (line 1196) | func (t *TailscaleInContainer) WaitForNeedsLogin(timeout time.Duration... method WaitForRunning (line 1202) | func (t *TailscaleInContainer) WaitForRunning(timeout time.Duration) e... method waitForBackendState (line 1206) | func (t *TailscaleInContainer) waitForBackendState(state string, timeo... method WaitForPeers (line 1245) | func (t *TailscaleInContainer) WaitForPeers(expected int, timeout, ret... method Ping (line 1349) | func (t *TailscaleInContainer) Ping(hostnameOrIP string, opts ...PingO... method Curl (line 1453) | func (t *TailscaleInContainer) Curl(url string, opts ...CurlOption) (s... method CurlFailFast (line 1497) | func (t *TailscaleInContainer) CurlFailFast(url string) (string, error) { method Traceroute (line 1505) | func (t *TailscaleInContainer) Traceroute(ip netip.Addr) (util.Tracero... method WriteFile (line 1527) | func (t *TailscaleInContainer) WriteFile(path string, data []byte) err... method SaveLog (line 1533) | func (t *TailscaleInContainer) SaveLog(path string) (string, string, e... method WriteLogs (line 1545) | func (t *TailscaleInContainer) WriteLogs(stdout, stderr io.Writer) err... method ReadFile (line 1551) | func (t *TailscaleInContainer) ReadFile(path string) ([]byte, error) { method GetNodePrivateKey (line 1589) | func (t *TailscaleInContainer) GetNodePrivateKey() (*key.NodePrivate, ... method PacketFilter (line 1620) | func (t *TailscaleInContainer) PacketFilter() ([]filter.Match, error) { type TailscaleInContainerBuildConfig (line 104) | type TailscaleInContainerBuildConfig struct function WithCACert (line 113) | func WithCACert(cert []byte) Option { function WithNetwork (line 121) | func WithNetwork(network *dockertest.Network) Option { function WithHeadscaleName (line 129) | func WithHeadscaleName(hsName string) Option { function WithTags (line 136) | func WithTags(tags []string) Option { function WithWebsocketDERP (line 144) | func WithWebsocketDERP(enabled bool) Option { function WithSSH (line 151) | func WithSSH() Option { function WithDockerWorkdir (line 158) | func WithDockerWorkdir(dir string) Option { function WithExtraHosts (line 164) | func WithExtraHosts(hosts []string) Option { function WithDockerEntrypoint (line 175) | func WithDockerEntrypoint(args []string) Option { function WithNetfilter (line 184) | func WithNetfilter(state string) Option { function WithBuildTag (line 194) | func WithBuildTag(tag string) Option { function WithExtraLoginArgs (line 208) | func WithExtraLoginArgs(args []string) Option { function WithAcceptRoutes (line 215) | func WithAcceptRoutes() Option { function WithPackages (line 229) | func WithPackages(packages ...string) Option { function WithWebserver (line 239) | func WithWebserver(port int) Option { function WithExtraCommands (line 247) | func WithExtraCommands(commands ...string) Option { function New (line 300) | func New( type pingArgs (line 1316) | type pingArgs struct function WithPingTimeout (line 1324) | func WithPingTimeout(timeout time.Duration) PingOption { function WithPingCount (line 1331) | func WithPingCount(count int) PingOption { function WithPingUntilDirect (line 1340) | func WithPingUntilDirect(direct bool) PingOption { type curlArgs (line 1411) | type curlArgs struct function WithCurlConnectionTimeout (line 1422) | func WithCurlConnectionTimeout(timeout time.Duration) CurlOption { function WithCurlMaxTime (line 1430) | func WithCurlMaxTime(t time.Duration) CurlOption { function WithCurlRetry (line 1437) | func WithCurlRetry(ret int) CurlOption { constant defaultConnectionTimeout (line 1444) | defaultConnectionTimeout = 1 * time.Second constant defaultMaxTime (line 1445) | defaultMaxTime = 3 * time.Second constant defaultRetry (line 1446) | defaultRetry = 3 constant defaultRetryDelay (line 1447) | defaultRetryDelay = 200 * time.Millisecond constant defaultRetryMaxTime (line 1448) | defaultRetryMaxTime = 5 * time.Second FILE: swagger.go function SwaggerUI (line 15) | func SwaggerUI( function SwaggerAPIv1 (line 84) | func SwaggerAPIv1( FILE: tools/capver/main.go constant ghcrTokenURL (line 26) | ghcrTokenURL = "https://ghcr.io/token?service=ghcr.io&sco... constant ghcrTagsURL (line 27) | ghcrTagsURL = "https://ghcr.io/v2/tailscale/tailscale/ta... constant rawFileURL (line 28) | rawFileURL = "https://github.com/tailscale/tailscale/ra... constant outputFile (line 29) | outputFile = "../../hscontrol/capver/capver_generated.go" constant testFile (line 30) | testFile = "../../hscontrol/capver/capver_test_data.go" constant fallbackCapVer (line 31) | fallbackCapVer = 90 constant maxTestCases (line 32) | maxTestCases = 4 constant supportedMajorMinorVersions (line 33) | supportedMajorMinorVersions = 10 constant filePermissions (line 34) | filePermissions = 0o600 constant semverMatchGroups (line 35) | semverMatchGroups = 4 constant latest3Count (line 36) | latest3Count = 3 constant latest2Count (line 37) | latest2Count = 2 type GHCRTokenResponse (line 43) | type GHCRTokenResponse struct type GHCRTagsResponse (line 48) | type GHCRTagsResponse struct function getGHCRToken (line 54) | func getGHCRToken(ctx context.Context) (string, error) { function getGHCRTags (line 88) | func getGHCRTags(ctx context.Context) ([]string, error) { function parseSemver (line 133) | func parseSemver(tag string) (int, int, int) { function getMinorVersionsFromTags (line 149) | func getMinorVersionsFromTags(tags []string) map[string]string { function getCapabilityVersions (line 187) | func getCapabilityVersions(ctx context.Context) (map[string]tailcfg.Capa... function calculateMinSupportedCapabilityVersion (line 247) | func calculateMinSupportedCapabilityVersion(versions map[string]tailcfg.... function writeCapabilityVersionsToFile (line 264) | func writeCapabilityVersionsToFile(versions map[string]tailcfg.Capabilit... function writeTestDataFile (line 333) | func writeTestDataFile(versions map[string]tailcfg.CapabilityVersion, mi... function main (line 460) | func main() {