From eb600819854039c8d89fb1d7000f301ad3c7d542 Mon Sep 17 00:00:00 2001 From: Daenney Date: Fri, 18 Jul 2025 11:56:40 +0200 Subject: [PATCH] [chore/deps] Upgrade to go-sqlite 0.27.1 (#4334) # Description This brings some performance improvements and SQLite 3.50.3. ## Checklist Please put an x inside each checkbox to indicate that you've read and followed it: `[ ]` -> `[x]` If this is a documentation change, only the first checkbox must be filled (you can delete the others if you want). - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [ ] I/we have performed a self-review of added code. - [ ] I/we have written code that is legible and maintainable by others. - [ ] I/we have commented the added code, particularly in hard-to-understand areas. - [ ] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [x] I/we have run tests and they pass locally with the changes. - [ ] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4334 Co-authored-by: Daenney Co-committed-by: Daenney --- go.mod | 12 +- go.sum | 28 ++--- vendor/github.com/ncruces/go-sqlite3/const.go | 12 +- .../github.com/ncruces/go-sqlite3/context.go | 8 ++ .../ncruces/go-sqlite3/driver/driver.go | 6 +- .../ncruces/go-sqlite3/embed/README.md | 2 +- .../ncruces/go-sqlite3/embed/exports.txt | 2 + .../ncruces/go-sqlite3/embed/sqlite3.wasm | Bin 1398675 -> 1398735 bytes .../go-sqlite3/internal/util/pointer.go | 10 +- .../github.com/ncruces/go-sqlite3/pointer.go | 4 +- vendor/github.com/ncruces/go-sqlite3/stmt.go | 1 - .../util/sql3util/wasm/sql3parse_table.wasm | Bin 15969 -> 15960 bytes vendor/github.com/ncruces/go-sqlite3/value.go | 42 +++---- .../ncruces/go-sqlite3/vfs/memdb/memdb.go | 31 +++-- vendor/golang.org/x/crypto/acme/acme.go | 35 ++++-- vendor/golang.org/x/crypto/acme/types.go | 2 +- vendor/golang.org/x/crypto/blake2b/blake2x.go | 8 ++ vendor/golang.org/x/crypto/blake2b/go125.go | 11 ++ vendor/golang.org/x/crypto/ssh/certs.go | 26 ++-- vendor/golang.org/x/crypto/ssh/client_auth.go | 2 +- vendor/golang.org/x/crypto/ssh/common.go | 45 +++++-- vendor/golang.org/x/crypto/ssh/doc.go | 1 + vendor/golang.org/x/crypto/ssh/keys.go | 2 +- vendor/golang.org/x/sync/errgroup/errgroup.go | 118 +++++------------- vendor/golang.org/x/sys/unix/zerrors_linux.go | 25 +++- .../x/sys/unix/zerrors_linux_386.go | 1 + .../x/sys/unix/zerrors_linux_amd64.go | 1 + .../x/sys/unix/zerrors_linux_arm.go | 1 + .../x/sys/unix/zerrors_linux_arm64.go | 1 + .../x/sys/unix/zerrors_linux_loong64.go | 1 + .../x/sys/unix/zerrors_linux_mips.go | 1 + .../x/sys/unix/zerrors_linux_mips64.go | 1 + .../x/sys/unix/zerrors_linux_mips64le.go | 1 + .../x/sys/unix/zerrors_linux_mipsle.go | 1 + .../x/sys/unix/zerrors_linux_ppc.go | 1 + .../x/sys/unix/zerrors_linux_ppc64.go | 1 + .../x/sys/unix/zerrors_linux_ppc64le.go | 1 + .../x/sys/unix/zerrors_linux_riscv64.go | 1 + .../x/sys/unix/zerrors_linux_s390x.go | 1 + .../x/sys/unix/zerrors_linux_sparc64.go | 1 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 108 ++++++++++++++-- .../golang.org/x/sys/unix/ztypes_linux_386.go | 16 +++ .../x/sys/unix/ztypes_linux_amd64.go | 16 +++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 16 +++ .../x/sys/unix/ztypes_linux_arm64.go | 16 +++ .../x/sys/unix/ztypes_linux_loong64.go | 16 +++ .../x/sys/unix/ztypes_linux_mips.go | 16 +++ .../x/sys/unix/ztypes_linux_mips64.go | 16 +++ .../x/sys/unix/ztypes_linux_mips64le.go | 16 +++ .../x/sys/unix/ztypes_linux_mipsle.go | 16 +++ .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 16 +++ .../x/sys/unix/ztypes_linux_ppc64.go | 16 +++ .../x/sys/unix/ztypes_linux_ppc64le.go | 16 +++ .../x/sys/unix/ztypes_linux_riscv64.go | 16 +++ .../x/sys/unix/ztypes_linux_s390x.go | 16 +++ .../x/sys/unix/ztypes_linux_sparc64.go | 16 +++ .../x/tools/go/ast/astutil/enclosing.go | 21 +++- .../x/tools/go/ast/astutil/rewrite.go | 4 + .../x/tools/go/types/objectpath/objectpath.go | 2 +- .../x/tools/internal/imports/fix.go | 9 +- .../x/tools/internal/imports/imports.go | 2 +- .../x/tools/internal/modindex/directories.go | 2 +- .../x/tools/internal/modindex/lookup.go | 2 +- .../x/tools/internal/modindex/symbols.go | 4 +- .../internal/typesinternal/classify_call.go | 8 +- .../x/tools/internal/typesinternal/types.go | 61 +++++---- vendor/modules.txt | 12 +- 67 files changed, 662 insertions(+), 261 deletions(-) create mode 100644 vendor/golang.org/x/crypto/blake2b/go125.go diff --git a/go.mod b/go.mod index a0639fcaf..25f30819f 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( github.com/miekg/dns v1.1.66 github.com/minio/minio-go/v7 v7.0.94 github.com/mitchellh/mapstructure v1.5.0 - github.com/ncruces/go-sqlite3 v0.26.3 + github.com/ncruces/go-sqlite3 v0.27.1 github.com/oklog/ulid v1.3.1 github.com/pquerna/otp v1.5.0 github.com/rivo/uniseg v0.4.7 @@ -83,12 +83,12 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.37.0 go.opentelemetry.io/otel/trace v1.37.0 go.uber.org/automaxprocs v1.6.0 - golang.org/x/crypto v0.39.0 + golang.org/x/crypto v0.40.0 golang.org/x/image v0.28.0 golang.org/x/net v0.41.0 golang.org/x/oauth2 v0.30.0 - golang.org/x/sys v0.33.0 - golang.org/x/text v0.26.0 + golang.org/x/sys v0.34.0 + golang.org/x/text v0.27.0 gopkg.in/mcuadros/go-syslog.v2 v2.3.0 gopkg.in/yaml.v3 v3.0.1 modernc.org/sqlite v1.38.0 @@ -229,8 +229,8 @@ require ( golang.org/x/arch v0.18.0 // indirect golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect golang.org/x/mod v0.25.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect diff --git a/go.sum b/go.sum index 77a62503d..73e150c69 100644 --- a/go.sum +++ b/go.sum @@ -332,8 +332,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/ncruces/go-sqlite3 v0.26.3 h1:WFkQj4KNMhbqiBPGDrVpK74w1DzcxQu3wYpmdWAvfYM= -github.com/ncruces/go-sqlite3 v0.26.3/go.mod h1:XFTPtFIo1DmGCh+XVP8KGn9b/o2f+z0WZuT09x2N6eo= +github.com/ncruces/go-sqlite3 v0.27.1 h1:suqlM7xhSyDVMV9RgX99MCPqt9mB6YOCzHZuiI36K34= +github.com/ncruces/go-sqlite3 v0.27.1/go.mod h1:gpF5s+92aw2MbDmZK0ZOnCdFlpe11BH20CTspVqri0c= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= @@ -566,8 +566,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/image v0.28.0 h1:gdem5JW1OLS4FbkWgLO+7ZeFzYtL3xClb97GaUzYMFE= @@ -605,8 +605,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -622,8 +622,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -634,8 +634,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -646,8 +646,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -655,8 +655,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= diff --git a/vendor/github.com/ncruces/go-sqlite3/const.go b/vendor/github.com/ncruces/go-sqlite3/const.go index e4fc8297c..4a4dfeb2f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/const.go @@ -185,12 +185,12 @@ const ( type FunctionFlag uint32 const ( - DETERMINISTIC FunctionFlag = 0x000000800 - DIRECTONLY FunctionFlag = 0x000080000 - INNOCUOUS FunctionFlag = 0x000200000 - SELFORDER1 FunctionFlag = 0x002000000 - // SUBTYPE FunctionFlag = 0x000100000 - // RESULT_SUBTYPE FunctionFlag = 0x001000000 + DETERMINISTIC FunctionFlag = 0x000000800 + DIRECTONLY FunctionFlag = 0x000080000 + SUBTYPE FunctionFlag = 0x000100000 + INNOCUOUS FunctionFlag = 0x000200000 + RESULT_SUBTYPE FunctionFlag = 0x001000000 + SELFORDER1 FunctionFlag = 0x002000000 ) // StmtStatus name counter values associated with the [Stmt.Status] method. diff --git a/vendor/github.com/ncruces/go-sqlite3/context.go b/vendor/github.com/ncruces/go-sqlite3/context.go index 7caf58626..154c228cf 100644 --- a/vendor/github.com/ncruces/go-sqlite3/context.go +++ b/vendor/github.com/ncruces/go-sqlite3/context.go @@ -227,6 +227,14 @@ func (ctx Context) ResultError(err error) { } } +// ResultSubtype sets the subtype of the result of the function. +// +// https://sqlite.org/c3ref/result_subtype.html +func (ctx Context) ResultSubtype(t uint) { + ctx.c.call("sqlite3_result_subtype", + stk_t(ctx.handle), stk_t(uint32(t))) +} + // VTabNoChange may return true if a column is being fetched as part // of an update during which the column value will not change. // diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go index f473220c0..280611f71 100644 --- a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go +++ b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go @@ -546,8 +546,8 @@ func (s *stmt) setupBindings(args []driver.NamedValue) (err error) { err = s.Stmt.BindTime(id, a, s.tmWrite) case util.JSON: err = s.Stmt.BindJSON(id, a.Value) - case util.PointerUnwrap: - err = s.Stmt.BindPointer(id, util.UnwrapPointer(a)) + case util.Pointer: + err = s.Stmt.BindPointer(id, a.Value) case nil: err = s.Stmt.BindNull(id) default: @@ -565,7 +565,7 @@ func (s *stmt) CheckNamedValue(arg *driver.NamedValue) error { switch arg.Value.(type) { case bool, int, int64, float64, string, []byte, time.Time, sqlite3.ZeroBlob, - util.JSON, util.PointerUnwrap, + util.JSON, util.Pointer, nil: return nil default: diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/README.md b/vendor/github.com/ncruces/go-sqlite3/embed/README.md index 0adf617dc..346a4e308 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/embed/README.md @@ -1,6 +1,6 @@ # Embeddable Wasm build of SQLite -This folder includes an embeddable Wasm build of SQLite 3.50.2 for use with +This folder includes an embeddable Wasm build of SQLite 3.50.3 for use with [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3). The following optional features are compiled in: diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt index 1de4b3382..bb049c219 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt +++ b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt @@ -98,6 +98,7 @@ sqlite3_result_error_toobig sqlite3_result_int64 sqlite3_result_null sqlite3_result_pointer_go +sqlite3_result_subtype sqlite3_result_text_go sqlite3_result_value sqlite3_result_zeroblob64 @@ -126,6 +127,7 @@ sqlite3_value_int64 sqlite3_value_nochange sqlite3_value_numeric_type sqlite3_value_pointer_go +sqlite3_value_subtype sqlite3_value_text sqlite3_value_type sqlite3_vtab_collation diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm b/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm index 7ad7f746d175ea37bbea4ff65f769505cfc6200b..dac29da3d28a496c344aecd1d465932f5dc55b64 100644 GIT binary patch delta 115028 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

h`K`n^YL1(*NngQJG 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 delta 115496 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 NqCfiWpV&7I{~tdsQHKBk diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go index eae4dae17..dbcfac362 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go @@ -1,11 +1,3 @@ package util -type Pointer[T any] struct{ Value T } - -func (p Pointer[T]) unwrap() any { return p.Value } - -type PointerUnwrap interface{ unwrap() any } - -func UnwrapPointer(p PointerUnwrap) any { - return p.unwrap() -} +type Pointer struct{ Value any } diff --git a/vendor/github.com/ncruces/go-sqlite3/pointer.go b/vendor/github.com/ncruces/go-sqlite3/pointer.go index 0e2418b99..245558f86 100644 --- a/vendor/github.com/ncruces/go-sqlite3/pointer.go +++ b/vendor/github.com/ncruces/go-sqlite3/pointer.go @@ -8,6 +8,6 @@ import "github.com/ncruces/go-sqlite3/internal/util" // [Value.Pointer], or [Context.ResultPointer]. // // https://sqlite.org/bindptr.html -func Pointer[T any](value T) any { - return util.Pointer[T]{Value: value} +func Pointer(value any) any { + return util.Pointer{Value: value} } diff --git a/vendor/github.com/ncruces/go-sqlite3/stmt.go b/vendor/github.com/ncruces/go-sqlite3/stmt.go index 363b45af2..706182f9f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/stmt.go +++ b/vendor/github.com/ncruces/go-sqlite3/stmt.go @@ -631,7 +631,6 @@ func (s *Stmt) ColumnValue(col int) Value { stk_t(s.handle), stk_t(col))) return Value{ c: s.c, - unprot: true, handle: ptr, } } diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm index fa8af14a003e419de4e9bb847937f51dd32b31aa..f7dc0cdf496eaa55bbcb0dab872672caf6f55fae 100644 GIT binary patch delta 69 zcmaD@bE9TLKI65G1!jzl%O@{ql;bQYRAf|OaO5wXe3?;Cp1q_{iJg~`TY=G0AWMGe7kz0Y? gQ6Ni^U4aoqF*-6Rvhpx;b1SfBD6nsqX0o*b0DXWG0{{R3 diff --git a/vendor/github.com/ncruces/go-sqlite3/value.go b/vendor/github.com/ncruces/go-sqlite3/value.go index 6753027b5..54d8f21eb 100644 --- a/vendor/github.com/ncruces/go-sqlite3/value.go +++ b/vendor/github.com/ncruces/go-sqlite3/value.go @@ -15,15 +15,6 @@ import ( type Value struct { c *Conn handle ptr_t - unprot bool - copied bool -} - -func (v Value) protected() stk_t { - if v.unprot { - panic(util.ValueErr) - } - return stk_t(v.handle) } // Dup makes a copy of the SQL value and returns a pointer to that copy. @@ -33,7 +24,6 @@ func (v Value) Dup() *Value { ptr := ptr_t(v.c.call("sqlite3_value_dup", stk_t(v.handle))) return &Value{ c: v.c, - copied: true, handle: ptr, } } @@ -42,9 +32,6 @@ func (v Value) Dup() *Value { // // https://sqlite.org/c3ref/value_dup.html func (dup *Value) Close() error { - if !dup.copied { - panic(util.ValueErr) - } dup.c.call("sqlite3_value_free", stk_t(dup.handle)) dup.handle = 0 return nil @@ -54,14 +41,21 @@ func (dup *Value) Close() error { // // https://sqlite.org/c3ref/value_blob.html func (v Value) Type() Datatype { - return Datatype(v.c.call("sqlite3_value_type", v.protected())) + return Datatype(v.c.call("sqlite3_value_type", stk_t(v.handle))) } -// Type returns the numeric datatype of the value. +// Subtype returns the subtype of the value. +// +// https://sqlite.org/c3ref/value_subtype.html +func (v Value) Subtype() uint { + return uint(uint32(v.c.call("sqlite3_value_subtype", stk_t(v.handle)))) +} + +// NumericType returns the numeric datatype of the value. // // https://sqlite.org/c3ref/value_blob.html func (v Value) NumericType() Datatype { - return Datatype(v.c.call("sqlite3_value_numeric_type", v.protected())) + return Datatype(v.c.call("sqlite3_value_numeric_type", stk_t(v.handle))) } // Bool returns the value as a bool. @@ -85,14 +79,14 @@ func (v Value) Int() int { // // https://sqlite.org/c3ref/value_blob.html func (v Value) Int64() int64 { - return int64(v.c.call("sqlite3_value_int64", v.protected())) + return int64(v.c.call("sqlite3_value_int64", stk_t(v.handle))) } // Float returns the value as a float64. // // https://sqlite.org/c3ref/value_blob.html func (v Value) Float() float64 { - f := uint64(v.c.call("sqlite3_value_double", v.protected())) + f := uint64(v.c.call("sqlite3_value_double", stk_t(v.handle))) return math.Float64frombits(f) } @@ -138,7 +132,7 @@ func (v Value) Blob(buf []byte) []byte { // // https://sqlite.org/c3ref/value_blob.html func (v Value) RawText() []byte { - ptr := ptr_t(v.c.call("sqlite3_value_text", v.protected())) + ptr := ptr_t(v.c.call("sqlite3_value_text", stk_t(v.handle))) return v.rawBytes(ptr, 1) } @@ -148,7 +142,7 @@ func (v Value) RawText() []byte { // // https://sqlite.org/c3ref/value_blob.html func (v Value) RawBlob() []byte { - ptr := ptr_t(v.c.call("sqlite3_value_blob", v.protected())) + ptr := ptr_t(v.c.call("sqlite3_value_blob", stk_t(v.handle))) return v.rawBytes(ptr, 0) } @@ -157,14 +151,14 @@ func (v Value) rawBytes(ptr ptr_t, nul int32) []byte { return nil } - n := int32(v.c.call("sqlite3_value_bytes", v.protected())) + n := int32(v.c.call("sqlite3_value_bytes", stk_t(v.handle))) return util.View(v.c.mod, ptr, int64(n+nul))[:n] } // Pointer gets the pointer associated with this value, // or nil if it has no associated pointer. func (v Value) Pointer() any { - ptr := ptr_t(v.c.call("sqlite3_value_pointer_go", v.protected())) + ptr := ptr_t(v.c.call("sqlite3_value_pointer_go", stk_t(v.handle))) return util.GetHandle(v.c.ctx, ptr) } @@ -194,7 +188,7 @@ func (v Value) JSON(ptr any) error { // // https://sqlite.org/c3ref/value_blob.html func (v Value) NoChange() bool { - b := int32(v.c.call("sqlite3_value_nochange", v.protected())) + b := int32(v.c.call("sqlite3_value_nochange", stk_t(v.handle))) return b != 0 } @@ -202,7 +196,7 @@ func (v Value) NoChange() bool { // // https://sqlite.org/c3ref/value_blob.html func (v Value) FromBind() bool { - b := int32(v.c.call("sqlite3_value_frombind", v.protected())) + b := int32(v.c.call("sqlite3_value_frombind", stk_t(v.handle))) return b != 0 } diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go index 94347f1cc..b99070496 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go @@ -2,7 +2,6 @@ package memdb import ( "io" - "runtime" "sync" "time" @@ -85,9 +84,10 @@ type memDB struct { // +checklocks:memoryMtx refs int32 - shared int32 // +checklocks:lockMtx - pending bool // +checklocks:lockMtx - reserved bool // +checklocks:lockMtx + shared int32 // +checklocks:lockMtx + pending bool // +checklocks:lockMtx + reserved bool // +checklocks:lockMtx + waiter *sync.Cond // +checklocks:lockMtx lockMtx sync.Mutex dataMtx sync.RWMutex @@ -195,8 +195,6 @@ func (m *memFile) Size() (int64, error) { return m.size, nil } -const spinWait = 25 * time.Microsecond - func (m *memFile) Lock(lock vfs.LockLevel) error { if m.lock >= lock { return nil @@ -228,13 +226,18 @@ func (m *memFile) Lock(lock vfs.LockLevel) error { m.pending = true } - for before := time.Now(); m.shared > 1; { - if time.Since(before) > spinWait { - return sqlite3.BUSY + if m.shared > 1 { + before := time.Now() + if m.waiter == nil { + m.waiter = sync.NewCond(&m.lockMtx) + } + defer time.AfterFunc(time.Millisecond, m.waiter.Broadcast).Stop() + for m.shared > 1 { + if time.Since(before) > time.Millisecond { + return sqlite3.BUSY + } + m.waiter.Wait() } - m.lockMtx.Unlock() - runtime.Gosched() - m.lockMtx.Lock() } } @@ -257,7 +260,9 @@ func (m *memFile) Unlock(lock vfs.LockLevel) error { m.pending = false } if lock < vfs.LOCK_SHARED { - m.shared-- + if m.shared--; m.pending && m.shared <= 1 && m.waiter != nil { + m.waiter.Broadcast() + } } m.lock = lock return nil diff --git a/vendor/golang.org/x/crypto/acme/acme.go b/vendor/golang.org/x/crypto/acme/acme.go index 6be00d1d0..7a51284f9 100644 --- a/vendor/golang.org/x/crypto/acme/acme.go +++ b/vendor/golang.org/x/crypto/acme/acme.go @@ -35,6 +35,7 @@ import ( "errors" "fmt" "math/big" + "net" "net/http" "strings" "sync" @@ -589,8 +590,9 @@ func (c *Client) TLSSNI02ChallengeCert(token string, opt ...CertOption) (tls.Cer // TLSALPN01ChallengeCert creates a certificate for TLS-ALPN-01 challenge response. // Servers can present the certificate to validate the challenge and prove control -// over a domain name. For more details on TLS-ALPN-01 see -// https://tools.ietf.org/html/draft-shoemaker-acme-tls-alpn-00#section-3 +// over an identifier (either a DNS name or the textual form of an IPv4 or IPv6 +// address). For more details on TLS-ALPN-01 see +// https://www.rfc-editor.org/rfc/rfc8737 and https://www.rfc-editor.org/rfc/rfc8738 // // The token argument is a Challenge.Token value. // If a WithKey option is provided, its private part signs the returned cert, @@ -598,9 +600,13 @@ func (c *Client) TLSSNI02ChallengeCert(token string, opt ...CertOption) (tls.Cer // If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. // // The returned certificate is valid for the next 24 hours and must be presented only when -// the server name in the TLS ClientHello matches the domain, and the special acme-tls/1 ALPN protocol +// the server name in the TLS ClientHello matches the identifier, and the special acme-tls/1 ALPN protocol // has been specified. -func (c *Client) TLSALPN01ChallengeCert(token, domain string, opt ...CertOption) (cert tls.Certificate, err error) { +// +// Validation requests for IP address identifiers will use the reverse DNS form in the server name +// in the TLS ClientHello since the SNI extension is not supported for IP addresses. +// See RFC 8738 Section 6 for more information. +func (c *Client) TLSALPN01ChallengeCert(token, identifier string, opt ...CertOption) (cert tls.Certificate, err error) { ka, err := keyAuth(c.Key.Public(), token) if err != nil { return tls.Certificate{}, err @@ -630,7 +636,7 @@ func (c *Client) TLSALPN01ChallengeCert(token, domain string, opt ...CertOption) } tmpl.ExtraExtensions = append(tmpl.ExtraExtensions, acmeExtension) newOpt = append(newOpt, WithTemplate(tmpl)) - return tlsChallengeCert([]string{domain}, newOpt) + return tlsChallengeCert(identifier, newOpt) } // popNonce returns a nonce value previously stored with c.addNonce @@ -749,10 +755,14 @@ func defaultTLSChallengeCertTemplate() *x509.Certificate { } // tlsChallengeCert creates a temporary certificate for TLS-ALPN challenges -// with the given SANs and auto-generated public/private key pair. -// The Subject Common Name is set to the first SAN to aid debugging. +// for the given identifier, using an auto-generated public/private key pair. +// +// If the provided identifier is a domain name, it will be used as a DNS type SAN and for the +// subject common name. If the provided identifier is an IP address it will be used as an IP type +// SAN. +// // To create a cert with a custom key pair, specify WithKey option. -func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { +func tlsChallengeCert(identifier string, opt []CertOption) (tls.Certificate, error) { var key crypto.Signer tmpl := defaultTLSChallengeCertTemplate() for _, o := range opt { @@ -776,9 +786,12 @@ func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { return tls.Certificate{}, err } } - tmpl.DNSNames = san - if len(san) > 0 { - tmpl.Subject.CommonName = san[0] + + if ip := net.ParseIP(identifier); ip != nil { + tmpl.IPAddresses = []net.IP{ip} + } else { + tmpl.DNSNames = []string{identifier} + tmpl.Subject.CommonName = identifier } der, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, key.Public(), key) diff --git a/vendor/golang.org/x/crypto/acme/types.go b/vendor/golang.org/x/crypto/acme/types.go index 640223cb7..c466645ca 100644 --- a/vendor/golang.org/x/crypto/acme/types.go +++ b/vendor/golang.org/x/crypto/acme/types.go @@ -619,7 +619,7 @@ func (*certOptKey) privateCertOpt() {} // // In TLS ChallengeCert methods, the template is also used as parent, // resulting in a self-signed certificate. -// The DNSNames field of t is always overwritten for tls-sni challenge certs. +// The DNSNames or IPAddresses fields of t are always overwritten for tls-alpn challenge certs. func WithTemplate(t *x509.Certificate) CertOption { return (*certOptTemplate)(t) } diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go index 52c414db0..7692bb346 100644 --- a/vendor/golang.org/x/crypto/blake2b/blake2x.go +++ b/vendor/golang.org/x/crypto/blake2b/blake2x.go @@ -12,6 +12,8 @@ import ( // XOF defines the interface to hash functions that // support arbitrary-length output. +// +// New callers should prefer the standard library [hash.XOF]. type XOF interface { // Write absorbs more data into the hash's state. It panics if called // after Read. @@ -47,6 +49,8 @@ const maxOutputLength = (1 << 32) * 64 // // A non-nil key turns the hash into a MAC. The key must between // zero and 32 bytes long. +// +// The result can be safely interface-upgraded to [hash.XOF]. func NewXOF(size uint32, key []byte) (XOF, error) { if len(key) > Size { return nil, errKeySize @@ -93,6 +97,10 @@ func (x *xof) Clone() XOF { return &clone } +func (x *xof) BlockSize() int { + return x.d.BlockSize() +} + func (x *xof) Reset() { x.cfg[0] = byte(Size) binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length diff --git a/vendor/golang.org/x/crypto/blake2b/go125.go b/vendor/golang.org/x/crypto/blake2b/go125.go new file mode 100644 index 000000000..67e990b7e --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/go125.go @@ -0,0 +1,11 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.25 + +package blake2b + +import "hash" + +var _ hash.XOF = (*xof)(nil) diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go index a3dc629c6..139fa31e1 100644 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ b/vendor/golang.org/x/crypto/ssh/certs.go @@ -233,7 +233,11 @@ func parseCert(in []byte, privAlgo string) (*Certificate, error) { if err != nil { return nil, err } - + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[k.Type()]; ok { + return nil, fmt.Errorf("ssh: the signature key type %q is invalid for certificates", k.Type()) + } c.SignatureKey = k c.Signature, rest, ok = parseSignatureBody(g.Signature) if !ok || len(rest) > 0 { @@ -301,16 +305,13 @@ type CertChecker struct { SupportedCriticalOptions []string // IsUserAuthority should return true if the key is recognized as an - // authority for the given user certificate. This allows for - // certificates to be signed by other certificates. This must be set - // if this CertChecker will be checking user certificates. + // authority for user certificate. This must be set if this CertChecker + // will be checking user certificates. IsUserAuthority func(auth PublicKey) bool // IsHostAuthority should report whether the key is recognized as - // an authority for this host. This allows for certificates to be - // signed by other keys, and for those other keys to only be valid - // signers for particular hostnames. This must be set if this - // CertChecker will be checking host certificates. + // an authority for this host. This must be set if this CertChecker + // will be checking host certificates. IsHostAuthority func(auth PublicKey, address string) bool // Clock is used for verifying time stamps. If nil, time.Now @@ -447,12 +448,19 @@ func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { // SignCert signs the certificate with an authority, setting the Nonce, // SignatureKey, and Signature fields. If the authority implements the // MultiAlgorithmSigner interface the first algorithm in the list is used. This -// is useful if you want to sign with a specific algorithm. +// is useful if you want to sign with a specific algorithm. As specified in +// [SSH-CERTS], Section 2.1.1, authority can't be a [Certificate]. func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { c.Nonce = make([]byte, 32) if _, err := io.ReadFull(rand, c.Nonce); err != nil { return err } + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[authority.PublicKey().Type()]; ok { + return fmt.Errorf("ssh: certificates cannot be used as authority (public key type %q)", + authority.PublicKey().Type()) + } c.SignatureKey = authority.PublicKey() if v, ok := authority.(MultiAlgorithmSigner); ok { diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go index b86dde151..c12818fdc 100644 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ b/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -289,7 +289,7 @@ func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiA } } - algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos) + algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos, true) if err != nil { // If there is no overlap, return the fallback algorithm to support // servers that fail to list all supported algorithms. diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index 0415d3396..f2ec0896c 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -336,7 +336,7 @@ func parseError(tag uint8) error { return fmt.Errorf("ssh: parse error in message type %d", tag) } -func findCommon(what string, client []string, server []string) (common string, err error) { +func findCommon(what string, client []string, server []string, isClient bool) (string, error) { for _, c := range client { for _, s := range server { if c == s { @@ -344,7 +344,32 @@ func findCommon(what string, client []string, server []string) (common string, e } } } - return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) + err := &AlgorithmNegotiationError{ + What: what, + } + if isClient { + err.SupportedAlgorithms = client + err.RequestedAlgorithms = server + } else { + err.SupportedAlgorithms = server + err.RequestedAlgorithms = client + } + return "", err +} + +// AlgorithmNegotiationError defines the error returned if the client and the +// server cannot agree on an algorithm for key exchange, host key, cipher, MAC. +type AlgorithmNegotiationError struct { + What string + // RequestedAlgorithms lists the algorithms supported by the peer. + RequestedAlgorithms []string + // SupportedAlgorithms lists the algorithms supported on our side. + SupportedAlgorithms []string +} + +func (a *AlgorithmNegotiationError) Error() string { + return fmt.Sprintf("ssh: no common algorithm for %s; we offered: %v, peer offered: %v", + a.What, a.SupportedAlgorithms, a.RequestedAlgorithms) } // DirectionAlgorithms defines the algorithms negotiated in one direction @@ -379,12 +404,12 @@ var aeadCiphers = map[string]bool{ func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *NegotiatedAlgorithms, err error) { result := &NegotiatedAlgorithms{} - result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) + result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos, isClient) if err != nil { return } - result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos) + result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos, isClient) if err != nil { return } @@ -394,36 +419,36 @@ func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMs ctos, stoc = stoc, ctos } - ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) + ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer, isClient) if err != nil { return } - stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) + stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient, isClient) if err != nil { return } if !aeadCiphers[ctos.Cipher] { - ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) + ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer, isClient) if err != nil { return } } if !aeadCiphers[stoc.Cipher] { - stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) + stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient, isClient) if err != nil { return } } - ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) + ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer, isClient) if err != nil { return } - stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) + stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient, isClient) if err != nil { return } diff --git a/vendor/golang.org/x/crypto/ssh/doc.go b/vendor/golang.org/x/crypto/ssh/doc.go index f5d352fe3..04ccce346 100644 --- a/vendor/golang.org/x/crypto/ssh/doc.go +++ b/vendor/golang.org/x/crypto/ssh/doc.go @@ -16,6 +16,7 @@ References: [PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 + [SSH-CERTS]: https://datatracker.ietf.org/doc/html/draft-miller-ssh-cert-01 This package does not fall under the stability promise of the Go language itself, so its API may be changed when pressing needs arise. diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go index 566e09d5a..a28c0de50 100644 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ b/vendor/golang.org/x/crypto/ssh/keys.go @@ -273,7 +273,7 @@ func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []str return nil, "", nil, nil, errors.New("ssh: no key found") } -// ParsePublicKey parses an SSH public key formatted for use in +// ParsePublicKey parses an SSH public key or certificate formatted for use in // the SSH wire protocol according to RFC 4253, section 6.6. func ParsePublicKey(in []byte) (out PublicKey, err error) { algo, in, ok := parseString(in) diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go index cb6bb9ad3..1d8cffae8 100644 --- a/vendor/golang.org/x/sync/errgroup/errgroup.go +++ b/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -12,8 +12,6 @@ package errgroup import ( "context" "fmt" - "runtime" - "runtime/debug" "sync" ) @@ -33,10 +31,6 @@ type Group struct { errOnce sync.Once err error - - mu sync.Mutex - panicValue any // = PanicError | PanicValue; non-nil if some Group.Go goroutine panicked. - abnormal bool // some Group.Go goroutine terminated abnormally (panic or goexit). } func (g *Group) done() { @@ -56,22 +50,13 @@ func WithContext(ctx context.Context) (*Group, context.Context) { return &Group{cancel: cancel}, ctx } -// Wait blocks until all function calls from the Go method have returned -// normally, then returns the first non-nil error (if any) from them. -// -// If any of the calls panics, Wait panics with a [PanicValue]; -// and if any of them calls [runtime.Goexit], Wait calls runtime.Goexit. +// Wait blocks until all function calls from the Go method have returned, then +// returns the first non-nil error (if any) from them. func (g *Group) Wait() error { g.wg.Wait() if g.cancel != nil { g.cancel(g.err) } - if g.panicValue != nil { - panic(g.panicValue) - } - if g.abnormal { - runtime.Goexit() - } return g.err } @@ -81,53 +66,31 @@ func (g *Group) Wait() error { // It blocks until the new goroutine can be added without the number of // goroutines in the group exceeding the configured limit. // -// The first goroutine in the group that returns a non-nil error, panics, or -// invokes [runtime.Goexit] will cancel the associated Context, if any. +// The first goroutine in the group that returns a non-nil error will +// cancel the associated Context, if any. The error will be returned +// by Wait. func (g *Group) Go(f func() error) { if g.sem != nil { g.sem <- token{} } - g.add(f) -} - -func (g *Group) add(f func() error) { g.wg.Add(1) go func() { defer g.done() - normalReturn := false - defer func() { - if normalReturn { - return - } - v := recover() - g.mu.Lock() - defer g.mu.Unlock() - if !g.abnormal { - if g.cancel != nil { - g.cancel(g.err) - } - g.abnormal = true - } - if v != nil && g.panicValue == nil { - switch v := v.(type) { - case error: - g.panicValue = PanicError{ - Recovered: v, - Stack: debug.Stack(), - } - default: - g.panicValue = PanicValue{ - Recovered: v, - Stack: debug.Stack(), - } - } - } - }() - err := f() - normalReturn = true - if err != nil { + // It is tempting to propagate panics from f() + // up to the goroutine that calls Wait, but + // it creates more problems than it solves: + // - it delays panics arbitrarily, + // making bugs harder to detect; + // - it turns f's panic stack into a mere value, + // hiding it from crash-monitoring tools; + // - it risks deadlocks that hide the panic entirely, + // if f's panic leaves the program in a state + // that prevents the Wait call from being reached. + // See #53757, #74275, #74304, #74306. + + if err := f(); err != nil { g.errOnce.Do(func() { g.err = err if g.cancel != nil { @@ -152,7 +115,19 @@ func (g *Group) TryGo(f func() error) bool { } } - g.add(f) + g.wg.Add(1) + go func() { + defer g.done() + + if err := f(); err != nil { + g.errOnce.Do(func() { + g.err = err + if g.cancel != nil { + g.cancel(g.err) + } + }) + } + }() return true } @@ -174,34 +149,3 @@ func (g *Group) SetLimit(n int) { } g.sem = make(chan token, n) } - -// PanicError wraps an error recovered from an unhandled panic -// when calling a function passed to Go or TryGo. -type PanicError struct { - Recovered error - Stack []byte // result of call to [debug.Stack] -} - -func (p PanicError) Error() string { - if len(p.Stack) > 0 { - return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack) - } - return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered) -} - -func (p PanicError) Unwrap() error { return p.Recovered } - -// PanicValue wraps a value that does not implement the error interface, -// recovered from an unhandled panic when calling a function passed to Go or -// TryGo. -type PanicValue struct { - Recovered any - Stack []byte // result of call to [debug.Stack] -} - -func (p PanicValue) String() string { - if len(p.Stack) > 0 { - return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack) - } - return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered) -} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 4f432bfe8..9e7a6c5a4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -319,6 +319,7 @@ const ( AUDIT_INTEGRITY_POLICY_RULE = 0x70f AUDIT_INTEGRITY_RULE = 0x70d AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_INTEGRITY_USERSPACE = 0x710 AUDIT_IPC = 0x517 AUDIT_IPC_SET_PERM = 0x51f AUDIT_IPE_ACCESS = 0x58c @@ -843,9 +844,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2023-03-01)" + DM_VERSION_EXTRA = "-ioctl (2025-01-17)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x30 + DM_VERSION_MINOR = 0x31 DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -941,6 +942,8 @@ const ( ETHER_FLOW = 0x12 ETHTOOL_BUSINFO_LEN = 0x20 ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FAMILY_NAME = "ethtool" + ETHTOOL_FAMILY_VERSION = 0x1 ETHTOOL_FEC_AUTO = 0x2 ETHTOOL_FEC_BASER = 0x10 ETHTOOL_FEC_LLRS = 0x20 @@ -1203,6 +1206,9 @@ const ( FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 FAN_EPIDFD = -0x2 + FAN_ERRNO_BITS = 0x8 + FAN_ERRNO_MASK = 0xff + FAN_ERRNO_SHIFT = 0x18 FAN_EVENT_INFO_TYPE_DFID = 0x3 FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 FAN_EVENT_INFO_TYPE_ERROR = 0x5 @@ -1210,6 +1216,7 @@ const ( FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa FAN_EVENT_INFO_TYPE_PIDFD = 0x4 + FAN_EVENT_INFO_TYPE_RANGE = 0x6 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_FS_ERROR = 0x8000 @@ -1240,6 +1247,7 @@ const ( FAN_OPEN_EXEC = 0x1000 FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 + FAN_PRE_ACCESS = 0x100000 FAN_Q_OVERFLOW = 0x4000 FAN_RENAME = 0x10000000 FAN_REPORT_DFID_NAME = 0xc00 @@ -2787,7 +2795,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1e + RTA_MAX = 0x1f RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -2864,10 +2872,12 @@ const ( RTM_DELACTION = 0x31 RTM_DELADDR = 0x15 RTM_DELADDRLABEL = 0x49 + RTM_DELANYCAST = 0x3d RTM_DELCHAIN = 0x65 RTM_DELLINK = 0x11 RTM_DELLINKPROP = 0x6d RTM_DELMDB = 0x55 + RTM_DELMULTICAST = 0x39 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 RTM_DELNEXTHOP = 0x69 @@ -2917,11 +2927,13 @@ const ( RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWANYCAST = 0x3c RTM_NEWCACHEREPORT = 0x60 RTM_NEWCHAIN = 0x64 RTM_NEWLINK = 0x10 RTM_NEWLINKPROP = 0x6c RTM_NEWMDB = 0x54 + RTM_NEWMULTICAST = 0x38 RTM_NEWNDUSEROPT = 0x44 RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 @@ -2987,11 +2999,12 @@ const ( RUSAGE_THREAD = 0x1 RWF_APPEND = 0x10 RWF_ATOMIC = 0x40 + RWF_DONTCACHE = 0x80 RWF_DSYNC = 0x2 RWF_HIPRI = 0x1 RWF_NOAPPEND = 0x20 RWF_NOWAIT = 0x8 - RWF_SUPPORTED = 0x7f + RWF_SUPPORTED = 0xff RWF_SYNC = 0x4 RWF_WRITE_LIFE_NOT_SET = 0x0 SCHED_BATCH = 0x3 @@ -3271,6 +3284,7 @@ const ( STATX_BTIME = 0x800 STATX_CTIME = 0x80 STATX_DIOALIGN = 0x2000 + STATX_DIO_READ_ALIGN = 0x20000 STATX_GID = 0x10 STATX_INO = 0x100 STATX_MNT_ID = 0x1000 @@ -3322,7 +3336,7 @@ const ( TASKSTATS_GENL_NAME = "TASKSTATS" TASKSTATS_GENL_VERSION = 0x1 TASKSTATS_TYPE_MAX = 0x6 - TASKSTATS_VERSION = 0xe + TASKSTATS_VERSION = 0xf TCIFLUSH = 0x0 TCIOFF = 0x2 TCIOFLUSH = 0x2 @@ -3503,6 +3517,7 @@ const ( TP_STATUS_WRONG_FORMAT = 0x4 TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 + UBI_IOCECNFO = 0xc01c6f06 UDF_SUPER_MAGIC = 0x15013346 UDP_CORK = 0x1 UDP_ENCAP = 0x64 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 75207613c..a8c421e29 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -372,6 +372,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index c68acda53..9a88d1813 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -373,6 +373,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a8c607ab8..7cb6a867e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -378,6 +378,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 18563dd8d..d0ecd2c58 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 22912cdaa..7a2940ae0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -365,6 +365,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 29344eb37..d14ca8f2e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 20d51fb96..2da1bac1e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 321b60902..28727514b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 9bacdf1e2..7f287b54b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -371,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index c22427261..7e5f9e6aa 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -426,6 +426,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 6270c8ee1..37c87952f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -430,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 9966c1941..522013361 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -430,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 848e5fcc4..4bfe2b5b6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -362,6 +362,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 669b2adb8..e3cffb869 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -434,6 +434,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 4834e5751..c219c8db3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -473,6 +473,7 @@ const ( SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 SO_RCVMARK = 0x54 + SO_RCVPRIORITY = 0x5b SO_RCVTIMEO = 0x2000 SO_RCVTIMEO_NEW = 0x44 SO_RCVTIMEO_OLD = 0x2000 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index a46abe647..8bcac2835 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -114,7 +114,7 @@ type Statx_t struct { Atomic_write_unit_min uint32 Atomic_write_unit_max uint32 Atomic_write_segments_max uint32 - _ [1]uint32 + Dio_read_offset_align uint32 _ [9]uint64 } @@ -2226,8 +2226,11 @@ const ( NFT_PAYLOAD_LL_HEADER = 0x0 NFT_PAYLOAD_NETWORK_HEADER = 0x1 NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_INNER_HEADER = 0x3 + NFT_PAYLOAD_TUN_HEADER = 0x4 NFT_PAYLOAD_CSUM_NONE = 0x0 NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_CSUM_SCTP = 0x2 NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 NFTA_PAYLOAD_UNSPEC = 0x0 NFTA_PAYLOAD_DREG = 0x1 @@ -3802,7 +3805,16 @@ const ( ETHTOOL_MSG_PSE_GET = 0x24 ETHTOOL_MSG_PSE_SET = 0x25 ETHTOOL_MSG_RSS_GET = 0x26 - ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_PLCA_GET_CFG = 0x27 + ETHTOOL_MSG_PLCA_SET_CFG = 0x28 + ETHTOOL_MSG_PLCA_GET_STATUS = 0x29 + ETHTOOL_MSG_MM_GET = 0x2a + ETHTOOL_MSG_MM_SET = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_ACT = 0x2c + ETHTOOL_MSG_PHY_GET = 0x2d + ETHTOOL_MSG_TSCONFIG_GET = 0x2e + ETHTOOL_MSG_TSCONFIG_SET = 0x2f + ETHTOOL_MSG_USER_MAX = 0x2f ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3842,7 +3854,17 @@ const ( ETHTOOL_MSG_MODULE_NTF = 0x24 ETHTOOL_MSG_PSE_GET_REPLY = 0x25 ETHTOOL_MSG_RSS_GET_REPLY = 0x26 - ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 0x27 + ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 0x28 + ETHTOOL_MSG_PLCA_NTF = 0x29 + ETHTOOL_MSG_MM_GET_REPLY = 0x2a + ETHTOOL_MSG_MM_NTF = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_NTF = 0x2c + ETHTOOL_MSG_PHY_GET_REPLY = 0x2d + ETHTOOL_MSG_PHY_NTF = 0x2e + ETHTOOL_MSG_TSCONFIG_GET_REPLY = 0x2f + ETHTOOL_MSG_TSCONFIG_SET_REPLY = 0x30 + ETHTOOL_MSG_KERNEL_MAX = 0x30 ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 ETHTOOL_FLAG_OMIT_REPLY = 0x2 ETHTOOL_FLAG_STATS = 0x4 @@ -3949,7 +3971,12 @@ const ( ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb ETHTOOL_A_RINGS_CQE_SIZE = 0xc ETHTOOL_A_RINGS_TX_PUSH = 0xd - ETHTOOL_A_RINGS_MAX = 0x10 + ETHTOOL_A_RINGS_RX_PUSH = 0xe + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 0xf + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 0x10 + ETHTOOL_A_RINGS_HDS_THRESH = 0x11 + ETHTOOL_A_RINGS_HDS_THRESH_MAX = 0x12 + ETHTOOL_A_RINGS_MAX = 0x12 ETHTOOL_A_CHANNELS_UNSPEC = 0x0 ETHTOOL_A_CHANNELS_HEADER = 0x1 ETHTOOL_A_CHANNELS_RX_MAX = 0x2 @@ -4015,7 +4042,9 @@ const ( ETHTOOL_A_TSINFO_TX_TYPES = 0x3 ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 - ETHTOOL_A_TSINFO_MAX = 0x6 + ETHTOOL_A_TSINFO_STATS = 0x6 + ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER = 0x7 + ETHTOOL_A_TSINFO_MAX = 0x7 ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_HEADER = 0x1 ETHTOOL_A_CABLE_TEST_MAX = 0x1 @@ -4613,6 +4642,7 @@ const ( NL80211_ATTR_AKM_SUITES = 0x4c NL80211_ATTR_AP_ISOLATE = 0x60 NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 + NL80211_ATTR_ASSOC_SPP_AMSDU = 0x14a NL80211_ATTR_AUTH_DATA = 0x9c NL80211_ATTR_AUTH_TYPE = 0x35 NL80211_ATTR_BANDS = 0xef @@ -4623,6 +4653,7 @@ const ( NL80211_ATTR_BSS_BASIC_RATES = 0x24 NL80211_ATTR_BSS = 0x2f NL80211_ATTR_BSS_CTS_PROT = 0x1c + NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA = 0x147 NL80211_ATTR_BSS_HT_OPMODE = 0x6d NL80211_ATTR_BSSID = 0xf5 NL80211_ATTR_BSS_SELECT = 0xe3 @@ -4682,6 +4713,7 @@ const ( NL80211_ATTR_DTIM_PERIOD = 0xd NL80211_ATTR_DURATION = 0x57 NL80211_ATTR_EHT_CAPABILITY = 0x136 + NL80211_ATTR_EMA_RNR_ELEMS = 0x145 NL80211_ATTR_EML_CAPABILITY = 0x13d NL80211_ATTR_EXT_CAPA = 0xa9 NL80211_ATTR_EXT_CAPA_MASK = 0xaa @@ -4717,6 +4749,7 @@ const ( NL80211_ATTR_HIDDEN_SSID = 0x7e NL80211_ATTR_HT_CAPABILITY = 0x1f NL80211_ATTR_HT_CAPABILITY_MASK = 0x94 + NL80211_ATTR_HW_TIMESTAMP_ENABLED = 0x144 NL80211_ATTR_IE_ASSOC_RESP = 0x80 NL80211_ATTR_IE = 0x2a NL80211_ATTR_IE_PROBE_RESP = 0x7f @@ -4747,9 +4780,10 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x14d + NL80211_ATTR_MAX = 0x150 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce + NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS = 0x143 NL80211_ATTR_MAX_MATCH_SETS = 0x85 NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 @@ -4774,9 +4808,12 @@ const ( NL80211_ATTR_MGMT_SUBTYPE = 0x29 NL80211_ATTR_MLD_ADDR = 0x13a NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e + NL80211_ATTR_MLO_LINK_DISABLED = 0x146 NL80211_ATTR_MLO_LINK_ID = 0x139 NL80211_ATTR_MLO_LINKS = 0x138 NL80211_ATTR_MLO_SUPPORT = 0x13b + NL80211_ATTR_MLO_TTLM_DLINK = 0x148 + NL80211_ATTR_MLO_TTLM_ULINK = 0x149 NL80211_ATTR_MNTR_FLAGS = 0x17 NL80211_ATTR_MPATH_INFO = 0x1b NL80211_ATTR_MPATH_NEXT_HOP = 0x1a @@ -4809,12 +4846,14 @@ const ( NL80211_ATTR_PORT_AUTHORIZED = 0x103 NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN = 0x5 NL80211_ATTR_POWER_RULE_MAX_EIRP = 0x6 + NL80211_ATTR_POWER_RULE_PSD = 0x8 NL80211_ATTR_PREV_BSSID = 0x4f NL80211_ATTR_PRIVACY = 0x46 NL80211_ATTR_PROBE_RESP = 0x91 NL80211_ATTR_PROBE_RESP_OFFLOAD = 0x90 NL80211_ATTR_PROTOCOL_FEATURES = 0xad NL80211_ATTR_PS_STATE = 0x5d + NL80211_ATTR_PUNCT_BITMAP = 0x142 NL80211_ATTR_QOS_MAP = 0xc7 NL80211_ATTR_RADAR_BACKGROUND = 0x134 NL80211_ATTR_RADAR_EVENT = 0xa8 @@ -4943,7 +4982,9 @@ const ( NL80211_ATTR_WIPHY_FREQ = 0x26 NL80211_ATTR_WIPHY_FREQ_HINT = 0xc9 NL80211_ATTR_WIPHY_FREQ_OFFSET = 0x122 + NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS = 0x14c NL80211_ATTR_WIPHY_NAME = 0x2 + NL80211_ATTR_WIPHY_RADIOS = 0x14b NL80211_ATTR_WIPHY_RETRY_LONG = 0x3e NL80211_ATTR_WIPHY_RETRY_SHORT = 0x3d NL80211_ATTR_WIPHY_RTS_THRESHOLD = 0x40 @@ -4978,6 +5019,8 @@ const ( NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 NL80211_BAND_ATTR_MAX = 0xd NL80211_BAND_ATTR_RATES = 0x2 + NL80211_BAND_ATTR_S1G_CAPA = 0xd + NL80211_BAND_ATTR_S1G_MCS_NSS_SET = 0xc NL80211_BAND_ATTR_VHT_CAPA = 0x8 NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 @@ -5001,6 +5044,10 @@ const ( NL80211_BSS_BEACON_INTERVAL = 0x4 NL80211_BSS_BEACON_TSF = 0xd NL80211_BSS_BSSID = 0x1 + NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH = 0x2 + NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY = 0x1 + NL80211_BSS_CANNOT_USE_REASONS = 0x18 + NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH = 0x2 NL80211_BSS_CAPABILITY = 0x5 NL80211_BSS_CHAIN_SIGNAL = 0x13 NL80211_BSS_CHAN_WIDTH_10 = 0x1 @@ -5032,6 +5079,9 @@ const ( NL80211_BSS_STATUS = 0x9 NL80211_BSS_STATUS_IBSS_JOINED = 0x2 NL80211_BSS_TSF = 0x3 + NL80211_BSS_USE_FOR = 0x17 + NL80211_BSS_USE_FOR_MLD_LINK = 0x2 + NL80211_BSS_USE_FOR_NORMAL = 0x1 NL80211_CHAN_HT20 = 0x1 NL80211_CHAN_HT40MINUS = 0x2 NL80211_CHAN_HT40PLUS = 0x3 @@ -5117,7 +5167,8 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x9b + NL80211_CMD_LINKS_REMOVED = 0x9a + NL80211_CMD_MAX = 0x9d NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_MODIFY_LINK_STA = 0x97 NL80211_CMD_NAN_MATCH = 0x78 @@ -5161,6 +5212,7 @@ const ( NL80211_CMD_SET_COALESCE = 0x65 NL80211_CMD_SET_CQM = 0x3f NL80211_CMD_SET_FILS_AAD = 0x92 + NL80211_CMD_SET_HW_TIMESTAMP = 0x99 NL80211_CMD_SET_INTERFACE = 0x6 NL80211_CMD_SET_KEY = 0xa NL80211_CMD_SET_MAC_ACL = 0x5d @@ -5180,6 +5232,7 @@ const ( NL80211_CMD_SET_SAR_SPECS = 0x8c NL80211_CMD_SET_STATION = 0x12 NL80211_CMD_SET_TID_CONFIG = 0x89 + NL80211_CMD_SET_TID_TO_LINK_MAPPING = 0x9b NL80211_CMD_SET_TX_BITRATE_MASK = 0x39 NL80211_CMD_SET_WDS_PEER = 0x42 NL80211_CMD_SET_WIPHY = 0x2 @@ -5247,6 +5300,7 @@ const ( NL80211_EXT_FEATURE_AIRTIME_FAIRNESS = 0x21 NL80211_EXT_FEATURE_AP_PMKSA_CACHING = 0x22 NL80211_EXT_FEATURE_AQL = 0x28 + NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA = 0x40 NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT = 0x2e NL80211_EXT_FEATURE_BEACON_PROTECTION = 0x29 NL80211_EXT_FEATURE_BEACON_RATE_HE = 0x36 @@ -5262,6 +5316,7 @@ const ( NL80211_EXT_FEATURE_CQM_RSSI_LIST = 0xd NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = 0x1b NL80211_EXT_FEATURE_DEL_IBSS_STA = 0x2c + NL80211_EXT_FEATURE_DFS_CONCURRENT = 0x43 NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 @@ -5281,9 +5336,12 @@ const ( NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 + NL80211_EXT_FEATURE_OWE_OFFLOAD_AP = 0x42 + NL80211_EXT_FEATURE_OWE_OFFLOAD = 0x41 NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 + NL80211_EXT_FEATURE_PUNCT = 0x3e NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c NL80211_EXT_FEATURE_RRM = 0x1 NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 @@ -5295,8 +5353,10 @@ const ( NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23 NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI = 0xc NL80211_EXT_FEATURE_SECURE_LTF = 0x37 + NL80211_EXT_FEATURE_SECURE_NAN = 0x3f NL80211_EXT_FEATURE_SECURE_RTT = 0x38 NL80211_EXT_FEATURE_SET_SCAN_DWELL = 0x5 + NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT = 0x44 NL80211_EXT_FEATURE_STA_TX_PWR = 0x25 NL80211_EXT_FEATURE_TXQS = 0x1c NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 0x35 @@ -5343,7 +5403,10 @@ const ( NL80211_FREQUENCY_ATTR_2MHZ = 0x16 NL80211_FREQUENCY_ATTR_4MHZ = 0x17 NL80211_FREQUENCY_ATTR_8MHZ = 0x18 + NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP = 0x21 + NL80211_FREQUENCY_ATTR_CAN_MONITOR = 0x20 NL80211_FREQUENCY_ATTR_DFS_CAC_TIME = 0xd + NL80211_FREQUENCY_ATTR_DFS_CONCURRENT = 0x1d NL80211_FREQUENCY_ATTR_DFS_STATE = 0x7 NL80211_FREQUENCY_ATTR_DFS_TIME = 0x8 NL80211_FREQUENCY_ATTR_DISABLED = 0x2 @@ -5357,6 +5420,8 @@ const ( NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a + NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b NL80211_FREQUENCY_ATTR_NO_HE = 0x13 @@ -5364,8 +5429,11 @@ const ( NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa NL80211_FREQUENCY_ATTR_NO_IBSS = 0x3 NL80211_FREQUENCY_ATTR_NO_IR = 0x3 + NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_OFFSET = 0x14 NL80211_FREQUENCY_ATTR_PASSIVE_SCAN = 0x3 + NL80211_FREQUENCY_ATTR_PSD = 0x1c NL80211_FREQUENCY_ATTR_RADAR = 0x5 NL80211_FREQUENCY_ATTR_WMM = 0x12 NL80211_FTM_RESP_ATTR_CIVICLOC = 0x3 @@ -5430,6 +5498,7 @@ const ( NL80211_IFTYPE_STATION = 0x2 NL80211_IFTYPE_UNSPECIFIED = 0x0 NL80211_IFTYPE_WDS = 0x5 + NL80211_KCK_EXT_LEN_32 = 0x20 NL80211_KCK_EXT_LEN = 0x18 NL80211_KCK_LEN = 0x10 NL80211_KEK_EXT_LEN = 0x20 @@ -5458,6 +5527,7 @@ const ( NL80211_MAX_SUPP_HT_RATES = 0x4d NL80211_MAX_SUPP_RATES = 0x20 NL80211_MAX_SUPP_REG_RULES = 0x80 + NL80211_MAX_SUPP_SELECTORS = 0x80 NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5 @@ -5703,11 +5773,16 @@ const ( NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa + NL80211_RATE_INFO_16_MHZ_WIDTH = 0x1d + NL80211_RATE_INFO_1_MHZ_WIDTH = 0x19 + NL80211_RATE_INFO_2_MHZ_WIDTH = 0x1a NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 + NL80211_RATE_INFO_4_MHZ_WIDTH = 0x1b NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 + NL80211_RATE_INFO_8_MHZ_WIDTH = 0x1c NL80211_RATE_INFO_BITRATE32 = 0x5 NL80211_RATE_INFO_BITRATE = 0x1 NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 @@ -5753,6 +5828,8 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 NL80211_RATE_INFO_MAX = 0x1d NL80211_RATE_INFO_MCS = 0x2 + NL80211_RATE_INFO_S1G_MCS = 0x17 + NL80211_RATE_INFO_S1G_NSS = 0x18 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 NL80211_RATE_INFO_VHT_NSS = 0x7 @@ -5770,14 +5847,19 @@ const ( NL80211_REKEY_DATA_KEK = 0x1 NL80211_REKEY_DATA_REPLAY_CTR = 0x3 NL80211_REPLAY_CTR_LEN = 0x8 + NL80211_RRF_ALLOW_6GHZ_VLP_AP = 0x1000000 NL80211_RRF_AUTO_BW = 0x800 NL80211_RRF_DFS = 0x10 + NL80211_RRF_DFS_CONCURRENT = 0x200000 NL80211_RRF_GO_CONCURRENT = 0x1000 NL80211_RRF_IR_CONCURRENT = 0x1000 NL80211_RRF_NO_160MHZ = 0x10000 NL80211_RRF_NO_320MHZ = 0x40000 + NL80211_RRF_NO_6GHZ_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_6GHZ_VLP_CLIENT = 0x400000 NL80211_RRF_NO_80MHZ = 0x8000 NL80211_RRF_NO_CCK = 0x2 + NL80211_RRF_NO_EHT = 0x80000 NL80211_RRF_NO_HE = 0x20000 NL80211_RRF_NO_HT40 = 0x6000 NL80211_RRF_NO_HT40MINUS = 0x2000 @@ -5788,7 +5870,10 @@ const ( NL80211_RRF_NO_IR = 0x80 NL80211_RRF_NO_OFDM = 0x1 NL80211_RRF_NO_OUTDOOR = 0x8 + NL80211_RRF_NO_UHB_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_UHB_VLP_CLIENT = 0x400000 NL80211_RRF_PASSIVE_SCAN = 0x80 + NL80211_RRF_PSD = 0x100000 NL80211_RRF_PTMP_ONLY = 0x40 NL80211_RRF_PTP_ONLY = 0x20 NL80211_RXMGMT_FLAG_ANSWERED = 0x1 @@ -5849,6 +5934,7 @@ const ( NL80211_STA_FLAG_MAX_OLD_API = 0x6 NL80211_STA_FLAG_MFP = 0x4 NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 + NL80211_STA_FLAG_SPP_AMSDU = 0x8 NL80211_STA_FLAG_TDLS_PEER = 0x6 NL80211_STA_FLAG_WME = 0x3 NL80211_STA_INFO_ACK_SIGNAL_AVG = 0x23 @@ -6007,6 +6093,13 @@ const ( NL80211_VHT_CAPABILITY_LEN = 0xc NL80211_VHT_NSS_MAX = 0x8 NL80211_WIPHY_NAME_MAXLEN = 0x40 + NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE = 0x2 + NL80211_WIPHY_RADIO_ATTR_INDEX = 0x1 + NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION = 0x3 + NL80211_WIPHY_RADIO_ATTR_MAX = 0x4 + NL80211_WIPHY_RADIO_FREQ_ATTR_END = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_START = 0x1 NL80211_WMMR_AIFSN = 0x3 NL80211_WMMR_CW_MAX = 0x2 NL80211_WMMR_CW_MIN = 0x1 @@ -6038,6 +6131,7 @@ const ( NL80211_WOWLAN_TRIG_PKT_PATTERN = 0x4 NL80211_WOWLAN_TRIG_RFKILL_RELEASE = 0x9 NL80211_WOWLAN_TRIG_TCP_CONNECTION = 0xe + NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC = 0x14 NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 = 0xa NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN = 0xb NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 = 0xc diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index fd402da43..62db85f6c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -285,10 +285,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -324,11 +330,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -336,8 +348,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index eb7a5e186..7d89d648d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -300,10 +300,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -338,19 +344,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index d78ac108b..9c0b39eec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -276,10 +276,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -315,11 +321,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -327,8 +339,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index cd06d47f1..de9c7ff36 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -279,10 +279,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -317,19 +323,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 2f28fe26c..2336bd2bf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -280,10 +280,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -318,19 +324,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 71d6cac2f..4711f0be1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 8596d4535..ab99a34b9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index cd60ea186..04c9866e3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index b0ae420c4..60aa69f61 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 835972875..cb4fad785 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -288,10 +288,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,11 +333,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -339,8 +351,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 69eb6a5c6..60272cfce 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 5f583cb62..3f5b91bc0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index ad05b51a6..51550f15a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -307,10 +307,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -345,19 +351,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index cf3ce9003..3239e50e0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -302,10 +302,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -340,19 +346,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 590b56739..faf200278 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -284,10 +284,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -322,19 +328,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go index 6e34df461..89f5097be 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go @@ -207,6 +207,9 @@ func childrenOf(n ast.Node) []ast.Node { return false // no recursion }) + // TODO(adonovan): be more careful about missing (!Pos.Valid) + // tokens in trees produced from invalid input. + // Then add fake Nodes for bare tokens. switch n := n.(type) { case *ast.ArrayType: @@ -226,9 +229,12 @@ func childrenOf(n ast.Node) []ast.Node { children = append(children, tok(n.OpPos, len(n.Op.String()))) case *ast.BlockStmt: - children = append(children, - tok(n.Lbrace, len("{")), - tok(n.Rbrace, len("}"))) + if n.Lbrace.IsValid() { + children = append(children, tok(n.Lbrace, len("{"))) + } + if n.Rbrace.IsValid() { + children = append(children, tok(n.Rbrace, len("}"))) + } case *ast.BranchStmt: children = append(children, @@ -304,9 +310,12 @@ func childrenOf(n ast.Node) []ast.Node { // TODO(adonovan): Field.{Doc,Comment,Tag}? case *ast.FieldList: - children = append(children, - tok(n.Opening, len("(")), // or len("[") - tok(n.Closing, len(")"))) // or len("]") + if n.Opening.IsValid() { + children = append(children, tok(n.Opening, len("("))) + } + if n.Closing.IsValid() { + children = append(children, tok(n.Closing, len(")"))) + } case *ast.File: // TODO test: Doc diff --git a/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go index 5c8dbbb7a..4ad054930 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go @@ -67,6 +67,10 @@ var abort = new(int) // singleton, to signal termination of Apply // // The methods Replace, Delete, InsertBefore, and InsertAfter // can be used to change the AST without disrupting Apply. +// +// This type is not to be confused with [inspector.Cursor] from +// package [golang.org/x/tools/go/ast/inspector], which provides +// stateless navigation of immutable syntax trees. type Cursor struct { parent ast.Node name string diff --git a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index 16ed3c178..d3c2913be 100644 --- a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -603,7 +603,7 @@ func Object(pkg *types.Package, p Path) (types.Object, error) { type hasTypeParams interface { TypeParams() *types.TypeParamList } - // abstraction of *types.{Named,TypeParam} + // abstraction of *types.{Alias,Named,TypeParam} type hasObj interface { Obj() *types.TypeName } diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go index 89b96381c..50b6ca51a 100644 --- a/vendor/golang.org/x/tools/internal/imports/fix.go +++ b/vendor/golang.org/x/tools/internal/imports/fix.go @@ -27,12 +27,13 @@ import ( "unicode" "unicode/utf8" + "maps" + "golang.org/x/tools/go/ast/astutil" "golang.org/x/tools/internal/event" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/gopathwalk" "golang.org/x/tools/internal/stdlib" - "maps" ) // importToGroup is a list of functions which map from an import path to @@ -290,8 +291,8 @@ func (p *pass) loadPackageNames(ctx context.Context, imports []*ImportInfo) erro return nil } -// if there is a trailing major version, remove it -func withoutVersion(nm string) string { +// WithoutVersion removes a trailing major version, if there is one. +func WithoutVersion(nm string) string { if v := path.Base(nm); len(v) > 0 && v[0] == 'v' { if _, err := strconv.Atoi(v[1:]); err == nil { // this is, for instance, called with rand/v2 and returns rand @@ -313,7 +314,7 @@ func (p *pass) importIdentifier(imp *ImportInfo) string { } known := p.knownPackages[imp.ImportPath] if known != nil && known.Name != "" { - return withoutVersion(known.Name) + return WithoutVersion(known.Name) } return ImportPathToAssumedName(imp.ImportPath) } diff --git a/vendor/golang.org/x/tools/internal/imports/imports.go b/vendor/golang.org/x/tools/internal/imports/imports.go index 2215a1288..b5f5218b5 100644 --- a/vendor/golang.org/x/tools/internal/imports/imports.go +++ b/vendor/golang.org/x/tools/internal/imports/imports.go @@ -93,7 +93,7 @@ func FixImports(ctx context.Context, filename string, src []byte, goroot string, // env is needed. func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, extraMode parser.Mode) (formatted []byte, err error) { // Don't use parse() -- we don't care about fragments or statement lists - // here, and we need to work with unparseable files. + // here, and we need to work with unparsable files. fileSet := token.NewFileSet() parserMode := parser.SkipObjectResolution if opt.Comments { diff --git a/vendor/golang.org/x/tools/internal/modindex/directories.go b/vendor/golang.org/x/tools/internal/modindex/directories.go index 1e1a02f23..2faa6ce0b 100644 --- a/vendor/golang.org/x/tools/internal/modindex/directories.go +++ b/vendor/golang.org/x/tools/internal/modindex/directories.go @@ -26,7 +26,7 @@ type directory struct { syms []symbol } -// filterDirs groups the directories by import path, +// byImportPath groups the directories by import path, // sorting the ones with the same import path by semantic version, // most recent first. func byImportPath(dirs []Relpath) (map[string][]*directory, error) { diff --git a/vendor/golang.org/x/tools/internal/modindex/lookup.go b/vendor/golang.org/x/tools/internal/modindex/lookup.go index bd605e0d7..34e3673ff 100644 --- a/vendor/golang.org/x/tools/internal/modindex/lookup.go +++ b/vendor/golang.org/x/tools/internal/modindex/lookup.go @@ -75,7 +75,7 @@ func (ix *Index) Lookup(pkg, name string, prefix bool) []Candidate { return nil // didn't find the package } var ans []Candidate - // loc is the first entry for this package name, but there may be severeal + // loc is the first entry for this package name, but there may be several for i := loc; i < len(ix.Entries); i++ { e := ix.Entries[i] if e.PkgName != pkg { diff --git a/vendor/golang.org/x/tools/internal/modindex/symbols.go b/vendor/golang.org/x/tools/internal/modindex/symbols.go index b918529d4..31a502c58 100644 --- a/vendor/golang.org/x/tools/internal/modindex/symbols.go +++ b/vendor/golang.org/x/tools/internal/modindex/symbols.go @@ -30,7 +30,7 @@ import ( type symbol struct { pkg string // name of the symbols's package name string // declared name - kind string // T, C, V, or F, follwed by D if deprecated + kind string // T, C, V, or F, followed by D if deprecated sig string // signature information, for F } @@ -110,7 +110,7 @@ func getFileExports(f *ast.File) []symbol { // The only place a $ can occur seems to be in a struct tag, which // can be an arbitrary string literal, and ExprString does not presently // print struct tags. So for this to happen the type of a formal parameter - // has to be a explict struct, e.g. foo(x struct{a int "$"}) and ExprString + // has to be a explicit struct, e.g. foo(x struct{a int "$"}) and ExprString // would have to show the struct tag. Even testing for this case seems // a waste of effort, but let's remember the possibility if strings.Contains(tp, "$") { diff --git a/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go b/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go index 649c82b6b..3db2a135b 100644 --- a/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go +++ b/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go @@ -65,14 +65,16 @@ func ClassifyCall(info *types.Info, call *ast.CallExpr) CallKind { if info.Types == nil { panic("ClassifyCall: info.Types is nil") } - if info.Types[call.Fun].IsType() { + tv := info.Types[call.Fun] + if tv.IsType() { return CallConversion } + if tv.IsBuiltin() { + return CallBuiltin + } obj := info.Uses[UsedIdent(info, call.Fun)] // Classify the call by the type of the object, if any. switch obj := obj.(type) { - case *types.Builtin: - return CallBuiltin case *types.Func: if interfaceMethod(obj) { return CallInterface diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go index cc244689e..a5cd7e8db 100644 --- a/vendor/golang.org/x/tools/internal/typesinternal/types.go +++ b/vendor/golang.org/x/tools/internal/typesinternal/types.go @@ -69,6 +69,34 @@ func NameRelativeTo(pkg *types.Package) types.Qualifier { } } +// TypeNameFor returns the type name symbol for the specified type, if +// it is a [*types.Alias], [*types.Named], [*types.TypeParam], or a +// [*types.Basic] representing a type. +// +// For all other types, and for Basic types representing a builtin, +// constant, or nil, it returns nil. Be careful not to convert the +// resulting nil pointer to a [types.Object]! +// +// If t is the type of a constant, it may be an "untyped" type, which +// has no TypeName. To access the name of such types (e.g. "untyped +// int"), use [types.Basic.Name]. +func TypeNameFor(t types.Type) *types.TypeName { + switch t := t.(type) { + case *types.Alias: + return t.Obj() + case *types.Named: + return t.Obj() + case *types.TypeParam: + return t.Obj() + case *types.Basic: + // See issues #71886 and #66890 for some history. + if tname, ok := types.Universe.Lookup(t.Name()).(*types.TypeName); ok { + return tname + } + } + return nil +} + // A NamedOrAlias is a [types.Type] that is named (as // defined by the spec) and capable of bearing type parameters: it // abstracts aliases ([types.Alias]) and defined types @@ -77,7 +105,7 @@ func NameRelativeTo(pkg *types.Package) types.Qualifier { // Every type declared by an explicit "type" declaration is a // NamedOrAlias. (Built-in type symbols may additionally // have type [types.Basic], which is not a NamedOrAlias, -// though the spec regards them as "named".) +// though the spec regards them as "named"; see [TypeNameFor].) // // NamedOrAlias cannot expose the Origin method, because // [types.Alias.Origin] and [types.Named.Origin] have different @@ -85,32 +113,15 @@ func NameRelativeTo(pkg *types.Package) types.Qualifier { type NamedOrAlias interface { types.Type Obj() *types.TypeName - // TODO(hxjiang): add method TypeArgs() *types.TypeList after stop supporting go1.22. + TypeArgs() *types.TypeList + TypeParams() *types.TypeParamList + SetTypeParams(tparams []*types.TypeParam) } -// TypeParams is a light shim around t.TypeParams(). -// (go/types.Alias).TypeParams requires >= 1.23. -func TypeParams(t NamedOrAlias) *types.TypeParamList { - switch t := t.(type) { - case *types.Alias: - return aliases.TypeParams(t) - case *types.Named: - return t.TypeParams() - } - return nil -} - -// TypeArgs is a light shim around t.TypeArgs(). -// (go/types.Alias).TypeArgs requires >= 1.23. -func TypeArgs(t NamedOrAlias) *types.TypeList { - switch t := t.(type) { - case *types.Alias: - return aliases.TypeArgs(t) - case *types.Named: - return t.TypeArgs() - } - return nil -} +var ( + _ NamedOrAlias = (*types.Alias)(nil) + _ NamedOrAlias = (*types.Named)(nil) +) // Origin returns the generic type of the Named or Alias type t if it // is instantiated, otherwise it returns t. diff --git a/vendor/modules.txt b/vendor/modules.txt index 119caf2fb..7ab8eb6bc 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -714,7 +714,7 @@ github.com/modern-go/reflect2 # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 ## explicit github.com/munnerz/goautoneg -# github.com/ncruces/go-sqlite3 v0.26.3 +# github.com/ncruces/go-sqlite3 v0.27.1 ## explicit; go 1.23.0 github.com/ncruces/go-sqlite3 github.com/ncruces/go-sqlite3/driver @@ -1138,7 +1138,7 @@ go.uber.org/multierr # golang.org/x/arch v0.18.0 ## explicit; go 1.23.0 golang.org/x/arch/x86/x86asm -# golang.org/x/crypto v0.39.0 +# golang.org/x/crypto v0.40.0 ## explicit; go 1.23.0 golang.org/x/crypto/acme golang.org/x/crypto/acme/autocert @@ -1196,17 +1196,17 @@ golang.org/x/net/trace ## explicit; go 1.23.0 golang.org/x/oauth2 golang.org/x/oauth2/internal -# golang.org/x/sync v0.15.0 +# golang.org/x/sync v0.16.0 ## explicit; go 1.23.0 golang.org/x/sync/errgroup golang.org/x/sync/semaphore -# golang.org/x/sys v0.33.0 +# golang.org/x/sys v0.34.0 ## explicit; go 1.23.0 golang.org/x/sys/cpu golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/text v0.26.0 +# golang.org/x/text v0.27.0 ## explicit; go 1.23.0 golang.org/x/text/cases golang.org/x/text/encoding @@ -1228,7 +1228,7 @@ golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm golang.org/x/text/width -# golang.org/x/tools v0.33.0 +# golang.org/x/tools v0.34.0 ## explicit; go 1.23.0 golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/gcexportdata