various: add golangci-lint, fix issues (#7905)

This adds an initial and intentionally minimal configuration for
golang-ci, fixes the issues reported, and adds a GitHub Action to check
new pull requests against this linter configuration.

Signed-off-by: Andrew Dunham <andrew@du.nham.ca>
Change-Id: I8f38fbc315836a19a094d0d3e986758b9313f163
pull/7906/head
Andrew Dunham 2023-04-17 18:38:24 -04:00 committed by GitHub
parent ff1b35ec6c
commit 280255acae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 529 additions and 269 deletions

View File

@ -0,0 +1,40 @@
name: golangci-lint
on:
# For now, only lint pull requests, not the main branches.
pull_request:
# TODO(andrew): enable for main branch after an initial waiting period.
#push:
# branches:
# - main
workflow_dispatch:
permissions:
contents: read
pull-requests: read
concurrency:
group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version-file: go.mod
cache: false
- name: golangci-lint
# Note: this is the 'v3' tag as of 2023-04-17
uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5
with:
version: v1.52.2
# Show only new issues if it's a pull request.
only-new-issues: true

33
.golangci.yml 100644
View File

@ -0,0 +1,33 @@
linters:
# Don't enable any linters by default; just the ones that we explicitly
# enable in the list below.
disable-all: true
enable:
- gofmt
- goimports
- misspell
# Configuration for how we run golangci-lint
run:
timeout: 5m
issues:
# Excluding configuration per-path, per-linter, per-text and per-source
exclude-rules:
# These are forks of an upstream package and thus are exempt from stylistic
# changes that would make pulling in upstream changes harder.
- path: tempfork/.*\.go
text: "File is not `gofmt`-ed with `-s` `-r 'interface{} -> any'`"
- path: util/singleflight/.*\.go
text: "File is not `gofmt`-ed with `-s` `-r 'interface{} -> any'`"
# Per-linter settings are contained in this top-level key
linters-settings:
gofmt:
rewrite-rules:
- pattern: 'interface{}'
replacement: 'any'
goimports:
misspell:

View File

@ -30,7 +30,7 @@ func TestDoesNotOverwriteIrregularFiles(t *testing.T) {
} }
// The least troublesome thing to make that is not a file is a unix socket. // The least troublesome thing to make that is not a file is a unix socket.
// Making a null device sadly requries root. // Making a null device sadly requires root.
l, err := net.ListenUnix("unix", &net.UnixAddr{Name: path, Net: "unix"}) l, err := net.ListenUnix("unix", &net.UnixAddr{Name: path, Net: "unix"})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

View File

@ -436,7 +436,7 @@ func (c *Client) ValidateACLJSON(ctx context.Context, source, dest string) (test
} }
}() }()
tests := []ACLTest{ACLTest{User: source, Allow: []string{dest}}} tests := []ACLTest{{User: source, Allow: []string{dest}}}
postData, err := json.Marshal(tests) postData, err := json.Marshal(tests)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -63,7 +63,7 @@ func (c *Client) dnsGETRequest(ctx context.Context, endpoint string) ([]byte, er
return b, nil return b, nil
} }
func (c *Client) dnsPOSTRequest(ctx context.Context, endpoint string, postData interface{}) ([]byte, error) { func (c *Client) dnsPOSTRequest(ctx context.Context, endpoint string, postData any) ([]byte, error) {
path := fmt.Sprintf("%s/api/v2/tailnet/%s/dns/%s", c.baseURL(), c.tailnet, endpoint) path := fmt.Sprintf("%s/api/v2/tailnet/%s/dns/%s", c.baseURL(), c.tailnet, endpoint)
data, err := json.Marshal(&postData) data, err := json.Marshal(&postData)
if err != nil { if err != nil {

View File

@ -272,7 +272,7 @@ func (p *proxy) serve(sessionID int64, c net.Conn) error {
} }
if buf[0] != 'S' { if buf[0] != 'S' {
p.errors.Add("upstream-bad-protocol", 1) p.errors.Add("upstream-bad-protocol", 1)
return fmt.Errorf("upstream didn't acknowldge start-ssl, said %q", buf[0]) return fmt.Errorf("upstream didn't acknowledge start-ssl, said %q", buf[0])
} }
tlsConf := &tls.Config{ tlsConf := &tls.Config{
ServerName: p.upstreamHost, ServerName: p.upstreamHost,

View File

@ -46,7 +46,7 @@ import (
var ControlURL = ipn.DefaultControlURL var ControlURL = ipn.DefaultControlURL
func main() { func main() {
js.Global().Set("newIPN", js.FuncOf(func(this js.Value, args []js.Value) interface{} { js.Global().Set("newIPN", js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 1 { if len(args) != 1 {
log.Fatal("Usage: newIPN(config)") log.Fatal("Usage: newIPN(config)")
return nil return nil
@ -146,7 +146,7 @@ func newIPN(jsConfig js.Value) map[string]any {
} }
return map[string]any{ return map[string]any{
"run": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "run": js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 1 { if len(args) != 1 {
log.Fatal(`Usage: run({ log.Fatal(`Usage: run({
notifyState(state: int): void, notifyState(state: int): void,
@ -159,7 +159,7 @@ func newIPN(jsConfig js.Value) map[string]any {
jsIPN.run(args[0]) jsIPN.run(args[0])
return nil return nil
}), }),
"login": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "login": js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 0 { if len(args) != 0 {
log.Printf("Usage: login()") log.Printf("Usage: login()")
return nil return nil
@ -167,7 +167,7 @@ func newIPN(jsConfig js.Value) map[string]any {
jsIPN.login() jsIPN.login()
return nil return nil
}), }),
"logout": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "logout": js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 0 { if len(args) != 0 {
log.Printf("Usage: logout()") log.Printf("Usage: logout()")
return nil return nil
@ -175,7 +175,7 @@ func newIPN(jsConfig js.Value) map[string]any {
jsIPN.logout() jsIPN.logout()
return nil return nil
}), }),
"ssh": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "ssh": js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 3 { if len(args) != 3 {
log.Printf("Usage: ssh(hostname, userName, termConfig)") log.Printf("Usage: ssh(hostname, userName, termConfig)")
return nil return nil
@ -185,7 +185,7 @@ func newIPN(jsConfig js.Value) map[string]any {
args[1].String(), args[1].String(),
args[2]) args[2])
}), }),
"fetch": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "fetch": js.FuncOf(func(this js.Value, args []js.Value) any {
if len(args) != 1 { if len(args) != 1 {
log.Printf("Usage: fetch(url)") log.Printf("Usage: fetch(url)")
return nil return nil
@ -334,10 +334,10 @@ func (i *jsIPN) ssh(host, username string, termConfig js.Value) map[string]any {
go jsSSHSession.Run() go jsSSHSession.Run()
return map[string]any{ return map[string]any{
"close": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "close": js.FuncOf(func(this js.Value, args []js.Value) any {
return jsSSHSession.Close() != nil return jsSSHSession.Close() != nil
}), }),
"resize": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "resize": js.FuncOf(func(this js.Value, args []js.Value) any {
rows := args[0].Int() rows := args[0].Int()
cols := args[1].Int() cols := args[1].Int()
return jsSSHSession.Resize(rows, cols) != nil return jsSSHSession.Resize(rows, cols) != nil
@ -426,7 +426,7 @@ func (s *jsSSHSession) Run() {
session.Stdout = termWriter{writeFn} session.Stdout = termWriter{writeFn}
session.Stderr = termWriter{writeFn} session.Stderr = termWriter{writeFn}
setReadFn.Invoke(js.FuncOf(func(this js.Value, args []js.Value) interface{} { setReadFn.Invoke(js.FuncOf(func(this js.Value, args []js.Value) any {
input := args[0].String() input := args[0].String()
_, err := stdin.Write([]byte(input)) _, err := stdin.Write([]byte(input))
if err != nil { if err != nil {
@ -496,7 +496,7 @@ func (i *jsIPN) fetch(url string) js.Value {
return map[string]any{ return map[string]any{
"status": res.StatusCode, "status": res.StatusCode,
"statusText": res.Status, "statusText": res.Status,
"text": js.FuncOf(func(this js.Value, args []js.Value) interface{} { "text": js.FuncOf(func(this js.Value, args []js.Value) any {
return makePromise(func() (any, error) { return makePromise(func() (any, error) {
defer res.Body.Close() defer res.Body.Close()
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
@ -602,7 +602,7 @@ func generateHostname() string {
// f is run on a goroutine and its return value is used to resolve the promise // f is run on a goroutine and its return value is used to resolve the promise
// (or reject it if an error is returned). // (or reject it if an error is returned).
func makePromise(f func() (any, error)) js.Value { func makePromise(f func() (any, error)) js.Value {
handler := js.FuncOf(func(this js.Value, args []js.Value) interface{} { handler := js.FuncOf(func(this js.Value, args []js.Value) any {
resolve := args[0] resolve := args[0]
reject := args[1] reject := args[1]
go func() { go func() {

View File

@ -398,7 +398,7 @@ type maxMsgBuffer [maxMessageSize]byte
// bufPool holds the temporary buffers for Conn.Read & Write. // bufPool holds the temporary buffers for Conn.Read & Write.
var bufPool = &sync.Pool{ var bufPool = &sync.Pool{
New: func() interface{} { New: func() any {
return new(maxMsgBuffer) return new(maxMsgBuffer)
}, },
} }

203
go.mod
View File

@ -21,13 +21,14 @@ require (
github.com/dblohm7/wingoes v0.0.0-20221124203957-6ac47ab19aa5 github.com/dblohm7/wingoes v0.0.0-20221124203957-6ac47ab19aa5
github.com/dsnet/try v0.0.3 github.com/dsnet/try v0.0.3
github.com/evanw/esbuild v0.14.53 github.com/evanw/esbuild v0.14.53
github.com/frankban/quicktest v1.14.0 github.com/frankban/quicktest v1.14.3
github.com/fxamacker/cbor/v2 v2.4.0 github.com/fxamacker/cbor/v2 v2.4.0
github.com/go-json-experiment/json v0.0.0-20221017203807-c5ed296b8c92 github.com/go-json-experiment/json v0.0.0-20221017203807-c5ed296b8c92
github.com/go-logr/zapr v1.2.3 github.com/go-logr/zapr v1.2.3
github.com/go-ole/go-ole v1.2.6 github.com/go-ole/go-ole v1.2.6
github.com/godbus/dbus/v5 v5.0.6 github.com/godbus/dbus/v5 v5.0.6
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
github.com/golangci/golangci-lint v1.52.2
github.com/google/go-cmp v0.5.9 github.com/google/go-cmp v0.5.9
github.com/google/go-containerregistry v0.9.0 github.com/google/go-containerregistry v0.9.0
github.com/google/nftables v0.1.1-0.20230115205135-9aa6fdf5a28c github.com/google/nftables v0.1.1-0.20230115205135-9aa6fdf5a28c
@ -42,8 +43,8 @@ require (
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/klauspost/compress v1.15.4 github.com/klauspost/compress v1.15.4
github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a
github.com/mattn/go-colorable v0.1.12 github.com/mattn/go-colorable v0.1.13
github.com/mattn/go-isatty v0.0.14 github.com/mattn/go-isatty v0.0.17
github.com/mdlayher/genetlink v1.2.0 github.com/mdlayher/genetlink v1.2.0
github.com/mdlayher/netlink v1.7.1 github.com/mdlayher/netlink v1.7.1
github.com/mdlayher/sdnotify v1.0.0 github.com/mdlayher/sdnotify v1.0.0
@ -69,23 +70,23 @@ require (
github.com/toqueteos/webbrowser v1.2.0 github.com/toqueteos/webbrowser v1.2.0
github.com/u-root/u-root v0.9.1-0.20230109201855-948a78c969ad github.com/u-root/u-root v0.9.1-0.20230109201855-948a78c969ad
github.com/vishvananda/netlink v1.1.1-0.20211118161826-650dca95af54 github.com/vishvananda/netlink v1.1.1-0.20211118161826-650dca95af54
go.uber.org/zap v1.21.0 go.uber.org/zap v1.24.0
go4.org/mem v0.0.0-20210711025021-927187094b94 go4.org/mem v0.0.0-20210711025021-927187094b94
go4.org/netipx v0.0.0-20220725152314-7e7bdc8411bf go4.org/netipx v0.0.0-20220725152314-7e7bdc8411bf
golang.org/x/crypto v0.6.0 golang.org/x/crypto v0.6.0
golang.org/x/exp v0.0.0-20221205204356-47842c84f3db golang.org/x/exp v0.0.0-20221205204356-47842c84f3db
golang.org/x/mod v0.7.0 golang.org/x/mod v0.9.0
golang.org/x/net v0.7.0 golang.org/x/net v0.8.0
golang.org/x/oauth2 v0.5.0 golang.org/x/oauth2 v0.5.0
golang.org/x/sync v0.1.0 golang.org/x/sync v0.1.0
golang.org/x/sys v0.5.1-0.20230222185716-a3b23cc77e89 golang.org/x/sys v0.6.0
golang.org/x/term v0.5.0 golang.org/x/term v0.6.0
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 golang.org/x/time v0.0.0-20220609170525-579cf78fd858
golang.org/x/tools v0.5.0 golang.org/x/tools v0.7.0
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2
golang.zx2c4.com/wireguard/windows v0.5.3 golang.zx2c4.com/wireguard/windows v0.5.3
gvisor.dev/gvisor v0.0.0-20230328175328-162ed5ef888d gvisor.dev/gvisor v0.0.0-20230328175328-162ed5ef888d
honnef.co/go/tools v0.4.2 honnef.co/go/tools v0.4.3
inet.af/peercred v0.0.0-20210906144145-0893ea02156a inet.af/peercred v0.0.0-20210906144145-0893ea02156a
inet.af/tcpproxy v0.0.0-20221017015627-91f861402626 inet.af/tcpproxy v0.0.0-20221017015627-91f861402626
inet.af/wf v0.0.0-20220728202103-50d96caab2f6 inet.af/wf v0.0.0-20220728202103-50d96caab2f6
@ -99,24 +100,28 @@ require (
) )
require ( require (
4d63.com/gochecknoglobals v0.1.0 // indirect 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
4d63.com/gochecknoglobals v0.2.1 // indirect
filippo.io/edwards25519 v1.0.0-rc.1 // indirect filippo.io/edwards25519 v1.0.0-rc.1 // indirect
github.com/Antonboom/errname v0.1.5 // indirect github.com/Abirdcfly/dupword v0.0.11 // indirect
github.com/Antonboom/nilnil v0.1.0 // indirect github.com/Antonboom/errname v0.1.9 // indirect
github.com/Antonboom/nilnil v0.1.3 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Djarvur/go-err113 v0.1.0 // indirect github.com/Djarvur/go-err113 v0.1.0 // indirect
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect
github.com/OpenPeeDeeP/depguard v1.0.1 // indirect github.com/OpenPeeDeeP/depguard v1.1.1 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4 // indirect github.com/ProtonMail/go-crypto v0.0.0-20221026131551-cf6655e29de4 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/acomagu/bufpipe v1.0.3 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect
github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect
github.com/ashanbrown/forbidigo v1.2.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect
github.com/ashanbrown/makezero v0.0.0-20210520155254-b6261585ddde // indirect github.com/ashanbrown/forbidigo v1.5.1 // indirect
github.com/ashanbrown/makezero v1.1.1 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.6.4 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.6.4 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.2 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.8.2 // indirect
@ -132,35 +137,38 @@ require (
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/bkielbasa/cyclop v1.2.0 // indirect github.com/bkielbasa/cyclop v1.2.0 // indirect
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect
github.com/blizzy78/varnamelen v0.5.0 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect
github.com/bombsimon/wsl/v3 v3.3.0 // indirect github.com/bombsimon/wsl/v3 v3.4.0 // indirect
github.com/breml/bidichk v0.2.1 // indirect github.com/breml/bidichk v0.2.4 // indirect
github.com/breml/errchkjson v0.3.1 // indirect
github.com/butuzov/ireturn v0.1.1 // indirect github.com/butuzov/ireturn v0.1.1 // indirect
github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e // indirect github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/charithe/durationcheck v0.0.9 // indirect github.com/charithe/durationcheck v0.0.10 // indirect
github.com/chavacava/garif v0.0.0-20210405164556-e8a0a408d6af // indirect github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 // indirect
github.com/cloudflare/circl v1.1.0 // indirect github.com/cloudflare/circl v1.1.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.11.4 // indirect github.com/containerd/stargz-snapshotter/estargz v0.11.4 // indirect
github.com/daixiang0/gci v0.2.9 // indirect github.com/curioswitch/go-reassign v0.2.0 // indirect
github.com/daixiang0/gci v0.10.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect
github.com/denis-tingajkin/go-header v0.4.2 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect
github.com/docker/cli v20.10.16+incompatible // indirect github.com/docker/cli v20.10.16+incompatible // indirect
github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/distribution v2.8.1+incompatible // indirect
github.com/docker/docker v20.10.16+incompatible // indirect github.com/docker/docker v20.10.16+incompatible // indirect
github.com/docker/docker-credential-helpers v0.6.4 // indirect github.com/docker/docker-credential-helpers v0.6.4 // indirect
github.com/emicklei/go-restful/v3 v3.8.0 // indirect github.com/emicklei/go-restful/v3 v3.8.0 // indirect
github.com/emirpasic/gods v1.12.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect
github.com/esimonov/ifshort v1.0.3 // indirect github.com/esimonov/ifshort v1.0.4 // indirect
github.com/ettle/strcase v0.1.1 // indirect github.com/ettle/strcase v0.1.1 // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect
github.com/fatih/color v1.13.0 // indirect github.com/fatih/color v1.15.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect github.com/fatih/structtag v1.2.0 // indirect
github.com/firefart/nonamedreturns v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/fzipp/gocyclo v0.3.1 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect
github.com/gliderlabs/ssh v0.3.3 // indirect github.com/gliderlabs/ssh v0.3.3 // indirect
github.com/go-critic/go-critic v0.6.1 // indirect github.com/go-critic/go-critic v0.7.0 // indirect
github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect
github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect
github.com/go-git/go-git/v5 v5.4.2 // indirect github.com/go-git/go-git/v5 v5.4.2 // indirect
@ -168,34 +176,33 @@ require (
github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.5 // indirect github.com/go-openapi/jsonreference v0.19.5 // indirect
github.com/go-openapi/swag v0.19.14 // indirect github.com/go-openapi/swag v0.19.14 // indirect
github.com/go-toolsmith/astcast v1.0.0 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect
github.com/go-toolsmith/astcopy v1.0.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect
github.com/go-toolsmith/astequal v1.0.1 // indirect github.com/go-toolsmith/astequal v1.1.0 // indirect
github.com/go-toolsmith/astfmt v1.0.0 // indirect github.com/go-toolsmith/astfmt v1.1.0 // indirect
github.com/go-toolsmith/astp v1.0.0 // indirect github.com/go-toolsmith/astp v1.1.0 // indirect
github.com/go-toolsmith/strparse v1.0.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect
github.com/go-toolsmith/typep v1.0.2 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect
github.com/go-xmlfmt/xmlfmt v0.0.0-20211206191508-7fd73a941850 // indirect github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect
github.com/gobwas/glob v0.2.3 // indirect github.com/gobwas/glob v0.2.3 // indirect
github.com/gofrs/flock v0.8.1 // indirect github.com/gofrs/flock v0.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect github.com/golang/protobuf v1.5.2 // indirect
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 // indirect github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect
github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a // indirect github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect
github.com/golangci/golangci-lint v1.43.0 // indirect
github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect
github.com/golangci/misspell v0.3.5 // indirect github.com/golangci/misspell v0.4.0 // indirect
github.com/golangci/revgrep v0.0.0-20210930125155-c22e5001d4f2 // indirect github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect
github.com/google/btree v1.0.1 // indirect github.com/google/btree v1.0.1 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/gofuzz v1.1.0 // indirect github.com/google/gofuzz v1.1.0 // indirect
github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2 // indirect github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2 // indirect
github.com/google/rpmpack v0.0.0-20201206194719-59e495f2b7e1 // indirect github.com/google/rpmpack v0.0.0-20201206194719-59e495f2b7e1 // indirect
github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect
github.com/goreleaser/chglog v0.1.2 // indirect github.com/goreleaser/chglog v0.1.2 // indirect
github.com/goreleaser/fileglob v0.3.1 // indirect github.com/goreleaser/fileglob v0.3.1 // indirect
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
@ -204,10 +211,12 @@ require (
github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/huandu/xstrings v1.3.2 // indirect github.com/huandu/xstrings v1.3.2 // indirect
github.com/imdario/mergo v0.3.12 // indirect github.com/imdario/mergo v0.3.12 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jgautheron/goconst v1.5.1 // indirect github.com/jgautheron/goconst v1.5.1 // indirect
github.com/jingyugao/rowserrcheck v1.1.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect
@ -215,103 +224,117 @@ require (
github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect github.com/json-iterator/go v1.1.12 // indirect
github.com/julz/importas v0.0.0-20210922140945-27e0a5d4dee2 // indirect github.com/julz/importas v0.1.0 // indirect
github.com/junk1tm/musttag v0.5.0 // indirect
github.com/kevinburke/ssh_config v1.1.0 // indirect github.com/kevinburke/ssh_config v1.1.0 // indirect
github.com/kisielk/errcheck v1.6.0 // indirect github.com/kisielk/errcheck v1.6.3 // indirect
github.com/kisielk/gotool v1.0.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect
github.com/kkHAIKE/contextcheck v1.1.4 // indirect
github.com/kr/fs v0.1.0 // indirect github.com/kr/fs v0.1.0 // indirect
github.com/kr/pretty v0.3.1 // indirect github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect github.com/kr/text v0.2.0 // indirect
github.com/kulti/thelper v0.4.0 // indirect github.com/kulti/thelper v0.6.3 // indirect
github.com/kunwardeep/paralleltest v1.0.3 // indirect github.com/kunwardeep/paralleltest v1.0.6 // indirect
github.com/kyoh86/exportloopref v0.1.8 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect
github.com/ldez/gomoddirectives v0.2.2 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect
github.com/ldez/tagliatelle v0.2.0 // indirect github.com/ldez/tagliatelle v0.4.0 // indirect
github.com/magiconair/properties v1.8.5 // indirect github.com/leonklingele/grouper v1.1.1 // indirect
github.com/lufeee/execinquery v1.2.1 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/mailru/easyjson v0.7.6 // indirect github.com/mailru/easyjson v0.7.6 // indirect
github.com/maratori/testpackage v1.0.1 // indirect github.com/maratori/testableexamples v1.0.0 // indirect
github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/maratori/testpackage v1.1.1 // indirect
github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mbilski/exhaustivestruct v1.2.0 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect
github.com/mdlayher/socket v0.4.0 // indirect github.com/mdlayher/socket v0.4.0 // indirect
github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517 // indirect github.com/mgechev/revive v1.3.1 // indirect
github.com/mgechev/revive v1.1.2 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.4.3 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/moricho/tparallel v0.2.1 // indirect github.com/moricho/tparallel v0.3.1 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nakabonne/nestif v0.3.1 // indirect github.com/nakabonne/nestif v0.3.1 // indirect
github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/nishanths/exhaustive v0.7.11 // indirect github.com/nishanths/exhaustive v0.9.5 // indirect
github.com/nishanths/predeclared v0.2.1 // indirect github.com/nishanths/predeclared v0.2.2 // indirect
github.com/nunnatsa/ginkgolinter v0.9.0 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/onsi/gomega v1.20.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.3-0.20220114050600-8b9d41f48198 // indirect github.com/opencontainers/image-spec v1.0.3-0.20220114050600-8b9d41f48198 // indirect
github.com/pelletier/go-toml v1.9.4 // indirect github.com/pelletier/go-toml v1.9.5 // indirect
github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/polyfloyd/go-errorlint v0.0.0-20211125173453-6d6d39c5bb8b // indirect github.com/polyfloyd/go-errorlint v1.4.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect
github.com/quasilyte/go-ruleguard v0.3.13 // indirect github.com/quasilyte/go-ruleguard v0.3.19 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
github.com/rivo/uniseg v0.2.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect
github.com/ryancurrah/gomodguard v1.2.3 // indirect github.com/ryancurrah/gomodguard v1.3.0 // indirect
github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect
github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect
github.com/sassoftware/go-rpmutils v0.1.0 // indirect github.com/sassoftware/go-rpmutils v0.1.0 // indirect
github.com/securego/gosec/v2 v2.9.3 // indirect github.com/securego/gosec/v2 v2.15.0 // indirect
github.com/sergi/go-diff v1.2.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
github.com/sirupsen/logrus v1.8.1 // indirect github.com/sirupsen/logrus v1.9.0 // indirect
github.com/sivchari/tenv v1.4.7 // indirect github.com/sivchari/containedctx v1.0.2 // indirect
github.com/sonatard/noctx v0.0.1 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect
github.com/sourcegraph/go-diff v0.6.1 // indirect github.com/sivchari/tenv v1.7.1 // indirect
github.com/spf13/afero v1.6.0 // indirect github.com/sonatard/noctx v0.0.2 // indirect
github.com/spf13/cast v1.4.1 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect
github.com/spf13/cobra v1.4.0 // indirect github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/cobra v1.6.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.9.0 // indirect github.com/spf13/viper v1.12.0 // indirect
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
github.com/stretchr/objx v0.4.0 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
github.com/stretchr/testify v1.8.0 // indirect github.com/stretchr/objx v0.5.0 // indirect
github.com/subosito/gotenv v1.2.0 // indirect github.com/stretchr/testify v1.8.2 // indirect
github.com/sylvia7788/contextcheck v1.0.4 // indirect github.com/subosito/gotenv v1.4.1 // indirect
github.com/tdakkota/asciicheck v0.1.1 // indirect github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect
github.com/tdakkota/asciicheck v0.2.0 // indirect
github.com/tetafro/godot v1.4.11 // indirect github.com/tetafro/godot v1.4.11 // indirect
github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect
github.com/tomarrell/wrapcheck/v2 v2.4.0 // indirect github.com/timonwong/loggercheck v0.9.4 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.4.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
github.com/u-root/uio v0.0.0-20221213070652-c3537552635f // indirect github.com/u-root/uio v0.0.0-20221213070652-c3537552635f // indirect
github.com/ulikunitz/xz v0.5.10 // indirect github.com/ulikunitz/xz v0.5.10 // indirect
github.com/ultraware/funlen v0.0.3 // indirect github.com/ultraware/funlen v0.0.3 // indirect
github.com/ultraware/whitespace v0.0.4 // indirect github.com/ultraware/whitespace v0.0.5 // indirect
github.com/uudashr/gocognit v1.0.5 // indirect github.com/uudashr/gocognit v1.0.6 // indirect
github.com/vbatts/tar-split v0.11.2 // indirect github.com/vbatts/tar-split v0.11.2 // indirect
github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 // indirect github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 // indirect
github.com/x448/float16 v0.8.4 // indirect github.com/x448/float16 v0.8.4 // indirect
github.com/xanzy/ssh-agent v0.3.1 // indirect github.com/xanzy/ssh-agent v0.3.1 // indirect
github.com/yeya24/promlinter v0.1.0 // indirect github.com/yagipy/maintidx v1.0.0 // indirect
github.com/yeya24/promlinter v0.2.0 // indirect
gitlab.com/bosi/decorder v0.2.3 // indirect
go.uber.org/atomic v1.7.0 // indirect go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect go.uber.org/multierr v1.6.0 // indirect
golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a // indirect golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect
golang.org/x/image v0.5.0 // indirect golang.org/x/image v0.5.0 // indirect
golang.org/x/text v0.7.0 // indirect golang.org/x/text v0.8.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.30.0 // indirect google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.66.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
@ -321,10 +344,10 @@ require (
k8s.io/klog/v2 v2.70.1 // indirect k8s.io/klog/v2 v2.70.1 // indirect
k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect
mvdan.cc/gofumpt v0.2.0 // indirect mvdan.cc/gofumpt v0.4.0 // indirect
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect
mvdan.cc/unparam v0.0.0-20211002134041-24922b6997ca // indirect mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
) )

418
go.sum

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@
package tooldeps package tooldeps
import ( import (
_ "github.com/golangci/golangci-lint/cmd/golangci-lint"
_ "github.com/tailscale/depaware/depaware" _ "github.com/tailscale/depaware/depaware"
_ "golang.org/x/tools/cmd/goimports" _ "golang.org/x/tools/cmd/goimports"
) )

View File

@ -158,7 +158,7 @@ func (em *expiryManager) nextPeerExpiry(nm *netmap.NetworkMap, localNow time.Tim
// nextExpiry being zero is a sentinel that we haven't yet set // nextExpiry being zero is a sentinel that we haven't yet set
// an expiry; otherwise, only update if this node's expiry is // an expiry; otherwise, only update if this node's expiry is
// sooner than the currently-stored one (since we want the // sooner than the currently-stored one (since we want the
// soonest-occuring expiry time). // soonest-occurring expiry time).
if nextExpiry.IsZero() || peer.KeyExpiry.Before(nextExpiry) { if nextExpiry.IsZero() || peer.KeyExpiry.Before(nextExpiry) {
nextExpiry = peer.KeyExpiry nextExpiry = peer.KeyExpiry
} }

View File

@ -875,7 +875,7 @@ func TestTKAForceDisable(t *testing.T) {
} }
if b.tka != nil { if b.tka != nil {
t.Fatal("tka was re-initalized") t.Fatal("tka was re-initialized")
} }
} }

View File

@ -108,7 +108,7 @@ func TestDNSOverTCP(t *testing.T) {
"bradfitz.ts.com.": "2.3.4.5", "bradfitz.ts.com.": "2.3.4.5",
} }
for domain, _ := range wantResults { for domain := range wantResults {
b := mkDNSRequest(domain, dns.TypeA, addEDNS) b := mkDNSRequest(domain, dns.TypeA, addEDNS)
binary.Write(c, binary.BigEndian, uint16(len(b))) binary.Write(c, binary.BigEndian, uint16(len(b)))
c.Write(b) c.Write(b)

View File

@ -502,7 +502,7 @@ func genRandomSubdomains(t *testing.T, n int) []dnsname.FQDN {
for len(domains) < cap(domains) { for len(domains) < cap(domains) {
l := r.Intn(19) + 1 l := r.Intn(19) + 1
b := make([]byte, l) b := make([]byte, l)
for i, _ := range b { for i := range b {
b[i] = charset[r.Intn(len(charset))] b[i] = charset[r.Intn(len(charset))]
} }
d := string(b) + ".example.com" d := string(b) + ".example.com"

View File

@ -224,7 +224,7 @@ func TestStateString(t *testing.T) {
}, },
}, },
InterfaceIPs: map[string][]netip.Prefix{ InterfaceIPs: map[string][]netip.Prefix{
"eth0": []netip.Prefix{ "eth0": {
netip.MustParsePrefix("10.0.0.2/8"), netip.MustParsePrefix("10.0.0.2/8"),
}, },
}, },

View File

@ -961,7 +961,7 @@ var (
metricPMPSent = clientmetric.NewCounter("portmap_pmp_sent") metricPMPSent = clientmetric.NewCounter("portmap_pmp_sent")
// metricPMPOK counts the number of times // metricPMPOK counts the number of times
// we received a succesful PMP response. // we received a successful PMP response.
metricPMPOK = clientmetric.NewCounter("portmap_pmp_ok") metricPMPOK = clientmetric.NewCounter("portmap_pmp_ok")
// metricPMPUnhandledOpcode counts the number of times // metricPMPUnhandledOpcode counts the number of times

View File

@ -346,7 +346,7 @@ func (d *Dialer) dialPeerAPI(ctx context.Context, network, addr string) (net.Con
// //
// The primary function of this is to work on macOS & iOS's in the // The primary function of this is to work on macOS & iOS's in the
// Network/System Extension so it can mark the dialer as staying // Network/System Extension so it can mark the dialer as staying
// withing the network namespace/sandbox. // within the network namespace/sandbox.
func (d *Dialer) getPeerDialer() *net.Dialer { func (d *Dialer) getPeerDialer() *net.Dialer {
d.peerDialerOnce.Do(func() { d.peerDialerOnce.Do(func() {
d.peerDialer = &net.Dialer{ d.peerDialer = &net.Dialer{

View File

@ -56,7 +56,7 @@ func TestParsePorts(t *testing.T) {
2: 5501A8C0:ADD4 B25E9536:01BB 01 00000000:00000000 02:00000B2B 00000000 1000 0 155276677 2 0000000000000000 22 4 30 10 -1 2: 5501A8C0:ADD4 B25E9536:01BB 01 00000000:00000000 02:00000B2B 00000000 1000 0 155276677 2 0000000000000000 22 4 30 10 -1
`, `,
want: map[string]*portMeta{ want: map[string]*portMeta{
"socket:[34062]": &portMeta{ "socket:[34062]": {
port: Port{Proto: "tcp", Port: 22}, port: Port{Proto: "tcp", Port: 22},
}, },
}, },
@ -71,10 +71,10 @@ func TestParsePorts(t *testing.T) {
3: 69050120005716BC64906EBE009ECD4D:D506 0047062600000000000000006E171268:01BB 01 00000000:00000000 02:0000009E 00000000 1000 0 151042856 2 0000000000000000 21 4 28 10 -1 3: 69050120005716BC64906EBE009ECD4D:D506 0047062600000000000000006E171268:01BB 01 00000000:00000000 02:0000009E 00000000 1000 0 151042856 2 0000000000000000 21 4 28 10 -1
`, `,
want: map[string]*portMeta{ want: map[string]*portMeta{
"socket:[142240557]": &portMeta{ "socket:[142240557]": {
port: Port{Proto: "tcp", Port: 8081}, port: Port{Proto: "tcp", Port: 8081},
}, },
"socket:[34064]": &portMeta{ "socket:[34064]": {
port: Port{Proto: "tcp", Port: 22}, port: Port{Proto: "tcp", Port: 22},
}, },
}, },

View File

@ -35,7 +35,7 @@ type derpProber struct {
meshInterval time.Duration meshInterval time.Duration
tlsInterval time.Duration tlsInterval time.Duration
// Probe functions that can be overriden for testing. // Probe functions that can be overridden for testing.
tlsProbeFn func(string) ProbeFunc tlsProbeFn func(string) ProbeFunc
udpProbeFn func(string, int) ProbeFunc udpProbeFn func(string, int) ProbeFunc
meshProbeFn func(string, string) ProbeFunc meshProbeFn func(string, string) ProbeFunc

View File

@ -548,7 +548,7 @@ var opcodeShortName = map[uint8]string{
gossh.TTY_OP_OSPEED: "tty_op_ospeed", gossh.TTY_OP_OSPEED: "tty_op_ospeed",
} }
// startWithPTY starts cmd with a psuedo-terminal attached to Stdin, Stdout and Stderr. // startWithPTY starts cmd with a pseudo-terminal attached to Stdin, Stdout and Stderr.
func (ss *sshSession) startWithPTY() (ptyFile *os.File, err error) { func (ss *sshSession) startWithPTY() (ptyFile *os.File, err error) {
ptyReq := ss.ptyReq ptyReq := ss.ptyReq
cmd := ss.cmd cmd := ss.cmd

View File

@ -838,7 +838,7 @@ type sshSession struct {
exitOnce sync.Once exitOnce sync.Once
} }
func (ss *sshSession) vlogf(format string, args ...interface{}) { func (ss *sshSession) vlogf(format string, args ...any) {
if sshVerboseLogging() { if sshVerboseLogging() {
ss.logf(format, args...) ss.logf(format, args...)
} }
@ -1575,7 +1575,7 @@ type loggingWriter struct {
} }
func (w loggingWriter) Write(p []byte) (n int, err error) { func (w loggingWriter) Write(p []byte) (n int, err error) {
j, err := json.Marshal([]interface{}{ j, err := json.Marshal([]any{
time.Since(w.r.start).Seconds(), time.Since(w.r.start).Seconds(),
w.dir, w.dir,
string(p), string(p),

View File

@ -134,7 +134,7 @@ func newTestchain(t *testing.T, input string, options ...testchainOpt) *testChai
out.recordPos(s.TokenText(), s.Pos()) out.recordPos(s.TokenText(), s.Pos())
// If the last token was '->', that means // If the last token was '->', that means
// that the next identifier has a child relationship // that the next identifier has a child relationship
// with the identifier preceeding '->'. // with the identifier preceding '->'.
if lastWasChain { if lastWasChain {
out.recordParent(t, s.TokenText(), lastIdent) out.recordParent(t, s.TokenText(), lastIdent)
} }
@ -347,16 +347,16 @@ func TestNewTestchain(t *testing.T) {
`, optTemplate("test", AUM{MessageKind: AUMNoOp, KeyID: []byte{10}})) `, optTemplate("test", AUM{MessageKind: AUMNoOp, KeyID: []byte{10}}))
want := map[string]*testchainNode{ want := map[string]*testchainNode{
"genesis": &testchainNode{Name: "genesis", Uses: []scanner.Position{{Line: 2, Column: 16}}}, "genesis": {Name: "genesis", Uses: []scanner.Position{{Line: 2, Column: 16}}},
"B": &testchainNode{ "B": {
Name: "B", Name: "B",
Parent: "genesis", Parent: "genesis",
Uses: []scanner.Position{{Line: 2, Column: 21}, {Line: 3, Column: 21}, {Line: 4, Column: 21}}, Uses: []scanner.Position{{Line: 2, Column: 21}, {Line: 3, Column: 21}, {Line: 4, Column: 21}},
}, },
"C": &testchainNode{Name: "C", Parent: "B", Uses: []scanner.Position{{Line: 2, Column: 26}}}, "C": {Name: "C", Parent: "B", Uses: []scanner.Position{{Line: 2, Column: 26}}},
"D": &testchainNode{Name: "D", Parent: "B", Uses: []scanner.Position{{Line: 3, Column: 26}}}, "D": {Name: "D", Parent: "B", Uses: []scanner.Position{{Line: 3, Column: 26}}},
"E": &testchainNode{Name: "E", Parent: "B", HashSeed: 12, Uses: []scanner.Position{{Line: 4, Column: 26}, {Line: 6, Column: 10}}}, "E": {Name: "E", Parent: "B", HashSeed: 12, Uses: []scanner.Position{{Line: 4, Column: 26}, {Line: 6, Column: 10}}},
"F": &testchainNode{Name: "F", Parent: "E", Template: "test", Uses: []scanner.Position{{Line: 4, Column: 31}, {Line: 7, Column: 10}}}, "F": {Name: "F", Parent: "E", Template: "test", Uses: []scanner.Position{{Line: 4, Column: 31}, {Line: 7, Column: 10}}},
} }
if diff := cmp.Diff(want, c.Nodes, cmpopts.IgnoreFields(scanner.Position{}, "Offset")); diff != "" { if diff := cmp.Diff(want, c.Nodes, cmpopts.IgnoreFields(scanner.Position{}, "Offset")); diff != "" {

View File

@ -153,7 +153,7 @@ func TestApplyUpdatesChain(t *testing.T) {
Keys: []Key{{Kind: Key25519, Public: []byte{1, 2, 3, 4}}}, Keys: []Key{{Kind: Key25519, Public: []byte{1, 2, 3, 4}}},
}, PrevAUMHash: fromHex("f09bda3bb7cf6756ea9adc25770aede4b3ca8142949d6ef5ca0add29af912fd4")}, }, PrevAUMHash: fromHex("f09bda3bb7cf6756ea9adc25770aede4b3ca8142949d6ef5ca0add29af912fd4")},
}, },
State{DisablementSecrets: [][]byte{[]byte{1, 2, 3, 4}}}, State{DisablementSecrets: [][]byte{{1, 2, 3, 4}}},
State{ State{
Keys: []Key{{Kind: Key25519, Public: []byte{1, 2, 3, 4}}}, Keys: []Key{{Kind: Key25519, Public: []byte{1, 2, 3, 4}}},
LastAUMHash: hashFromHex("57343671da5eea3cfb502954e976e8028bffd3540b50a043b2a65a8d8d8217d0"), LastAUMHash: hashFromHex("57343671da5eea3cfb502954e976e8028bffd3540b50a043b2a65a8d8d8217d0"),

View File

@ -649,7 +649,7 @@ func markActiveChain(storage Chonk, verdict map[AUMHash]retainState, minChain in
// candidate AUMs must exist in verdict. // candidate AUMs must exist in verdict.
func markYoungAUMs(storage CompactableChonk, verdict map[AUMHash]retainState, minAge time.Duration) error { func markYoungAUMs(storage CompactableChonk, verdict map[AUMHash]retainState, minAge time.Duration) error {
minTime := time.Now().Add(-minAge) minTime := time.Now().Add(-minAge)
for h, _ := range verdict { for h := range verdict {
commitTime, err := storage.CommitTime(h) commitTime, err := storage.CommitTime(h)
if err != nil { if err != nil {
return err return err
@ -788,7 +788,7 @@ func markDescendantAUMs(storage Chonk, verdict map[AUMHash]retainState) error {
nextIterScan := make([]AUMHash, 0, len(verdict)) nextIterScan := make([]AUMHash, 0, len(verdict))
for _, h := range toScan { for _, h := range toScan {
if verdict[h]&retainStateLeaf != 0 { if verdict[h]&retainStateLeaf != 0 {
// This AUM and its decendants have already been marked. // This AUM and its descendants have already been marked.
continue continue
} }
verdict[h] |= retainStateLeaf verdict[h] |= retainStateLeaf
@ -832,7 +832,7 @@ func Compact(storage CompactableChonk, head AUMHash, opts CompactionOptions) (la
return AUMHash{}, fmt.Errorf("marking young AUMs: %w", err) return AUMHash{}, fmt.Errorf("marking young AUMs: %w", err)
} }
if err := markDescendantAUMs(storage, verdict); err != nil { if err := markDescendantAUMs(storage, verdict); err != nil {
return AUMHash{}, fmt.Errorf("marking decendant AUMs: %w", err) return AUMHash{}, fmt.Errorf("marking descendant AUMs: %w", err)
} }
if lastActiveAncestor, err = markAncestorIntersectionAUMs(storage, verdict, lastActiveAncestor); err != nil { if lastActiveAncestor, err = markAncestorIntersectionAUMs(storage, verdict, lastActiveAncestor); err != nil {
return AUMHash{}, fmt.Errorf("marking ancestor intersection: %w", err) return AUMHash{}, fmt.Errorf("marking ancestor intersection: %w", err)

View File

@ -600,7 +600,7 @@ type compactingChonkFake struct {
func (c *compactingChonkFake) AllAUMs() ([]AUMHash, error) { func (c *compactingChonkFake) AllAUMs() ([]AUMHash, error) {
out := make([]AUMHash, 0, len(c.Mem.aums)) out := make([]AUMHash, 0, len(c.Mem.aums))
for h, _ := range c.Mem.aums { for h := range c.Mem.aums {
out = append(out, h) out = append(out, h)
} }
return out, nil return out, nil

View File

@ -359,7 +359,7 @@ func computeActiveAncestor(storage Chonk, chains []chain) (AUMHash, error) {
if len(ancestors) == 1 { if len(ancestors) == 1 {
// There's only one. DOPE. // There's only one. DOPE.
for k, _ := range ancestors { for k := range ancestors {
return k, nil return k, nil
} }
} }
@ -390,7 +390,7 @@ func computeActiveAncestor(storage Chonk, chains []chain) (AUMHash, error) {
// formerly (in a previous run) part of the chain. // formerly (in a previous run) part of the chain.
// 3. Compute the state of the state machine at this ancestor. This is // 3. Compute the state of the state machine at this ancestor. This is
// needed for fast-forward, as each update operates on the state of // needed for fast-forward, as each update operates on the state of
// the update preceeding it. // the update preceding it.
// 4. Iteratively apply updates till we reach head ('fast forward'). // 4. Iteratively apply updates till we reach head ('fast forward').
func computeActiveChain(storage Chonk, lastKnownOldest *AUMHash, maxIter int) (chain, error) { func computeActiveChain(storage Chonk, lastKnownOldest *AUMHash, maxIter int) (chain, error) {
chains, err := computeChainCandidates(storage, lastKnownOldest, maxIter) chains, err := computeChainCandidates(storage, lastKnownOldest, maxIter)

View File

@ -195,7 +195,7 @@ func TestComputeStateAt(t *testing.T) {
// provided int can be used to tweak the resulting hash (needed // provided int can be used to tweak the resulting hash (needed
// for tests you want one AUM to be 'lower' than another, so that // for tests you want one AUM to be 'lower' than another, so that
// that chain is taken based on fork resolution rules). // that chain is taken based on fork resolution rules).
func fakeAUM(t *testing.T, template interface{}, parent *AUMHash) (AUM, AUMHash) { func fakeAUM(t *testing.T, template any, parent *AUMHash) (AUM, AUMHash) {
if seed, ok := template.(int); ok { if seed, ok := template.(int); ok {
a := AUM{MessageKind: AUMNoOp, KeyID: []byte{byte(seed)}} a := AUM{MessageKind: AUMNoOp, KeyID: []byte{byte(seed)}}
if parent != nil { if parent != nil {

View File

@ -104,7 +104,7 @@ func main() {
//go:embed gocross-wrapper.sh //go:embed gocross-wrapper.sh
var wrapperScript []byte var wrapperScript []byte
func debug(format string, args ...interface{}) { func debug(format string, args ...any) {
debug := os.Getenv("GOCROSS_DEBUG") debug := os.Getenv("GOCROSS_DEBUG")
var ( var (
out *os.File out *os.File

View File

@ -639,7 +639,7 @@ func (p closeOnErrorPool) closeAllIfError(errp *error) {
} }
} }
func (s *Server) logf(format string, a ...interface{}) { func (s *Server) logf(format string, a ...any) {
if s.logtail != nil { if s.logtail != nil {
s.logtail.Logf(format, a...) s.logtail.Logf(format, a...)
} }

View File

@ -26,7 +26,7 @@ func Set[K comparable, V any, T ~map[K]V](m *T, k K, v V) {
// the field to be defined after they decode the JSON.) // the field to be defined after they decode the JSON.)
// //
// Deprecated: use NonNilSliceForJSON or NonNilMapForJSON instead. // Deprecated: use NonNilSliceForJSON or NonNilMapForJSON instead.
func NonNil(ptr interface{}) { func NonNil(ptr any) {
if ptr == nil { if ptr == nil {
panic("nil interface") panic("nil interface")
} }

View File

@ -147,4 +147,3 @@ func SelectControlURL(reg, disk string) string {
} }
return def return def
} }

View File

@ -154,7 +154,7 @@ func (s *Sink) Close() error {
return nil return nil
} }
// WaitCh returns a channel which blocks untill // WaitCh returns a channel which blocks until
// the sink is closed. // the sink is closed.
func (s *Sink) WaitCh() <-chan struct{} { func (s *Sink) WaitCh() <-chan struct{} {
return s.ctx.Done() return s.ctx.Done()

View File

@ -139,9 +139,9 @@ type userspaceEngine struct {
// pongCallback is the map of response handlers waiting for disco or TSMP // pongCallback is the map of response handlers waiting for disco or TSMP
// pong callbacks. The map key is a random slice of bytes. // pong callbacks. The map key is a random slice of bytes.
pongCallback map[[8]byte]func(packet.TSMPPongReply) pongCallback map[[8]byte]func(packet.TSMPPongReply)
// icmpEchoResponseCallback is the map of reponse handlers waiting for ICMP // icmpEchoResponseCallback is the map of response handlers waiting for ICMP
// echo responses. The map key is a random uint32 that is the little endian // echo responses. The map key is a random uint32 that is the little endian
// value of the ICMP identifer and sequence number concatenated. // value of the ICMP identifier and sequence number concatenated.
icmpEchoResponseCallback map[uint32]func() icmpEchoResponseCallback map[uint32]func()
// networkLogger logs statistics about network connections. // networkLogger logs statistics about network connections.