mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-22 14:20:19 +00:00
rebase: bump the golang-dependencies group with 3 updates
Bumps the golang-dependencies group with 3 updates: [golang.org/x/crypto](https://github.com/golang/crypto), [golang.org/x/net](https://github.com/golang/net) and [golang.org/x/sys](https://github.com/golang/sys). Updates `golang.org/x/crypto` from 0.28.0 to 0.29.0 - [Commits](https://github.com/golang/crypto/compare/v0.28.0...v0.29.0) Updates `golang.org/x/net` from 0.30.0 to 0.31.0 - [Commits](https://github.com/golang/net/compare/v0.30.0...v0.31.0) Updates `golang.org/x/sys` from 0.26.0 to 0.27.0 - [Commits](https://github.com/golang/sys/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies - dependency-name: golang.org/x/sys dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
710e7d273c
commit
925ea1970c
12
go.mod
12
go.mod
@ -25,9 +25,9 @@ require (
|
|||||||
github.com/pkg/xattr v0.4.10
|
github.com/pkg/xattr v0.4.10
|
||||||
github.com/prometheus/client_golang v1.20.5
|
github.com/prometheus/client_golang v1.20.5
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
golang.org/x/crypto v0.28.0
|
golang.org/x/crypto v0.29.0
|
||||||
golang.org/x/net v0.30.0
|
golang.org/x/net v0.31.0
|
||||||
golang.org/x/sys v0.26.0
|
golang.org/x/sys v0.27.0
|
||||||
google.golang.org/grpc v1.67.1
|
google.golang.org/grpc v1.67.1
|
||||||
google.golang.org/protobuf v1.35.1
|
google.golang.org/protobuf v1.35.1
|
||||||
//
|
//
|
||||||
@ -159,9 +159,9 @@ require (
|
|||||||
go.uber.org/zap v1.26.0 // indirect
|
go.uber.org/zap v1.26.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||||
golang.org/x/oauth2 v0.22.0 // indirect
|
golang.org/x/oauth2 v0.22.0 // indirect
|
||||||
golang.org/x/sync v0.8.0 // indirect
|
golang.org/x/sync v0.9.0 // indirect
|
||||||
golang.org/x/term v0.25.0 // indirect
|
golang.org/x/term v0.26.0 // indirect
|
||||||
golang.org/x/text v0.19.0 // indirect
|
golang.org/x/text v0.20.0 // indirect
|
||||||
golang.org/x/time v0.5.0 // indirect
|
golang.org/x/time v0.5.0 // indirect
|
||||||
golang.org/x/tools v0.26.0 // indirect
|
golang.org/x/tools v0.26.0 // indirect
|
||||||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
||||||
|
24
go.sum
24
go.sum
@ -2450,8 +2450,8 @@ golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOM
|
|||||||
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
||||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||||
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
|
||||||
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
|
||||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
|
||||||
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
@ -2613,8 +2613,8 @@ golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
|||||||
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
|
||||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo=
|
||||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@ -2681,8 +2681,8 @@ golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
|||||||
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
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.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
|
||||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@ -2805,8 +2805,8 @@ golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
|||||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.19.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.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
|
||||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ=
|
golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ=
|
||||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
@ -2833,8 +2833,8 @@ golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
|
|||||||
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
|
||||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||||
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
|
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
|
||||||
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
|
golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU=
|
||||||
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
|
golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -2858,8 +2858,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.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
|
||||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
|
||||||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
2
vendor/golang.org/x/crypto/chacha20/chacha_noasm.go
generated
vendored
2
vendor/golang.org/x/crypto/chacha20/chacha_noasm.go
generated
vendored
@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (!arm64 && !s390x && !ppc64le) || !gc || purego
|
//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego
|
||||||
|
|
||||||
package chacha20
|
package chacha20
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build gc && !purego
|
//go:build gc && !purego && (ppc64 || ppc64le)
|
||||||
|
|
||||||
package chacha20
|
package chacha20
|
||||||
|
|
@ -19,7 +19,7 @@
|
|||||||
// The differences in this and the original implementation are
|
// The differences in this and the original implementation are
|
||||||
// due to the calling conventions and initialization of constants.
|
// due to the calling conventions and initialization of constants.
|
||||||
|
|
||||||
//go:build gc && !purego
|
//go:build gc && !purego && (ppc64 || ppc64le)
|
||||||
|
|
||||||
#include "textflag.h"
|
#include "textflag.h"
|
||||||
|
|
||||||
@ -36,32 +36,68 @@
|
|||||||
// for VPERMXOR
|
// for VPERMXOR
|
||||||
#define MASK R18
|
#define MASK R18
|
||||||
|
|
||||||
DATA consts<>+0x00(SB)/8, $0x3320646e61707865
|
DATA consts<>+0x00(SB)/4, $0x61707865
|
||||||
DATA consts<>+0x08(SB)/8, $0x6b20657479622d32
|
DATA consts<>+0x04(SB)/4, $0x3320646e
|
||||||
DATA consts<>+0x10(SB)/8, $0x0000000000000001
|
DATA consts<>+0x08(SB)/4, $0x79622d32
|
||||||
DATA consts<>+0x18(SB)/8, $0x0000000000000000
|
DATA consts<>+0x0c(SB)/4, $0x6b206574
|
||||||
DATA consts<>+0x20(SB)/8, $0x0000000000000004
|
DATA consts<>+0x10(SB)/4, $0x00000001
|
||||||
DATA consts<>+0x28(SB)/8, $0x0000000000000000
|
DATA consts<>+0x14(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d
|
DATA consts<>+0x18(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x38(SB)/8, $0x0203000106070405
|
DATA consts<>+0x1c(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c
|
DATA consts<>+0x20(SB)/4, $0x00000004
|
||||||
DATA consts<>+0x48(SB)/8, $0x0102030005060704
|
DATA consts<>+0x24(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x50(SB)/8, $0x6170786561707865
|
DATA consts<>+0x28(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x58(SB)/8, $0x6170786561707865
|
DATA consts<>+0x2c(SB)/4, $0x00000000
|
||||||
DATA consts<>+0x60(SB)/8, $0x3320646e3320646e
|
DATA consts<>+0x30(SB)/4, $0x0e0f0c0d
|
||||||
DATA consts<>+0x68(SB)/8, $0x3320646e3320646e
|
DATA consts<>+0x34(SB)/4, $0x0a0b0809
|
||||||
DATA consts<>+0x70(SB)/8, $0x79622d3279622d32
|
DATA consts<>+0x38(SB)/4, $0x06070405
|
||||||
DATA consts<>+0x78(SB)/8, $0x79622d3279622d32
|
DATA consts<>+0x3c(SB)/4, $0x02030001
|
||||||
DATA consts<>+0x80(SB)/8, $0x6b2065746b206574
|
DATA consts<>+0x40(SB)/4, $0x0d0e0f0c
|
||||||
DATA consts<>+0x88(SB)/8, $0x6b2065746b206574
|
DATA consts<>+0x44(SB)/4, $0x090a0b08
|
||||||
DATA consts<>+0x90(SB)/8, $0x0000000100000000
|
DATA consts<>+0x48(SB)/4, $0x05060704
|
||||||
DATA consts<>+0x98(SB)/8, $0x0000000300000002
|
DATA consts<>+0x4c(SB)/4, $0x01020300
|
||||||
DATA consts<>+0xa0(SB)/8, $0x5566774411223300
|
DATA consts<>+0x50(SB)/4, $0x61707865
|
||||||
DATA consts<>+0xa8(SB)/8, $0xddeeffcc99aabb88
|
DATA consts<>+0x54(SB)/4, $0x61707865
|
||||||
DATA consts<>+0xb0(SB)/8, $0x6677445522330011
|
DATA consts<>+0x58(SB)/4, $0x61707865
|
||||||
DATA consts<>+0xb8(SB)/8, $0xeeffccddaabb8899
|
DATA consts<>+0x5c(SB)/4, $0x61707865
|
||||||
|
DATA consts<>+0x60(SB)/4, $0x3320646e
|
||||||
|
DATA consts<>+0x64(SB)/4, $0x3320646e
|
||||||
|
DATA consts<>+0x68(SB)/4, $0x3320646e
|
||||||
|
DATA consts<>+0x6c(SB)/4, $0x3320646e
|
||||||
|
DATA consts<>+0x70(SB)/4, $0x79622d32
|
||||||
|
DATA consts<>+0x74(SB)/4, $0x79622d32
|
||||||
|
DATA consts<>+0x78(SB)/4, $0x79622d32
|
||||||
|
DATA consts<>+0x7c(SB)/4, $0x79622d32
|
||||||
|
DATA consts<>+0x80(SB)/4, $0x6b206574
|
||||||
|
DATA consts<>+0x84(SB)/4, $0x6b206574
|
||||||
|
DATA consts<>+0x88(SB)/4, $0x6b206574
|
||||||
|
DATA consts<>+0x8c(SB)/4, $0x6b206574
|
||||||
|
DATA consts<>+0x90(SB)/4, $0x00000000
|
||||||
|
DATA consts<>+0x94(SB)/4, $0x00000001
|
||||||
|
DATA consts<>+0x98(SB)/4, $0x00000002
|
||||||
|
DATA consts<>+0x9c(SB)/4, $0x00000003
|
||||||
|
DATA consts<>+0xa0(SB)/4, $0x11223300
|
||||||
|
DATA consts<>+0xa4(SB)/4, $0x55667744
|
||||||
|
DATA consts<>+0xa8(SB)/4, $0x99aabb88
|
||||||
|
DATA consts<>+0xac(SB)/4, $0xddeeffcc
|
||||||
|
DATA consts<>+0xb0(SB)/4, $0x22330011
|
||||||
|
DATA consts<>+0xb4(SB)/4, $0x66774455
|
||||||
|
DATA consts<>+0xb8(SB)/4, $0xaabb8899
|
||||||
|
DATA consts<>+0xbc(SB)/4, $0xeeffccdd
|
||||||
GLOBL consts<>(SB), RODATA, $0xc0
|
GLOBL consts<>(SB), RODATA, $0xc0
|
||||||
|
|
||||||
|
#ifdef GOARCH_ppc64
|
||||||
|
#define BE_XXBRW_INIT() \
|
||||||
|
LVSL (R0)(R0), V24 \
|
||||||
|
VSPLTISB $3, V25 \
|
||||||
|
VXOR V24, V25, V24 \
|
||||||
|
|
||||||
|
#define BE_XXBRW(vr) VPERM vr, vr, V24, vr
|
||||||
|
#else
|
||||||
|
#define BE_XXBRW_INIT()
|
||||||
|
#define BE_XXBRW(vr)
|
||||||
|
#endif
|
||||||
|
|
||||||
//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)
|
//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)
|
||||||
TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40
|
TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40
|
||||||
MOVD out+0(FP), OUT
|
MOVD out+0(FP), OUT
|
||||||
@ -94,6 +130,8 @@ TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40
|
|||||||
// Clear V27
|
// Clear V27
|
||||||
VXOR V27, V27, V27
|
VXOR V27, V27, V27
|
||||||
|
|
||||||
|
BE_XXBRW_INIT()
|
||||||
|
|
||||||
// V28
|
// V28
|
||||||
LXVW4X (CONSTBASE)(R11), VS60
|
LXVW4X (CONSTBASE)(R11), VS60
|
||||||
|
|
||||||
@ -299,6 +337,11 @@ loop_vsx:
|
|||||||
VADDUWM V8, V18, V8
|
VADDUWM V8, V18, V8
|
||||||
VADDUWM V12, V19, V12
|
VADDUWM V12, V19, V12
|
||||||
|
|
||||||
|
BE_XXBRW(V0)
|
||||||
|
BE_XXBRW(V4)
|
||||||
|
BE_XXBRW(V8)
|
||||||
|
BE_XXBRW(V12)
|
||||||
|
|
||||||
CMPU LEN, $64
|
CMPU LEN, $64
|
||||||
BLT tail_vsx
|
BLT tail_vsx
|
||||||
|
|
||||||
@ -327,6 +370,11 @@ loop_vsx:
|
|||||||
VADDUWM V9, V18, V8
|
VADDUWM V9, V18, V8
|
||||||
VADDUWM V13, V19, V12
|
VADDUWM V13, V19, V12
|
||||||
|
|
||||||
|
BE_XXBRW(V0)
|
||||||
|
BE_XXBRW(V4)
|
||||||
|
BE_XXBRW(V8)
|
||||||
|
BE_XXBRW(V12)
|
||||||
|
|
||||||
CMPU LEN, $64
|
CMPU LEN, $64
|
||||||
BLT tail_vsx
|
BLT tail_vsx
|
||||||
|
|
||||||
@ -334,8 +382,8 @@ loop_vsx:
|
|||||||
LXVW4X (INP)(R8), VS60
|
LXVW4X (INP)(R8), VS60
|
||||||
LXVW4X (INP)(R9), VS61
|
LXVW4X (INP)(R9), VS61
|
||||||
LXVW4X (INP)(R10), VS62
|
LXVW4X (INP)(R10), VS62
|
||||||
VXOR V27, V0, V27
|
|
||||||
|
|
||||||
|
VXOR V27, V0, V27
|
||||||
VXOR V28, V4, V28
|
VXOR V28, V4, V28
|
||||||
VXOR V29, V8, V29
|
VXOR V29, V8, V29
|
||||||
VXOR V30, V12, V30
|
VXOR V30, V12, V30
|
||||||
@ -354,6 +402,11 @@ loop_vsx:
|
|||||||
VADDUWM V10, V18, V8
|
VADDUWM V10, V18, V8
|
||||||
VADDUWM V14, V19, V12
|
VADDUWM V14, V19, V12
|
||||||
|
|
||||||
|
BE_XXBRW(V0)
|
||||||
|
BE_XXBRW(V4)
|
||||||
|
BE_XXBRW(V8)
|
||||||
|
BE_XXBRW(V12)
|
||||||
|
|
||||||
CMPU LEN, $64
|
CMPU LEN, $64
|
||||||
BLT tail_vsx
|
BLT tail_vsx
|
||||||
|
|
||||||
@ -381,6 +434,11 @@ loop_vsx:
|
|||||||
VADDUWM V11, V18, V8
|
VADDUWM V11, V18, V8
|
||||||
VADDUWM V15, V19, V12
|
VADDUWM V15, V19, V12
|
||||||
|
|
||||||
|
BE_XXBRW(V0)
|
||||||
|
BE_XXBRW(V4)
|
||||||
|
BE_XXBRW(V8)
|
||||||
|
BE_XXBRW(V12)
|
||||||
|
|
||||||
CMPU LEN, $64
|
CMPU LEN, $64
|
||||||
BLT tail_vsx
|
BLT tail_vsx
|
||||||
|
|
||||||
@ -408,9 +466,9 @@ loop_vsx:
|
|||||||
|
|
||||||
done_vsx:
|
done_vsx:
|
||||||
// Increment counter by number of 64 byte blocks
|
// Increment counter by number of 64 byte blocks
|
||||||
MOVD (CNT), R14
|
MOVWZ (CNT), R14
|
||||||
ADD BLOCKS, R14
|
ADD BLOCKS, R14
|
||||||
MOVD R14, (CNT)
|
MOVWZ R14, (CNT)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
tail_vsx:
|
tail_vsx:
|
2
vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go
generated
vendored
2
vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go
generated
vendored
@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (!amd64 && !ppc64le && !s390x) || !gc || purego
|
//go:build (!amd64 && !ppc64le && !ppc64 && !s390x) || !gc || purego
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build gc && !purego
|
//go:build gc && !purego && (ppc64 || ppc64le)
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
@ -2,15 +2,25 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build gc && !purego
|
//go:build gc && !purego && (ppc64 || ppc64le)
|
||||||
|
|
||||||
#include "textflag.h"
|
#include "textflag.h"
|
||||||
|
|
||||||
// This was ported from the amd64 implementation.
|
// This was ported from the amd64 implementation.
|
||||||
|
|
||||||
|
#ifdef GOARCH_ppc64le
|
||||||
|
#define LE_MOVD MOVD
|
||||||
|
#define LE_MOVWZ MOVWZ
|
||||||
|
#define LE_MOVHZ MOVHZ
|
||||||
|
#else
|
||||||
|
#define LE_MOVD MOVDBR
|
||||||
|
#define LE_MOVWZ MOVWBR
|
||||||
|
#define LE_MOVHZ MOVHBR
|
||||||
|
#endif
|
||||||
|
|
||||||
#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \
|
#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \
|
||||||
MOVD (msg), t0; \
|
LE_MOVD (msg)( R0), t0; \
|
||||||
MOVD 8(msg), t1; \
|
LE_MOVD (msg)(R24), t1; \
|
||||||
MOVD $1, t2; \
|
MOVD $1, t2; \
|
||||||
ADDC t0, h0, h0; \
|
ADDC t0, h0, h0; \
|
||||||
ADDE t1, h1, h1; \
|
ADDE t1, h1, h1; \
|
||||||
@ -50,10 +60,6 @@
|
|||||||
ADDE t3, h1, h1; \
|
ADDE t3, h1, h1; \
|
||||||
ADDZE h2
|
ADDZE h2
|
||||||
|
|
||||||
DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF
|
|
||||||
DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC
|
|
||||||
GLOBL ·poly1305Mask<>(SB), RODATA, $16
|
|
||||||
|
|
||||||
// func update(state *[7]uint64, msg []byte)
|
// func update(state *[7]uint64, msg []byte)
|
||||||
TEXT ·update(SB), $0-32
|
TEXT ·update(SB), $0-32
|
||||||
MOVD state+0(FP), R3
|
MOVD state+0(FP), R3
|
||||||
@ -66,6 +72,8 @@ TEXT ·update(SB), $0-32
|
|||||||
MOVD 24(R3), R11 // r0
|
MOVD 24(R3), R11 // r0
|
||||||
MOVD 32(R3), R12 // r1
|
MOVD 32(R3), R12 // r1
|
||||||
|
|
||||||
|
MOVD $8, R24
|
||||||
|
|
||||||
CMP R5, $16
|
CMP R5, $16
|
||||||
BLT bytes_between_0_and_15
|
BLT bytes_between_0_and_15
|
||||||
|
|
||||||
@ -94,7 +102,7 @@ flush_buffer:
|
|||||||
|
|
||||||
// Greater than 8 -- load the rightmost remaining bytes in msg
|
// Greater than 8 -- load the rightmost remaining bytes in msg
|
||||||
// and put into R17 (h1)
|
// and put into R17 (h1)
|
||||||
MOVD (R4)(R21), R17
|
LE_MOVD (R4)(R21), R17
|
||||||
MOVD $16, R22
|
MOVD $16, R22
|
||||||
|
|
||||||
// Find the offset to those bytes
|
// Find the offset to those bytes
|
||||||
@ -118,7 +126,7 @@ just1:
|
|||||||
BLT less8
|
BLT less8
|
||||||
|
|
||||||
// Exactly 8
|
// Exactly 8
|
||||||
MOVD (R4), R16
|
LE_MOVD (R4), R16
|
||||||
|
|
||||||
CMP R17, $0
|
CMP R17, $0
|
||||||
|
|
||||||
@ -133,7 +141,7 @@ less8:
|
|||||||
MOVD $0, R22 // shift count
|
MOVD $0, R22 // shift count
|
||||||
CMP R5, $4
|
CMP R5, $4
|
||||||
BLT less4
|
BLT less4
|
||||||
MOVWZ (R4), R16
|
LE_MOVWZ (R4), R16
|
||||||
ADD $4, R4
|
ADD $4, R4
|
||||||
ADD $-4, R5
|
ADD $-4, R5
|
||||||
MOVD $32, R22
|
MOVD $32, R22
|
||||||
@ -141,7 +149,7 @@ less8:
|
|||||||
less4:
|
less4:
|
||||||
CMP R5, $2
|
CMP R5, $2
|
||||||
BLT less2
|
BLT less2
|
||||||
MOVHZ (R4), R21
|
LE_MOVHZ (R4), R21
|
||||||
SLD R22, R21, R21
|
SLD R22, R21, R21
|
||||||
OR R16, R21, R16
|
OR R16, R21, R16
|
||||||
ADD $16, R22
|
ADD $16, R22
|
5
vendor/golang.org/x/crypto/ssh/client_auth.go
generated
vendored
5
vendor/golang.org/x/crypto/ssh/client_auth.go
generated
vendored
@ -555,6 +555,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
|
|||||||
}
|
}
|
||||||
|
|
||||||
gotMsgExtInfo := false
|
gotMsgExtInfo := false
|
||||||
|
gotUserAuthInfoRequest := false
|
||||||
for {
|
for {
|
||||||
packet, err := c.readPacket()
|
packet, err := c.readPacket()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -585,6 +586,9 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
|
|||||||
if msg.PartialSuccess {
|
if msg.PartialSuccess {
|
||||||
return authPartialSuccess, msg.Methods, nil
|
return authPartialSuccess, msg.Methods, nil
|
||||||
}
|
}
|
||||||
|
if !gotUserAuthInfoRequest {
|
||||||
|
return authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])
|
||||||
|
}
|
||||||
return authFailure, msg.Methods, nil
|
return authFailure, msg.Methods, nil
|
||||||
case msgUserAuthSuccess:
|
case msgUserAuthSuccess:
|
||||||
return authSuccess, nil, nil
|
return authSuccess, nil, nil
|
||||||
@ -596,6 +600,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe
|
|||||||
if err := Unmarshal(packet, &msg); err != nil {
|
if err := Unmarshal(packet, &msg); err != nil {
|
||||||
return authFailure, nil, err
|
return authFailure, nil, err
|
||||||
}
|
}
|
||||||
|
gotUserAuthInfoRequest = true
|
||||||
|
|
||||||
// Manually unpack the prompt/echo pairs.
|
// Manually unpack the prompt/echo pairs.
|
||||||
rest := msg.Prompts
|
rest := msg.Prompts
|
||||||
|
7
vendor/golang.org/x/net/html/doc.go
generated
vendored
7
vendor/golang.org/x/net/html/doc.go
generated
vendored
@ -78,16 +78,11 @@ example, to process each anchor node in depth-first order:
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
var f func(*html.Node)
|
for n := range doc.Descendants() {
|
||||||
f = func(n *html.Node) {
|
|
||||||
if n.Type == html.ElementNode && n.Data == "a" {
|
if n.Type == html.ElementNode && n.Data == "a" {
|
||||||
// Do something with n...
|
// Do something with n...
|
||||||
}
|
}
|
||||||
for c := n.FirstChild; c != nil; c = c.NextSibling {
|
|
||||||
f(c)
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
f(doc)
|
|
||||||
|
|
||||||
The relevant specifications include:
|
The relevant specifications include:
|
||||||
https://html.spec.whatwg.org/multipage/syntax.html and
|
https://html.spec.whatwg.org/multipage/syntax.html and
|
||||||
|
56
vendor/golang.org/x/net/html/iter.go
generated
vendored
Normal file
56
vendor/golang.org/x/net/html/iter.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Copyright 2024 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.23
|
||||||
|
|
||||||
|
package html
|
||||||
|
|
||||||
|
import "iter"
|
||||||
|
|
||||||
|
// Ancestors returns an iterator over the ancestors of n, starting with n.Parent.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its parents while iterating may have unexpected results.
|
||||||
|
func (n *Node) Ancestors() iter.Seq[*Node] {
|
||||||
|
_ = n.Parent // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
for p := n.Parent; p != nil && yield(p); p = p.Parent {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChildNodes returns an iterator over the immediate children of n,
|
||||||
|
// starting with n.FirstChild.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its children while iterating may have unexpected results.
|
||||||
|
func (n *Node) ChildNodes() iter.Seq[*Node] {
|
||||||
|
_ = n.FirstChild // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
for c := n.FirstChild; c != nil && yield(c); c = c.NextSibling {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Descendants returns an iterator over all nodes recursively beneath
|
||||||
|
// n, excluding n itself. Nodes are visited in depth-first preorder.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its descendants while iterating may have unexpected results.
|
||||||
|
func (n *Node) Descendants() iter.Seq[*Node] {
|
||||||
|
_ = n.FirstChild // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
n.descendants(yield)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *Node) descendants(yield func(*Node) bool) bool {
|
||||||
|
for c := range n.ChildNodes() {
|
||||||
|
if !yield(c) || !c.descendants(yield) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
4
vendor/golang.org/x/net/html/node.go
generated
vendored
4
vendor/golang.org/x/net/html/node.go
generated
vendored
@ -38,6 +38,10 @@ var scopeMarker = Node{Type: scopeMarkerNode}
|
|||||||
// that it looks like "a<b" rather than "a<b". For element nodes, DataAtom
|
// that it looks like "a<b" rather than "a<b". For element nodes, DataAtom
|
||||||
// is the atom for Data, or zero if Data is not a known tag name.
|
// is the atom for Data, or zero if Data is not a known tag name.
|
||||||
//
|
//
|
||||||
|
// Node trees may be navigated using the link fields (Parent,
|
||||||
|
// FirstChild, and so on) or a range loop over iterators such as
|
||||||
|
// [Node.Descendants].
|
||||||
|
//
|
||||||
// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
|
// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
|
||||||
// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
|
// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
|
||||||
// "svg" is short for "http://www.w3.org/2000/svg".
|
// "svg" is short for "http://www.w3.org/2000/svg".
|
||||||
|
8
vendor/golang.org/x/net/http2/client_conn_pool.go
generated
vendored
8
vendor/golang.org/x/net/http2/client_conn_pool.go
generated
vendored
@ -8,8 +8,8 @@ package http2
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/tls"
|
|
||||||
"errors"
|
"errors"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
@ -158,7 +158,7 @@ func (c *dialCall) dial(ctx context.Context, addr string) {
|
|||||||
// This code decides which ones live or die.
|
// This code decides which ones live or die.
|
||||||
// The return value used is whether c was used.
|
// The return value used is whether c was used.
|
||||||
// c is never closed.
|
// c is never closed.
|
||||||
func (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c *tls.Conn) (used bool, err error) {
|
func (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c net.Conn) (used bool, err error) {
|
||||||
p.mu.Lock()
|
p.mu.Lock()
|
||||||
for _, cc := range p.conns[key] {
|
for _, cc := range p.conns[key] {
|
||||||
if cc.CanTakeNewRequest() {
|
if cc.CanTakeNewRequest() {
|
||||||
@ -194,8 +194,8 @@ type addConnCall struct {
|
|||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *addConnCall) run(t *Transport, key string, tc *tls.Conn) {
|
func (c *addConnCall) run(t *Transport, key string, nc net.Conn) {
|
||||||
cc, err := t.NewClientConn(tc)
|
cc, err := t.NewClientConn(nc)
|
||||||
|
|
||||||
p := c.p
|
p := c.p
|
||||||
p.mu.Lock()
|
p.mu.Lock()
|
||||||
|
28
vendor/golang.org/x/net/http2/server.go
generated
vendored
28
vendor/golang.org/x/net/http2/server.go
generated
vendored
@ -306,7 +306,7 @@ func ConfigureServer(s *http.Server, conf *Server) error {
|
|||||||
if s.TLSNextProto == nil {
|
if s.TLSNextProto == nil {
|
||||||
s.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){}
|
s.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){}
|
||||||
}
|
}
|
||||||
protoHandler := func(hs *http.Server, c *tls.Conn, h http.Handler) {
|
protoHandler := func(hs *http.Server, c net.Conn, h http.Handler, sawClientPreface bool) {
|
||||||
if testHookOnConn != nil {
|
if testHookOnConn != nil {
|
||||||
testHookOnConn()
|
testHookOnConn()
|
||||||
}
|
}
|
||||||
@ -326,9 +326,28 @@ func ConfigureServer(s *http.Server, conf *Server) error {
|
|||||||
Context: ctx,
|
Context: ctx,
|
||||||
Handler: h,
|
Handler: h,
|
||||||
BaseConfig: hs,
|
BaseConfig: hs,
|
||||||
|
SawClientPreface: sawClientPreface,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
s.TLSNextProto[NextProtoTLS] = protoHandler
|
s.TLSNextProto[NextProtoTLS] = func(hs *http.Server, c *tls.Conn, h http.Handler) {
|
||||||
|
protoHandler(hs, c, h, false)
|
||||||
|
}
|
||||||
|
// The "unencrypted_http2" TLSNextProto key is used to pass off non-TLS HTTP/2 conns.
|
||||||
|
//
|
||||||
|
// A connection passed in this method has already had the HTTP/2 preface read from it.
|
||||||
|
s.TLSNextProto[nextProtoUnencryptedHTTP2] = func(hs *http.Server, c *tls.Conn, h http.Handler) {
|
||||||
|
nc, err := unencryptedNetConnFromTLSConn(c)
|
||||||
|
if err != nil {
|
||||||
|
if lg := hs.ErrorLog; lg != nil {
|
||||||
|
lg.Print(err)
|
||||||
|
} else {
|
||||||
|
log.Print(err)
|
||||||
|
}
|
||||||
|
go c.Close()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
protoHandler(hs, nc, h, true)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2880,6 +2899,11 @@ func (w *responseWriter) SetWriteDeadline(deadline time.Time) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *responseWriter) EnableFullDuplex() error {
|
||||||
|
// We always support full duplex responses, so this is a no-op.
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (w *responseWriter) Flush() {
|
func (w *responseWriter) Flush() {
|
||||||
w.FlushError()
|
w.FlushError()
|
||||||
}
|
}
|
||||||
|
226
vendor/golang.org/x/net/http2/transport.go
generated
vendored
226
vendor/golang.org/x/net/http2/transport.go
generated
vendored
@ -202,6 +202,20 @@ func (t *Transport) markNewGoroutine() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Transport) now() time.Time {
|
||||||
|
if t != nil && t.transportTestHooks != nil {
|
||||||
|
return t.transportTestHooks.group.Now()
|
||||||
|
}
|
||||||
|
return time.Now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Transport) timeSince(when time.Time) time.Duration {
|
||||||
|
if t != nil && t.transportTestHooks != nil {
|
||||||
|
return t.now().Sub(when)
|
||||||
|
}
|
||||||
|
return time.Since(when)
|
||||||
|
}
|
||||||
|
|
||||||
// newTimer creates a new time.Timer, or a synthetic timer in tests.
|
// newTimer creates a new time.Timer, or a synthetic timer in tests.
|
||||||
func (t *Transport) newTimer(d time.Duration) timer {
|
func (t *Transport) newTimer(d time.Duration) timer {
|
||||||
if t.transportTestHooks != nil {
|
if t.transportTestHooks != nil {
|
||||||
@ -281,8 +295,8 @@ func configureTransports(t1 *http.Transport) (*Transport, error) {
|
|||||||
if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") {
|
if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") {
|
||||||
t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1")
|
t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1")
|
||||||
}
|
}
|
||||||
upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {
|
upgradeFn := func(scheme, authority string, c net.Conn) http.RoundTripper {
|
||||||
addr := authorityAddr("https", authority)
|
addr := authorityAddr(scheme, authority)
|
||||||
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
|
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
|
||||||
go c.Close()
|
go c.Close()
|
||||||
return erringRoundTripper{err}
|
return erringRoundTripper{err}
|
||||||
@ -293,18 +307,37 @@ func configureTransports(t1 *http.Transport) (*Transport, error) {
|
|||||||
// was unknown)
|
// was unknown)
|
||||||
go c.Close()
|
go c.Close()
|
||||||
}
|
}
|
||||||
|
if scheme == "http" {
|
||||||
|
return (*unencryptedTransport)(t2)
|
||||||
|
}
|
||||||
return t2
|
return t2
|
||||||
}
|
}
|
||||||
if m := t1.TLSNextProto; len(m) == 0 {
|
if t1.TLSNextProto == nil {
|
||||||
t1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{
|
t1.TLSNextProto = make(map[string]func(string, *tls.Conn) http.RoundTripper)
|
||||||
"h2": upgradeFn,
|
|
||||||
}
|
}
|
||||||
} else {
|
t1.TLSNextProto[NextProtoTLS] = func(authority string, c *tls.Conn) http.RoundTripper {
|
||||||
m["h2"] = upgradeFn
|
return upgradeFn("https", authority, c)
|
||||||
|
}
|
||||||
|
// The "unencrypted_http2" TLSNextProto key is used to pass off non-TLS HTTP/2 conns.
|
||||||
|
t1.TLSNextProto[nextProtoUnencryptedHTTP2] = func(authority string, c *tls.Conn) http.RoundTripper {
|
||||||
|
nc, err := unencryptedNetConnFromTLSConn(c)
|
||||||
|
if err != nil {
|
||||||
|
go c.Close()
|
||||||
|
return erringRoundTripper{err}
|
||||||
|
}
|
||||||
|
return upgradeFn("http", authority, nc)
|
||||||
}
|
}
|
||||||
return t2, nil
|
return t2, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unencryptedTransport is a Transport with a RoundTrip method that
|
||||||
|
// always permits http:// URLs.
|
||||||
|
type unencryptedTransport Transport
|
||||||
|
|
||||||
|
func (t *unencryptedTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
return (*Transport)(t).RoundTripOpt(req, RoundTripOpt{allowHTTP: true})
|
||||||
|
}
|
||||||
|
|
||||||
func (t *Transport) connPool() ClientConnPool {
|
func (t *Transport) connPool() ClientConnPool {
|
||||||
t.connPoolOnce.Do(t.initConnPool)
|
t.connPoolOnce.Do(t.initConnPool)
|
||||||
return t.connPoolOrDef
|
return t.connPoolOrDef
|
||||||
@ -324,7 +357,7 @@ type ClientConn struct {
|
|||||||
t *Transport
|
t *Transport
|
||||||
tconn net.Conn // usually *tls.Conn, except specialized impls
|
tconn net.Conn // usually *tls.Conn, except specialized impls
|
||||||
tlsState *tls.ConnectionState // nil only for specialized impls
|
tlsState *tls.ConnectionState // nil only for specialized impls
|
||||||
reused uint32 // whether conn is being reused; atomic
|
atomicReused uint32 // whether conn is being reused; atomic
|
||||||
singleUse bool // whether being used for a single http.Request
|
singleUse bool // whether being used for a single http.Request
|
||||||
getConnCalled bool // used by clientConnPool
|
getConnCalled bool // used by clientConnPool
|
||||||
|
|
||||||
@ -364,6 +397,14 @@ type ClientConn struct {
|
|||||||
readIdleTimeout time.Duration
|
readIdleTimeout time.Duration
|
||||||
pingTimeout time.Duration
|
pingTimeout time.Duration
|
||||||
|
|
||||||
|
// pendingResets is the number of RST_STREAM frames we have sent to the peer,
|
||||||
|
// without confirming that the peer has received them. When we send a RST_STREAM,
|
||||||
|
// we bundle it with a PING frame, unless a PING is already in flight. We count
|
||||||
|
// the reset stream against the connection's concurrency limit until we get
|
||||||
|
// a PING response. This limits the number of requests we'll try to send to a
|
||||||
|
// completely unresponsive connection.
|
||||||
|
pendingResets int
|
||||||
|
|
||||||
// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.
|
// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.
|
||||||
// Write to reqHeaderMu to lock it, read from it to unlock.
|
// Write to reqHeaderMu to lock it, read from it to unlock.
|
||||||
// Lock reqmu BEFORE mu or wmu.
|
// Lock reqmu BEFORE mu or wmu.
|
||||||
@ -423,9 +464,9 @@ type clientStream struct {
|
|||||||
firstByte bool // got the first response byte
|
firstByte bool // got the first response byte
|
||||||
pastHeaders bool // got first MetaHeadersFrame (actual headers)
|
pastHeaders bool // got first MetaHeadersFrame (actual headers)
|
||||||
pastTrailers bool // got optional second MetaHeadersFrame (trailers)
|
pastTrailers bool // got optional second MetaHeadersFrame (trailers)
|
||||||
num1xx uint8 // number of 1xx responses seen
|
|
||||||
readClosed bool // peer sent an END_STREAM flag
|
readClosed bool // peer sent an END_STREAM flag
|
||||||
readAborted bool // read loop reset the stream
|
readAborted bool // read loop reset the stream
|
||||||
|
totalHeaderSize int64 // total size of 1xx headers seen
|
||||||
|
|
||||||
trailer http.Header // accumulated trailers
|
trailer http.Header // accumulated trailers
|
||||||
resTrailer *http.Header // client's Response.Trailer
|
resTrailer *http.Header // client's Response.Trailer
|
||||||
@ -530,6 +571,8 @@ type RoundTripOpt struct {
|
|||||||
// no cached connection is available, RoundTripOpt
|
// no cached connection is available, RoundTripOpt
|
||||||
// will return ErrNoCachedConn.
|
// will return ErrNoCachedConn.
|
||||||
OnlyCachedConn bool
|
OnlyCachedConn bool
|
||||||
|
|
||||||
|
allowHTTP bool // allow http:// URLs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
@ -562,7 +605,14 @@ func authorityAddr(scheme string, authority string) (addr string) {
|
|||||||
|
|
||||||
// RoundTripOpt is like RoundTrip, but takes options.
|
// RoundTripOpt is like RoundTrip, but takes options.
|
||||||
func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {
|
func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {
|
||||||
if !(req.URL.Scheme == "https" || (req.URL.Scheme == "http" && t.AllowHTTP)) {
|
switch req.URL.Scheme {
|
||||||
|
case "https":
|
||||||
|
// Always okay.
|
||||||
|
case "http":
|
||||||
|
if !t.AllowHTTP && !opt.allowHTTP {
|
||||||
|
return nil, errors.New("http2: unencrypted HTTP/2 not enabled")
|
||||||
|
}
|
||||||
|
default:
|
||||||
return nil, errors.New("http2: unsupported scheme")
|
return nil, errors.New("http2: unsupported scheme")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,7 +623,7 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res
|
|||||||
t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err)
|
t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
reused := !atomic.CompareAndSwapUint32(&cc.reused, 0, 1)
|
reused := !atomic.CompareAndSwapUint32(&cc.atomicReused, 0, 1)
|
||||||
traceGotConn(req, cc, reused)
|
traceGotConn(req, cc, reused)
|
||||||
res, err := cc.RoundTrip(req)
|
res, err := cc.RoundTrip(req)
|
||||||
if err != nil && retry <= 6 {
|
if err != nil && retry <= 6 {
|
||||||
@ -598,6 +648,22 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err == errClientConnNotEstablished {
|
||||||
|
// This ClientConn was created recently,
|
||||||
|
// this is the first request to use it,
|
||||||
|
// and the connection is closed and not usable.
|
||||||
|
//
|
||||||
|
// In this state, cc.idleTimer will remove the conn from the pool
|
||||||
|
// when it fires. Stop the timer and remove it here so future requests
|
||||||
|
// won't try to use this connection.
|
||||||
|
//
|
||||||
|
// If the timer has already fired and we're racing it, the redundant
|
||||||
|
// call to MarkDead is harmless.
|
||||||
|
if cc.idleTimer != nil {
|
||||||
|
cc.idleTimer.Stop()
|
||||||
|
}
|
||||||
|
t.connPool().MarkDead(cc)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.vlogf("RoundTrip failure: %v", err)
|
t.vlogf("RoundTrip failure: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -618,6 +684,7 @@ func (t *Transport) CloseIdleConnections() {
|
|||||||
var (
|
var (
|
||||||
errClientConnClosed = errors.New("http2: client conn is closed")
|
errClientConnClosed = errors.New("http2: client conn is closed")
|
||||||
errClientConnUnusable = errors.New("http2: client conn not usable")
|
errClientConnUnusable = errors.New("http2: client conn not usable")
|
||||||
|
errClientConnNotEstablished = errors.New("http2: client conn could not be established")
|
||||||
errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY")
|
errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -757,6 +824,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
|||||||
pingTimeout: conf.PingTimeout,
|
pingTimeout: conf.PingTimeout,
|
||||||
pings: make(map[[8]byte]chan struct{}),
|
pings: make(map[[8]byte]chan struct{}),
|
||||||
reqHeaderMu: make(chan struct{}, 1),
|
reqHeaderMu: make(chan struct{}, 1),
|
||||||
|
lastActive: t.now(),
|
||||||
}
|
}
|
||||||
var group synctestGroupInterface
|
var group synctestGroupInterface
|
||||||
if t.transportTestHooks != nil {
|
if t.transportTestHooks != nil {
|
||||||
@ -960,7 +1028,7 @@ func (cc *ClientConn) State() ClientConnState {
|
|||||||
return ClientConnState{
|
return ClientConnState{
|
||||||
Closed: cc.closed,
|
Closed: cc.closed,
|
||||||
Closing: cc.closing || cc.singleUse || cc.doNotReuse || cc.goAway != nil,
|
Closing: cc.closing || cc.singleUse || cc.doNotReuse || cc.goAway != nil,
|
||||||
StreamsActive: len(cc.streams),
|
StreamsActive: len(cc.streams) + cc.pendingResets,
|
||||||
StreamsReserved: cc.streamsReserved,
|
StreamsReserved: cc.streamsReserved,
|
||||||
StreamsPending: cc.pendingRequests,
|
StreamsPending: cc.pendingRequests,
|
||||||
LastIdle: cc.lastIdle,
|
LastIdle: cc.lastIdle,
|
||||||
@ -992,16 +1060,38 @@ func (cc *ClientConn) idleStateLocked() (st clientConnIdleState) {
|
|||||||
// writing it.
|
// writing it.
|
||||||
maxConcurrentOkay = true
|
maxConcurrentOkay = true
|
||||||
} else {
|
} else {
|
||||||
maxConcurrentOkay = int64(len(cc.streams)+cc.streamsReserved+1) <= int64(cc.maxConcurrentStreams)
|
// We can take a new request if the total of
|
||||||
|
// - active streams;
|
||||||
|
// - reservation slots for new streams; and
|
||||||
|
// - streams for which we have sent a RST_STREAM and a PING,
|
||||||
|
// but received no subsequent frame
|
||||||
|
// is less than the concurrency limit.
|
||||||
|
maxConcurrentOkay = cc.currentRequestCountLocked() < int(cc.maxConcurrentStreams)
|
||||||
}
|
}
|
||||||
|
|
||||||
st.canTakeNewRequest = cc.goAway == nil && !cc.closed && !cc.closing && maxConcurrentOkay &&
|
st.canTakeNewRequest = cc.goAway == nil && !cc.closed && !cc.closing && maxConcurrentOkay &&
|
||||||
!cc.doNotReuse &&
|
!cc.doNotReuse &&
|
||||||
int64(cc.nextStreamID)+2*int64(cc.pendingRequests) < math.MaxInt32 &&
|
int64(cc.nextStreamID)+2*int64(cc.pendingRequests) < math.MaxInt32 &&
|
||||||
!cc.tooIdleLocked()
|
!cc.tooIdleLocked()
|
||||||
|
|
||||||
|
// If this connection has never been used for a request and is closed,
|
||||||
|
// then let it take a request (which will fail).
|
||||||
|
//
|
||||||
|
// This avoids a situation where an error early in a connection's lifetime
|
||||||
|
// goes unreported.
|
||||||
|
if cc.nextStreamID == 1 && cc.streamsReserved == 0 && cc.closed {
|
||||||
|
st.canTakeNewRequest = true
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// currentRequestCountLocked reports the number of concurrency slots currently in use,
|
||||||
|
// including active streams, reserved slots, and reset streams waiting for acknowledgement.
|
||||||
|
func (cc *ClientConn) currentRequestCountLocked() int {
|
||||||
|
return len(cc.streams) + cc.streamsReserved + cc.pendingResets
|
||||||
|
}
|
||||||
|
|
||||||
func (cc *ClientConn) canTakeNewRequestLocked() bool {
|
func (cc *ClientConn) canTakeNewRequestLocked() bool {
|
||||||
st := cc.idleStateLocked()
|
st := cc.idleStateLocked()
|
||||||
return st.canTakeNewRequest
|
return st.canTakeNewRequest
|
||||||
@ -1014,7 +1104,7 @@ func (cc *ClientConn) tooIdleLocked() bool {
|
|||||||
// times are compared based on their wall time. We don't want
|
// times are compared based on their wall time. We don't want
|
||||||
// to reuse a connection that's been sitting idle during
|
// to reuse a connection that's been sitting idle during
|
||||||
// VM/laptop suspend if monotonic time was also frozen.
|
// VM/laptop suspend if monotonic time was also frozen.
|
||||||
return cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && time.Since(cc.lastIdle.Round(0)) > cc.idleTimeout
|
return cc.idleTimeout != 0 && !cc.lastIdle.IsZero() && cc.t.timeSince(cc.lastIdle.Round(0)) > cc.idleTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
// onIdleTimeout is called from a time.AfterFunc goroutine. It will
|
// onIdleTimeout is called from a time.AfterFunc goroutine. It will
|
||||||
@ -1578,6 +1668,7 @@ func (cs *clientStream) cleanupWriteRequest(err error) {
|
|||||||
cs.reqBodyClosed = make(chan struct{})
|
cs.reqBodyClosed = make(chan struct{})
|
||||||
}
|
}
|
||||||
bodyClosed := cs.reqBodyClosed
|
bodyClosed := cs.reqBodyClosed
|
||||||
|
closeOnIdle := cc.singleUse || cc.doNotReuse || cc.t.disableKeepAlives() || cc.goAway != nil
|
||||||
cc.mu.Unlock()
|
cc.mu.Unlock()
|
||||||
if mustCloseBody {
|
if mustCloseBody {
|
||||||
cs.reqBody.Close()
|
cs.reqBody.Close()
|
||||||
@ -1602,16 +1693,40 @@ func (cs *clientStream) cleanupWriteRequest(err error) {
|
|||||||
if cs.sentHeaders {
|
if cs.sentHeaders {
|
||||||
if se, ok := err.(StreamError); ok {
|
if se, ok := err.(StreamError); ok {
|
||||||
if se.Cause != errFromPeer {
|
if se.Cause != errFromPeer {
|
||||||
cc.writeStreamReset(cs.ID, se.Code, err)
|
cc.writeStreamReset(cs.ID, se.Code, false, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cc.writeStreamReset(cs.ID, ErrCodeCancel, err)
|
// We're cancelling an in-flight request.
|
||||||
|
//
|
||||||
|
// This could be due to the server becoming unresponsive.
|
||||||
|
// To avoid sending too many requests on a dead connection,
|
||||||
|
// we let the request continue to consume a concurrency slot
|
||||||
|
// until we can confirm the server is still responding.
|
||||||
|
// We do this by sending a PING frame along with the RST_STREAM
|
||||||
|
// (unless a ping is already in flight).
|
||||||
|
//
|
||||||
|
// For simplicity, we don't bother tracking the PING payload:
|
||||||
|
// We reset cc.pendingResets any time we receive a PING ACK.
|
||||||
|
//
|
||||||
|
// We skip this if the conn is going to be closed on idle,
|
||||||
|
// because it's short lived and will probably be closed before
|
||||||
|
// we get the ping response.
|
||||||
|
ping := false
|
||||||
|
if !closeOnIdle {
|
||||||
|
cc.mu.Lock()
|
||||||
|
if cc.pendingResets == 0 {
|
||||||
|
ping = true
|
||||||
|
}
|
||||||
|
cc.pendingResets++
|
||||||
|
cc.mu.Unlock()
|
||||||
|
}
|
||||||
|
cc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cs.bufPipe.CloseWithError(err) // no-op if already closed
|
cs.bufPipe.CloseWithError(err) // no-op if already closed
|
||||||
} else {
|
} else {
|
||||||
if cs.sentHeaders && !cs.sentEndStream {
|
if cs.sentHeaders && !cs.sentEndStream {
|
||||||
cc.writeStreamReset(cs.ID, ErrCodeNo, nil)
|
cc.writeStreamReset(cs.ID, ErrCodeNo, false, nil)
|
||||||
}
|
}
|
||||||
cs.bufPipe.CloseWithError(errRequestCanceled)
|
cs.bufPipe.CloseWithError(errRequestCanceled)
|
||||||
}
|
}
|
||||||
@ -1633,12 +1748,17 @@ func (cs *clientStream) cleanupWriteRequest(err error) {
|
|||||||
// Must hold cc.mu.
|
// Must hold cc.mu.
|
||||||
func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {
|
func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error {
|
||||||
for {
|
for {
|
||||||
cc.lastActive = time.Now()
|
if cc.closed && cc.nextStreamID == 1 && cc.streamsReserved == 0 {
|
||||||
|
// This is the very first request sent to this connection.
|
||||||
|
// Return a fatal error which aborts the retry loop.
|
||||||
|
return errClientConnNotEstablished
|
||||||
|
}
|
||||||
|
cc.lastActive = cc.t.now()
|
||||||
if cc.closed || !cc.canTakeNewRequestLocked() {
|
if cc.closed || !cc.canTakeNewRequestLocked() {
|
||||||
return errClientConnUnusable
|
return errClientConnUnusable
|
||||||
}
|
}
|
||||||
cc.lastIdle = time.Time{}
|
cc.lastIdle = time.Time{}
|
||||||
if int64(len(cc.streams)) < int64(cc.maxConcurrentStreams) {
|
if cc.currentRequestCountLocked() < int(cc.maxConcurrentStreams) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
cc.pendingRequests++
|
cc.pendingRequests++
|
||||||
@ -2180,10 +2300,10 @@ func (cc *ClientConn) forgetStreamID(id uint32) {
|
|||||||
if len(cc.streams) != slen-1 {
|
if len(cc.streams) != slen-1 {
|
||||||
panic("forgetting unknown stream id")
|
panic("forgetting unknown stream id")
|
||||||
}
|
}
|
||||||
cc.lastActive = time.Now()
|
cc.lastActive = cc.t.now()
|
||||||
if len(cc.streams) == 0 && cc.idleTimer != nil {
|
if len(cc.streams) == 0 && cc.idleTimer != nil {
|
||||||
cc.idleTimer.Reset(cc.idleTimeout)
|
cc.idleTimer.Reset(cc.idleTimeout)
|
||||||
cc.lastIdle = time.Now()
|
cc.lastIdle = cc.t.now()
|
||||||
}
|
}
|
||||||
// Wake up writeRequestBody via clientStream.awaitFlowControl and
|
// Wake up writeRequestBody via clientStream.awaitFlowControl and
|
||||||
// wake up RoundTrip if there is a pending request.
|
// wake up RoundTrip if there is a pending request.
|
||||||
@ -2243,7 +2363,6 @@ func isEOFOrNetReadError(err error) bool {
|
|||||||
|
|
||||||
func (rl *clientConnReadLoop) cleanup() {
|
func (rl *clientConnReadLoop) cleanup() {
|
||||||
cc := rl.cc
|
cc := rl.cc
|
||||||
cc.t.connPool().MarkDead(cc)
|
|
||||||
defer cc.closeConn()
|
defer cc.closeConn()
|
||||||
defer close(cc.readerDone)
|
defer close(cc.readerDone)
|
||||||
|
|
||||||
@ -2267,6 +2386,24 @@ func (rl *clientConnReadLoop) cleanup() {
|
|||||||
}
|
}
|
||||||
cc.closed = true
|
cc.closed = true
|
||||||
|
|
||||||
|
// If the connection has never been used, and has been open for only a short time,
|
||||||
|
// leave it in the connection pool for a little while.
|
||||||
|
//
|
||||||
|
// This avoids a situation where new connections are constantly created,
|
||||||
|
// added to the pool, fail, and are removed from the pool, without any error
|
||||||
|
// being surfaced to the user.
|
||||||
|
const unusedWaitTime = 5 * time.Second
|
||||||
|
idleTime := cc.t.now().Sub(cc.lastActive)
|
||||||
|
if atomic.LoadUint32(&cc.atomicReused) == 0 && idleTime < unusedWaitTime {
|
||||||
|
cc.idleTimer = cc.t.afterFunc(unusedWaitTime-idleTime, func() {
|
||||||
|
cc.t.connPool().MarkDead(cc)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
cc.mu.Unlock() // avoid any deadlocks in MarkDead
|
||||||
|
cc.t.connPool().MarkDead(cc)
|
||||||
|
cc.mu.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
for _, cs := range cc.streams {
|
for _, cs := range cc.streams {
|
||||||
select {
|
select {
|
||||||
case <-cs.peerClosed:
|
case <-cs.peerClosed:
|
||||||
@ -2494,15 +2631,34 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra
|
|||||||
if f.StreamEnded() {
|
if f.StreamEnded() {
|
||||||
return nil, errors.New("1xx informational response with END_STREAM flag")
|
return nil, errors.New("1xx informational response with END_STREAM flag")
|
||||||
}
|
}
|
||||||
cs.num1xx++
|
|
||||||
const max1xxResponses = 5 // arbitrary bound on number of informational responses, same as net/http
|
|
||||||
if cs.num1xx > max1xxResponses {
|
|
||||||
return nil, errors.New("http2: too many 1xx informational responses")
|
|
||||||
}
|
|
||||||
if fn := cs.get1xxTraceFunc(); fn != nil {
|
if fn := cs.get1xxTraceFunc(); fn != nil {
|
||||||
|
// If the 1xx response is being delivered to the user,
|
||||||
|
// then they're responsible for limiting the number
|
||||||
|
// of responses.
|
||||||
if err := fn(statusCode, textproto.MIMEHeader(header)); err != nil {
|
if err := fn(statusCode, textproto.MIMEHeader(header)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// If the user didn't examine the 1xx response, then we
|
||||||
|
// limit the size of all 1xx headers.
|
||||||
|
//
|
||||||
|
// This differs a bit from the HTTP/1 implementation, which
|
||||||
|
// limits the size of all 1xx headers plus the final response.
|
||||||
|
// Use the larger limit of MaxHeaderListSize and
|
||||||
|
// net/http.Transport.MaxResponseHeaderBytes.
|
||||||
|
limit := int64(cs.cc.t.maxHeaderListSize())
|
||||||
|
if t1 := cs.cc.t.t1; t1 != nil && t1.MaxResponseHeaderBytes > limit {
|
||||||
|
limit = t1.MaxResponseHeaderBytes
|
||||||
|
}
|
||||||
|
for _, h := range f.Fields {
|
||||||
|
cs.totalHeaderSize += int64(h.Size())
|
||||||
|
}
|
||||||
|
if cs.totalHeaderSize > limit {
|
||||||
|
if VerboseLogs {
|
||||||
|
log.Printf("http2: 1xx informational responses too large")
|
||||||
|
}
|
||||||
|
return nil, errors.New("header list too large")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if statusCode == 100 {
|
if statusCode == 100 {
|
||||||
traceGot100Continue(cs.trace)
|
traceGot100Continue(cs.trace)
|
||||||
@ -3046,6 +3202,11 @@ func (rl *clientConnReadLoop) processPing(f *PingFrame) error {
|
|||||||
close(c)
|
close(c)
|
||||||
delete(cc.pings, f.Data)
|
delete(cc.pings, f.Data)
|
||||||
}
|
}
|
||||||
|
if cc.pendingResets > 0 {
|
||||||
|
// See clientStream.cleanupWriteRequest.
|
||||||
|
cc.pendingResets = 0
|
||||||
|
cc.cond.Broadcast()
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
cc := rl.cc
|
cc := rl.cc
|
||||||
@ -3068,13 +3229,20 @@ func (rl *clientConnReadLoop) processPushPromise(f *PushPromiseFrame) error {
|
|||||||
return ConnectionError(ErrCodeProtocol)
|
return ConnectionError(ErrCodeProtocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error) {
|
// writeStreamReset sends a RST_STREAM frame.
|
||||||
|
// When ping is true, it also sends a PING frame with a random payload.
|
||||||
|
func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, ping bool, err error) {
|
||||||
// TODO: map err to more interesting error codes, once the
|
// TODO: map err to more interesting error codes, once the
|
||||||
// HTTP community comes up with some. But currently for
|
// HTTP community comes up with some. But currently for
|
||||||
// RST_STREAM there's no equivalent to GOAWAY frame's debug
|
// RST_STREAM there's no equivalent to GOAWAY frame's debug
|
||||||
// data, and the error codes are all pretty vague ("cancel").
|
// data, and the error codes are all pretty vague ("cancel").
|
||||||
cc.wmu.Lock()
|
cc.wmu.Lock()
|
||||||
cc.fr.WriteRSTStream(streamID, code)
|
cc.fr.WriteRSTStream(streamID, code)
|
||||||
|
if ping {
|
||||||
|
var payload [8]byte
|
||||||
|
rand.Read(payload[:])
|
||||||
|
cc.fr.WritePing(false, payload)
|
||||||
|
}
|
||||||
cc.bw.Flush()
|
cc.bw.Flush()
|
||||||
cc.wmu.Unlock()
|
cc.wmu.Unlock()
|
||||||
}
|
}
|
||||||
@ -3228,7 +3396,7 @@ func traceGotConn(req *http.Request, cc *ClientConn, reused bool) {
|
|||||||
cc.mu.Lock()
|
cc.mu.Lock()
|
||||||
ci.WasIdle = len(cc.streams) == 0 && reused
|
ci.WasIdle = len(cc.streams) == 0 && reused
|
||||||
if ci.WasIdle && !cc.lastActive.IsZero() {
|
if ci.WasIdle && !cc.lastActive.IsZero() {
|
||||||
ci.IdleTime = time.Since(cc.lastActive)
|
ci.IdleTime = cc.t.timeSince(cc.lastActive)
|
||||||
}
|
}
|
||||||
cc.mu.Unlock()
|
cc.mu.Unlock()
|
||||||
|
|
||||||
|
32
vendor/golang.org/x/net/http2/unencrypted.go
generated
vendored
Normal file
32
vendor/golang.org/x/net/http2/unencrypted.go
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2024 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.
|
||||||
|
|
||||||
|
package http2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"errors"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
const nextProtoUnencryptedHTTP2 = "unencrypted_http2"
|
||||||
|
|
||||||
|
// unencryptedNetConnFromTLSConn retrieves a net.Conn wrapped in a *tls.Conn.
|
||||||
|
//
|
||||||
|
// TLSNextProto functions accept a *tls.Conn.
|
||||||
|
//
|
||||||
|
// When passing an unencrypted HTTP/2 connection to a TLSNextProto function,
|
||||||
|
// we pass a *tls.Conn with an underlying net.Conn containing the unencrypted connection.
|
||||||
|
// To be extra careful about mistakes (accidentally dropping TLS encryption in a place
|
||||||
|
// where we want it), the tls.Conn contains a net.Conn with an UnencryptedNetConn method
|
||||||
|
// that returns the actual connection we want to use.
|
||||||
|
func unencryptedNetConnFromTLSConn(tc *tls.Conn) (net.Conn, error) {
|
||||||
|
conner, ok := tc.NetConn().(interface {
|
||||||
|
UnencryptedNetConn() net.Conn
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("http2: TLS conn unexpectedly found in unencrypted handoff")
|
||||||
|
}
|
||||||
|
return conner.UnencryptedNetConn(), nil
|
||||||
|
}
|
17
vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s
generated
vendored
Normal file
17
vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright 2024 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 darwin && amd64 && gc
|
||||||
|
|
||||||
|
#include "textflag.h"
|
||||||
|
|
||||||
|
TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_sysctl(SB)
|
||||||
|
GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_sysctlbyname(SB)
|
||||||
|
GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB)
|
61
vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go
generated
vendored
Normal file
61
vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright 2024 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 darwin && amd64 && gc
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
// darwinSupportsAVX512 checks Darwin kernel for AVX512 support via sysctl
|
||||||
|
// call (see issue 43089). It also restricts AVX512 support for Darwin to
|
||||||
|
// kernel version 21.3.0 (MacOS 12.2.0) or later (see issue 49233).
|
||||||
|
//
|
||||||
|
// Background:
|
||||||
|
// Darwin implements a special mechanism to economize on thread state when
|
||||||
|
// AVX512 specific registers are not in use. This scheme minimizes state when
|
||||||
|
// preempting threads that haven't yet used any AVX512 instructions, but adds
|
||||||
|
// special requirements to check for AVX512 hardware support at runtime (e.g.
|
||||||
|
// via sysctl call or commpage inspection). See issue 43089 and link below for
|
||||||
|
// full background:
|
||||||
|
// https://github.com/apple-oss-distributions/xnu/blob/xnu-11215.1.10/osfmk/i386/fpu.c#L214-L240
|
||||||
|
//
|
||||||
|
// Additionally, all versions of the Darwin kernel from 19.6.0 through 21.2.0
|
||||||
|
// (corresponding to MacOS 10.15.6 - 12.1) have a bug that can cause corruption
|
||||||
|
// of the AVX512 mask registers (K0-K7) upon signal return. For this reason
|
||||||
|
// AVX512 is considered unsafe to use on Darwin for kernel versions prior to
|
||||||
|
// 21.3.0, where a fix has been confirmed. See issue 49233 for full background.
|
||||||
|
func darwinSupportsAVX512() bool {
|
||||||
|
return darwinSysctlEnabled([]byte("hw.optional.avx512f\x00")) && darwinKernelVersionCheck(21, 3, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure Darwin kernel version is at least major.minor.patch, avoiding dependencies
|
||||||
|
func darwinKernelVersionCheck(major, minor, patch int) bool {
|
||||||
|
var release [256]byte
|
||||||
|
err := darwinOSRelease(&release)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var mmp [3]int
|
||||||
|
c := 0
|
||||||
|
Loop:
|
||||||
|
for _, b := range release[:] {
|
||||||
|
switch {
|
||||||
|
case b >= '0' && b <= '9':
|
||||||
|
mmp[c] = 10*mmp[c] + int(b-'0')
|
||||||
|
case b == '.':
|
||||||
|
c++
|
||||||
|
if c > 2 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case b == 0:
|
||||||
|
break Loop
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if c != 2 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return mmp[0] > major || mmp[0] == major && (mmp[1] > minor || mmp[1] == minor && mmp[2] >= patch)
|
||||||
|
}
|
4
vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
generated
vendored
4
vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
generated
vendored
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
// cpuid is implemented in cpu_x86.s for gc compiler
|
// cpuid is implemented in cpu_gc_x86.s for gc compiler
|
||||||
// and in cpu_gccgo.c for gccgo.
|
// and in cpu_gccgo.c for gccgo.
|
||||||
func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)
|
func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)
|
||||||
|
|
||||||
// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler
|
// xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler
|
||||||
// and in cpu_gccgo.c for gccgo.
|
// and in cpu_gccgo.c for gccgo.
|
||||||
func xgetbv() (eax, edx uint32)
|
func xgetbv() (eax, edx uint32)
|
||||||
|
2
vendor/golang.org/x/sys/cpu/cpu_x86.s → vendor/golang.org/x/sys/cpu/cpu_gc_x86.s
generated
vendored
2
vendor/golang.org/x/sys/cpu/cpu_x86.s → vendor/golang.org/x/sys/cpu/cpu_gc_x86.s
generated
vendored
@ -18,7 +18,7 @@ TEXT ·cpuid(SB), NOSPLIT, $0-24
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
// func xgetbv() (eax, edx uint32)
|
// func xgetbv() (eax, edx uint32)
|
||||||
TEXT ·xgetbv(SB),NOSPLIT,$0-8
|
TEXT ·xgetbv(SB), NOSPLIT, $0-8
|
||||||
MOVL $0, CX
|
MOVL $0, CX
|
||||||
XGETBV
|
XGETBV
|
||||||
MOVL AX, eax+0(FP)
|
MOVL AX, eax+0(FP)
|
6
vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go
generated
vendored
6
vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go
generated
vendored
@ -23,9 +23,3 @@ func xgetbv() (eax, edx uint32) {
|
|||||||
gccgoXgetbv(&a, &d)
|
gccgoXgetbv(&a, &d)
|
||||||
return a, d
|
return a, d
|
||||||
}
|
}
|
||||||
|
|
||||||
// gccgo doesn't build on Darwin, per:
|
|
||||||
// https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb#L76
|
|
||||||
func darwinSupportsAVX512() bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
1
vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
generated
vendored
1
vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
generated
vendored
@ -110,7 +110,6 @@ func doinit() {
|
|||||||
ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM)
|
ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM)
|
||||||
ARM64.HasDIT = isSet(hwCap, hwcap_DIT)
|
ARM64.HasDIT = isSet(hwCap, hwcap_DIT)
|
||||||
|
|
||||||
|
|
||||||
// HWCAP2 feature bits
|
// HWCAP2 feature bits
|
||||||
ARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2)
|
ARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2)
|
||||||
ARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM)
|
ARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM)
|
||||||
|
11
vendor/golang.org/x/sys/cpu/cpu_other_x86.go
generated
vendored
Normal file
11
vendor/golang.org/x/sys/cpu/cpu_other_x86.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright 2024 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 386 || amd64p32 || (amd64 && (!darwin || !gc))
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
func darwinSupportsAVX512() bool {
|
||||||
|
panic("only implemented for gc && amd64 && darwin")
|
||||||
|
}
|
6
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
6
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
@ -92,10 +92,8 @@ func archInit() {
|
|||||||
osSupportsAVX = isSet(1, eax) && isSet(2, eax)
|
osSupportsAVX = isSet(1, eax) && isSet(2, eax)
|
||||||
|
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
// Darwin doesn't save/restore AVX-512 mask registers correctly across signal handlers.
|
// Darwin requires special AVX512 checks, see cpu_darwin_x86.go
|
||||||
// Since users can't rely on mask register contents, let's not advertise AVX-512 support.
|
osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512()
|
||||||
// See issue 49233.
|
|
||||||
osSupportsAVX512 = false
|
|
||||||
} else {
|
} else {
|
||||||
// Check if OPMASK and ZMM registers have OS support.
|
// Check if OPMASK and ZMM registers have OS support.
|
||||||
osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)
|
osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)
|
||||||
|
98
vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go
generated
vendored
Normal file
98
vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go
generated
vendored
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
// Copyright 2024 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.
|
||||||
|
|
||||||
|
// Minimal copy of x/sys/unix so the cpu package can make a
|
||||||
|
// system call on Darwin without depending on x/sys/unix.
|
||||||
|
|
||||||
|
//go:build darwin && amd64 && gc
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _C_int int32
|
||||||
|
|
||||||
|
// adapted from unix.Uname() at x/sys/unix/syscall_darwin.go L419
|
||||||
|
func darwinOSRelease(release *[256]byte) error {
|
||||||
|
// from x/sys/unix/zerrors_openbsd_amd64.go
|
||||||
|
const (
|
||||||
|
CTL_KERN = 0x1
|
||||||
|
KERN_OSRELEASE = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
mib := []_C_int{CTL_KERN, KERN_OSRELEASE}
|
||||||
|
n := unsafe.Sizeof(*release)
|
||||||
|
|
||||||
|
return sysctl(mib, &release[0], &n, nil, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
type Errno = syscall.Errno
|
||||||
|
|
||||||
|
var _zero uintptr // Single-word zero for use when we need a valid pointer to 0 bytes.
|
||||||
|
|
||||||
|
// from x/sys/unix/zsyscall_darwin_amd64.go L791-807
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
if _, _, err := syscall_syscall6(
|
||||||
|
libc_sysctl_trampoline_addr,
|
||||||
|
uintptr(_p0),
|
||||||
|
uintptr(len(mib)),
|
||||||
|
uintptr(unsafe.Pointer(old)),
|
||||||
|
uintptr(unsafe.Pointer(oldlen)),
|
||||||
|
uintptr(unsafe.Pointer(new)),
|
||||||
|
uintptr(newlen),
|
||||||
|
); err != 0 {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_sysctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
// adapted from internal/cpu/cpu_arm64_darwin.go
|
||||||
|
func darwinSysctlEnabled(name []byte) bool {
|
||||||
|
out := int32(0)
|
||||||
|
nout := unsafe.Sizeof(out)
|
||||||
|
if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return out > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
var libc_sysctlbyname_trampoline_addr uintptr
|
||||||
|
|
||||||
|
// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix
|
||||||
|
func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error {
|
||||||
|
if _, _, err := syscall_syscall6(
|
||||||
|
libc_sysctlbyname_trampoline_addr,
|
||||||
|
uintptr(unsafe.Pointer(name)),
|
||||||
|
uintptr(unsafe.Pointer(old)),
|
||||||
|
uintptr(unsafe.Pointer(oldlen)),
|
||||||
|
uintptr(unsafe.Pointer(new)),
|
||||||
|
uintptr(newlen),
|
||||||
|
0,
|
||||||
|
); err != 0 {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// Implemented in the runtime package (runtime/sys_darwin.go)
|
||||||
|
func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
|
||||||
|
|
||||||
|
//go:linkname syscall_syscall6 syscall.syscall6
|
96
vendor/golang.org/x/sys/unix/ioctl_linux.go
generated
vendored
96
vendor/golang.org/x/sys/unix/ioctl_linux.go
generated
vendored
@ -58,6 +58,102 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {
|
|||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC
|
||||||
|
// association for the network device specified by ifname.
|
||||||
|
func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) {
|
||||||
|
ifr, err := NewIfreq(ifname)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO}
|
||||||
|
ifrd := ifr.withData(unsafe.Pointer(&value))
|
||||||
|
|
||||||
|
err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlGetHwTstamp retrieves the hardware timestamping configuration
|
||||||
|
// for the network device specified by ifname.
|
||||||
|
func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) {
|
||||||
|
ifr, err := NewIfreq(ifname)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
value := HwTstampConfig{}
|
||||||
|
ifrd := ifr.withData(unsafe.Pointer(&value))
|
||||||
|
|
||||||
|
err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd)
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlSetHwTstamp updates the hardware timestamping configuration for
|
||||||
|
// the network device specified by ifname.
|
||||||
|
func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error {
|
||||||
|
ifr, err := NewIfreq(ifname)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
ifrd := ifr.withData(unsafe.Pointer(cfg))
|
||||||
|
return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FdToClockID derives the clock ID from the file descriptor number
|
||||||
|
// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is
|
||||||
|
// suitable for system calls like ClockGettime.
|
||||||
|
func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) }
|
||||||
|
|
||||||
|
// IoctlPtpClockGetcaps returns the description of a given PTP device.
|
||||||
|
func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) {
|
||||||
|
var value PtpClockCaps
|
||||||
|
err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value))
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpSysOffsetPrecise returns a description of the clock
|
||||||
|
// offset compared to the system clock.
|
||||||
|
func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) {
|
||||||
|
var value PtpSysOffsetPrecise
|
||||||
|
err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value))
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpSysOffsetExtended returns an extended description of the
|
||||||
|
// clock offset compared to the system clock. The samples parameter
|
||||||
|
// specifies the desired number of measurements.
|
||||||
|
func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) {
|
||||||
|
value := PtpSysOffsetExtended{Samples: uint32(samples)}
|
||||||
|
err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value))
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpPinGetfunc returns the configuration of the specified
|
||||||
|
// I/O pin on given PTP device.
|
||||||
|
func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) {
|
||||||
|
value := PtpPinDesc{Index: uint32(index)}
|
||||||
|
err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value))
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpPinSetfunc updates configuration of the specified PTP
|
||||||
|
// I/O pin.
|
||||||
|
func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error {
|
||||||
|
return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpPeroutRequest configures the periodic output mode of the
|
||||||
|
// PTP I/O pins.
|
||||||
|
func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error {
|
||||||
|
return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r))
|
||||||
|
}
|
||||||
|
|
||||||
|
// IoctlPtpExttsRequest configures the external timestamping mode
|
||||||
|
// of the PTP I/O pins.
|
||||||
|
func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error {
|
||||||
|
return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r))
|
||||||
|
}
|
||||||
|
|
||||||
// IoctlGetWatchdogInfo fetches information about a watchdog device from the
|
// IoctlGetWatchdogInfo fetches information about a watchdog device from the
|
||||||
// Linux watchdog API. For more information, see:
|
// Linux watchdog API. For more information, see:
|
||||||
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.
|
||||||
|
12
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
12
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
@ -158,6 +158,16 @@ includes_Linux='
|
|||||||
#endif
|
#endif
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
|
// See the description in unix/linux/types.go
|
||||||
|
#if defined(__ARM_EABI__) || \
|
||||||
|
(defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \
|
||||||
|
(defined(__powerpc__) && (!defined(__powerpc64__)))
|
||||||
|
# ifdef _TIME_BITS
|
||||||
|
# undef _TIME_BITS
|
||||||
|
# endif
|
||||||
|
# define _TIME_BITS 32
|
||||||
|
#endif
|
||||||
|
|
||||||
// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of
|
// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of
|
||||||
// these structures. We just include them copied from <bits/termios.h>.
|
// these structures. We just include them copied from <bits/termios.h>.
|
||||||
#if defined(__powerpc__)
|
#if defined(__powerpc__)
|
||||||
@ -256,6 +266,7 @@ struct ltchars {
|
|||||||
#include <linux/nsfs.h>
|
#include <linux/nsfs.h>
|
||||||
#include <linux/perf_event.h>
|
#include <linux/perf_event.h>
|
||||||
#include <linux/pps.h>
|
#include <linux/pps.h>
|
||||||
|
#include <linux/ptp_clock.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
@ -527,6 +538,7 @@ ccflags="$@"
|
|||||||
$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||
|
$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||
|
||||||
$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||
|
$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||
|
||||||
$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||
|
$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||
|
||||||
|
$2 ~ /^PTP_/ ||
|
||||||
$2 ~ /^RAW_PAYLOAD_/ ||
|
$2 ~ /^RAW_PAYLOAD_/ ||
|
||||||
$2 ~ /^[US]F_/ ||
|
$2 ~ /^[US]F_/ ||
|
||||||
$2 ~ /^TP_STATUS_/ ||
|
$2 ~ /^TP_STATUS_/ ||
|
||||||
|
1
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
1
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
@ -1860,6 +1860,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
|||||||
//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error)
|
//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error)
|
||||||
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
||||||
//sys ClockGettime(clockid int32, time *Timespec) (err error)
|
//sys ClockGettime(clockid int32, time *Timespec) (err error)
|
||||||
|
//sys ClockSettime(clockid int32, time *Timespec) (err error)
|
||||||
//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
|
//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
|
||||||
//sys Close(fd int) (err error)
|
//sys Close(fd int) (err error)
|
||||||
//sys CloseRange(first uint, last uint, flags uint) (err error)
|
//sys CloseRange(first uint, last uint, flags uint) (err error)
|
||||||
|
104
vendor/golang.org/x/sys/unix/syscall_zos_s390x.go
generated
vendored
104
vendor/golang.org/x/sys/unix/syscall_zos_s390x.go
generated
vendored
@ -768,6 +768,15 @@ func Munmap(b []byte) (err error) {
|
|||||||
return mapper.Munmap(b)
|
return mapper.Munmap(b)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) {
|
||||||
|
xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset)
|
||||||
|
return unsafe.Pointer(xaddr), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) {
|
||||||
|
return mapper.munmap(uintptr(addr), length)
|
||||||
|
}
|
||||||
|
|
||||||
//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A
|
//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A
|
||||||
//sysnb Getgid() (gid int)
|
//sysnb Getgid() (gid int)
|
||||||
//sysnb Getpid() (pid int)
|
//sysnb Getpid() (pid int)
|
||||||
@ -816,10 +825,10 @@ func Lstat(path string, stat *Stat_t) (err error) {
|
|||||||
// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/
|
// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/
|
||||||
func isSpecialPath(path []byte) (v bool) {
|
func isSpecialPath(path []byte) (v bool) {
|
||||||
var special = [4][8]byte{
|
var special = [4][8]byte{
|
||||||
[8]byte{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},
|
{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'},
|
||||||
[8]byte{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},
|
{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'},
|
||||||
[8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},
|
{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'},
|
||||||
[8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}
|
{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}}
|
||||||
|
|
||||||
var i, j int
|
var i, j int
|
||||||
for i = 0; i < len(special); i++ {
|
for i = 0; i < len(special); i++ {
|
||||||
@ -3115,3 +3124,90 @@ func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) {
|
|||||||
//sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT
|
//sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT
|
||||||
//sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT
|
//sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT
|
||||||
//sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT
|
//sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT
|
||||||
|
|
||||||
|
func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) {
|
||||||
|
runtime.EnterSyscall()
|
||||||
|
r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg)
|
||||||
|
runtime.ExitSyscall()
|
||||||
|
val = int(r0)
|
||||||
|
if int64(r0) == -1 {
|
||||||
|
err = errnoErr2(e1, e2)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) {
|
||||||
|
switch op.(type) {
|
||||||
|
case *Flock_t:
|
||||||
|
err = FcntlFlock(fd, cmd, op.(*Flock_t))
|
||||||
|
if err != nil {
|
||||||
|
ret = -1
|
||||||
|
}
|
||||||
|
return
|
||||||
|
case int:
|
||||||
|
return FcntlInt(fd, cmd, op.(int))
|
||||||
|
case *F_cnvrt:
|
||||||
|
return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt))))
|
||||||
|
case unsafe.Pointer:
|
||||||
|
return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer)))
|
||||||
|
default:
|
||||||
|
return -1, EINVAL
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
return sendfile(outfd, infd, offset, count)
|
||||||
|
}
|
||||||
|
|
||||||
|
func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
|
||||||
|
// TODO: use LE call instead if the call is implemented
|
||||||
|
originalOffset, err := Seek(infd, 0, SEEK_CUR)
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
//start reading data from in_fd
|
||||||
|
if offset != nil {
|
||||||
|
_, err := Seek(infd, *offset, SEEK_SET)
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buf := make([]byte, count)
|
||||||
|
readBuf := make([]byte, 0)
|
||||||
|
var n int = 0
|
||||||
|
for i := 0; i < count; i += n {
|
||||||
|
n, err := Read(infd, buf)
|
||||||
|
if n == 0 {
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
} else { // EOF
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
readBuf = append(readBuf, buf...)
|
||||||
|
buf = buf[0:0]
|
||||||
|
}
|
||||||
|
|
||||||
|
n2, err := Write(outfd, readBuf)
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
|
||||||
|
//When sendfile() returns, this variable will be set to the
|
||||||
|
// offset of the byte following the last byte that was read.
|
||||||
|
if offset != nil {
|
||||||
|
*offset = *offset + int64(n)
|
||||||
|
// If offset is not NULL, then sendfile() does not modify the file
|
||||||
|
// offset of in_fd
|
||||||
|
_, err := Seek(infd, originalOffset, SEEK_SET)
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n2, nil
|
||||||
|
}
|
||||||
|
22
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
22
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
@ -2625,6 +2625,28 @@ const (
|
|||||||
PR_UNALIGN_NOPRINT = 0x1
|
PR_UNALIGN_NOPRINT = 0x1
|
||||||
PR_UNALIGN_SIGBUS = 0x2
|
PR_UNALIGN_SIGBUS = 0x2
|
||||||
PSTOREFS_MAGIC = 0x6165676c
|
PSTOREFS_MAGIC = 0x6165676c
|
||||||
|
PTP_CLK_MAGIC = '='
|
||||||
|
PTP_ENABLE_FEATURE = 0x1
|
||||||
|
PTP_EXTTS_EDGES = 0x6
|
||||||
|
PTP_EXTTS_EVENT_VALID = 0x1
|
||||||
|
PTP_EXTTS_V1_VALID_FLAGS = 0x7
|
||||||
|
PTP_EXTTS_VALID_FLAGS = 0x1f
|
||||||
|
PTP_EXT_OFFSET = 0x10
|
||||||
|
PTP_FALLING_EDGE = 0x4
|
||||||
|
PTP_MAX_SAMPLES = 0x19
|
||||||
|
PTP_PEROUT_DUTY_CYCLE = 0x2
|
||||||
|
PTP_PEROUT_ONE_SHOT = 0x1
|
||||||
|
PTP_PEROUT_PHASE = 0x4
|
||||||
|
PTP_PEROUT_V1_VALID_FLAGS = 0x0
|
||||||
|
PTP_PEROUT_VALID_FLAGS = 0x7
|
||||||
|
PTP_PIN_GETFUNC = 0xc0603d06
|
||||||
|
PTP_PIN_GETFUNC2 = 0xc0603d0f
|
||||||
|
PTP_RISING_EDGE = 0x2
|
||||||
|
PTP_STRICT_FLAGS = 0x8
|
||||||
|
PTP_SYS_OFFSET_EXTENDED = 0xc4c03d09
|
||||||
|
PTP_SYS_OFFSET_EXTENDED2 = 0xc4c03d12
|
||||||
|
PTP_SYS_OFFSET_PRECISE = 0xc0403d08
|
||||||
|
PTP_SYS_OFFSET_PRECISE2 = 0xc0403d11
|
||||||
PTRACE_ATTACH = 0x10
|
PTRACE_ATTACH = 0x10
|
||||||
PTRACE_CONT = 0x7
|
PTRACE_CONT = 0x7
|
||||||
PTRACE_DETACH = 0x11
|
PTRACE_DETACH = 0x11
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
@ -237,6 +237,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffff
|
PR_SET_PTRACER_ANY = 0xffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETFPXREGS = 0x12
|
PTRACE_GETFPXREGS = 0x12
|
||||||
PTRACE_GET_THREAD_AREA = 0x19
|
PTRACE_GET_THREAD_AREA = 0x19
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
@ -237,6 +237,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_ARCH_PRCTL = 0x1e
|
PTRACE_ARCH_PRCTL = 0x1e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETFPXREGS = 0x12
|
PTRACE_GETFPXREGS = 0x12
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffff
|
PR_SET_PTRACER_ANY = 0xffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_GETCRUNCHREGS = 0x19
|
PTRACE_GETCRUNCHREGS = 0x19
|
||||||
PTRACE_GETFDPIC = 0x1f
|
PTRACE_GETFDPIC = 0x1f
|
||||||
PTRACE_GETFDPIC_EXEC = 0x0
|
PTRACE_GETFDPIC_EXEC = 0x0
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
@ -240,6 +240,20 @@ const (
|
|||||||
PROT_BTI = 0x10
|
PROT_BTI = 0x10
|
||||||
PROT_MTE = 0x20
|
PROT_MTE = 0x20
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_PEEKMTETAGS = 0x21
|
PTRACE_PEEKMTETAGS = 0x21
|
||||||
PTRACE_POKEMTETAGS = 0x22
|
PTRACE_POKEMTETAGS = 0x22
|
||||||
PTRACE_SYSEMU = 0x1f
|
PTRACE_SYSEMU = 0x1f
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
generated
vendored
@ -238,6 +238,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_SYSEMU = 0x1f
|
PTRACE_SYSEMU = 0x1f
|
||||||
PTRACE_SYSEMU_SINGLESTEP = 0x20
|
PTRACE_SYSEMU_SINGLESTEP = 0x20
|
||||||
RLIMIT_AS = 0x9
|
RLIMIT_AS = 0x9
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x20007434
|
PPPIOCUNBRIDGECHAN = 0x20007434
|
||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffff
|
PR_SET_PTRACER_ANY = 0xffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GET_THREAD_AREA = 0x19
|
PTRACE_GET_THREAD_AREA = 0x19
|
||||||
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x20007434
|
PPPIOCUNBRIDGECHAN = 0x20007434
|
||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GET_THREAD_AREA = 0x19
|
PTRACE_GET_THREAD_AREA = 0x19
|
||||||
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x20007434
|
PPPIOCUNBRIDGECHAN = 0x20007434
|
||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GET_THREAD_AREA = 0x19
|
PTRACE_GET_THREAD_AREA = 0x19
|
||||||
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x20007434
|
PPPIOCUNBRIDGECHAN = 0x20007434
|
||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffff
|
PR_SET_PTRACER_ANY = 0xffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GET_THREAD_AREA = 0x19
|
PTRACE_GET_THREAD_AREA = 0x19
|
||||||
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
PTRACE_GET_THREAD_AREA_3264 = 0xc4
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
generated
vendored
@ -237,6 +237,20 @@ const (
|
|||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PROT_SAO = 0x10
|
PROT_SAO = 0x10
|
||||||
PR_SET_PTRACER_ANY = 0xffffffff
|
PR_SET_PTRACER_ANY = 0xffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETEVRREGS = 0x14
|
PTRACE_GETEVRREGS = 0x14
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETREGS64 = 0x16
|
PTRACE_GETREGS64 = 0x16
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
@ -237,6 +237,20 @@ const (
|
|||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PROT_SAO = 0x10
|
PROT_SAO = 0x10
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETEVRREGS = 0x14
|
PTRACE_GETEVRREGS = 0x14
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETREGS64 = 0x16
|
PTRACE_GETREGS64 = 0x16
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
@ -237,6 +237,20 @@ const (
|
|||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PROT_SAO = 0x10
|
PROT_SAO = 0x10
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETEVRREGS = 0x14
|
PTRACE_GETEVRREGS = 0x14
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETREGS64 = 0x16
|
PTRACE_GETREGS64 = 0x16
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_GETFDPIC = 0x21
|
PTRACE_GETFDPIC = 0x21
|
||||||
PTRACE_GETFDPIC_EXEC = 0x0
|
PTRACE_GETFDPIC_EXEC = 0x0
|
||||||
PTRACE_GETFDPIC_INTERP = 0x1
|
PTRACE_GETFDPIC_INTERP = 0x1
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
@ -234,6 +234,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x7434
|
PPPIOCUNBRIDGECHAN = 0x7434
|
||||||
PPPIOCXFERUNIT = 0x744e
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x80503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x80503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x40043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x40043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x40103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x40103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x3d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x40043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x40383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x40383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x40603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x40603d10
|
||||||
|
PTP_SYS_OFFSET = 0x43403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x43403d0e
|
||||||
PTRACE_DISABLE_TE = 0x5010
|
PTRACE_DISABLE_TE = 0x5010
|
||||||
PTRACE_ENABLE_TE = 0x5009
|
PTRACE_ENABLE_TE = 0x5009
|
||||||
PTRACE_GET_LAST_BREAK = 0x5006
|
PTRACE_GET_LAST_BREAK = 0x5006
|
||||||
|
14
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
14
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
@ -239,6 +239,20 @@ const (
|
|||||||
PPPIOCUNBRIDGECHAN = 0x20007434
|
PPPIOCUNBRIDGECHAN = 0x20007434
|
||||||
PPPIOCXFERUNIT = 0x2000744e
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
PR_SET_PTRACER_ANY = 0xffffffffffffffff
|
||||||
|
PTP_CLOCK_GETCAPS = 0x40503d01
|
||||||
|
PTP_CLOCK_GETCAPS2 = 0x40503d0a
|
||||||
|
PTP_ENABLE_PPS = 0x80043d04
|
||||||
|
PTP_ENABLE_PPS2 = 0x80043d0d
|
||||||
|
PTP_EXTTS_REQUEST = 0x80103d02
|
||||||
|
PTP_EXTTS_REQUEST2 = 0x80103d0b
|
||||||
|
PTP_MASK_CLEAR_ALL = 0x20003d13
|
||||||
|
PTP_MASK_EN_SINGLE = 0x80043d14
|
||||||
|
PTP_PEROUT_REQUEST = 0x80383d03
|
||||||
|
PTP_PEROUT_REQUEST2 = 0x80383d0c
|
||||||
|
PTP_PIN_SETFUNC = 0x80603d07
|
||||||
|
PTP_PIN_SETFUNC2 = 0x80603d10
|
||||||
|
PTP_SYS_OFFSET = 0x83403d05
|
||||||
|
PTP_SYS_OFFSET2 = 0x83403d0e
|
||||||
PTRACE_GETFPAREGS = 0x14
|
PTRACE_GETFPAREGS = 0x14
|
||||||
PTRACE_GETFPREGS = 0xe
|
PTRACE_GETFPREGS = 0xe
|
||||||
PTRACE_GETFPREGS64 = 0x19
|
PTRACE_GETFPREGS64 = 0x19
|
||||||
|
10
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
10
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
@ -592,6 +592,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ClockSettime(clockid int32, time *Timespec) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {
|
func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {
|
||||||
_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)
|
_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
120
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
120
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
@ -1752,12 +1752,6 @@ const (
|
|||||||
IFLA_IPVLAN_UNSPEC = 0x0
|
IFLA_IPVLAN_UNSPEC = 0x0
|
||||||
IFLA_IPVLAN_MODE = 0x1
|
IFLA_IPVLAN_MODE = 0x1
|
||||||
IFLA_IPVLAN_FLAGS = 0x2
|
IFLA_IPVLAN_FLAGS = 0x2
|
||||||
NETKIT_NEXT = -0x1
|
|
||||||
NETKIT_PASS = 0x0
|
|
||||||
NETKIT_DROP = 0x2
|
|
||||||
NETKIT_REDIRECT = 0x7
|
|
||||||
NETKIT_L2 = 0x0
|
|
||||||
NETKIT_L3 = 0x1
|
|
||||||
IFLA_NETKIT_UNSPEC = 0x0
|
IFLA_NETKIT_UNSPEC = 0x0
|
||||||
IFLA_NETKIT_PEER_INFO = 0x1
|
IFLA_NETKIT_PEER_INFO = 0x1
|
||||||
IFLA_NETKIT_PRIMARY = 0x2
|
IFLA_NETKIT_PRIMARY = 0x2
|
||||||
@ -1796,6 +1790,7 @@ const (
|
|||||||
IFLA_VXLAN_DF = 0x1d
|
IFLA_VXLAN_DF = 0x1d
|
||||||
IFLA_VXLAN_VNIFILTER = 0x1e
|
IFLA_VXLAN_VNIFILTER = 0x1e
|
||||||
IFLA_VXLAN_LOCALBYPASS = 0x1f
|
IFLA_VXLAN_LOCALBYPASS = 0x1f
|
||||||
|
IFLA_VXLAN_LABEL_POLICY = 0x20
|
||||||
IFLA_GENEVE_UNSPEC = 0x0
|
IFLA_GENEVE_UNSPEC = 0x0
|
||||||
IFLA_GENEVE_ID = 0x1
|
IFLA_GENEVE_ID = 0x1
|
||||||
IFLA_GENEVE_REMOTE = 0x2
|
IFLA_GENEVE_REMOTE = 0x2
|
||||||
@ -1825,6 +1820,8 @@ const (
|
|||||||
IFLA_GTP_ROLE = 0x4
|
IFLA_GTP_ROLE = 0x4
|
||||||
IFLA_GTP_CREATE_SOCKETS = 0x5
|
IFLA_GTP_CREATE_SOCKETS = 0x5
|
||||||
IFLA_GTP_RESTART_COUNT = 0x6
|
IFLA_GTP_RESTART_COUNT = 0x6
|
||||||
|
IFLA_GTP_LOCAL = 0x7
|
||||||
|
IFLA_GTP_LOCAL6 = 0x8
|
||||||
IFLA_BOND_UNSPEC = 0x0
|
IFLA_BOND_UNSPEC = 0x0
|
||||||
IFLA_BOND_MODE = 0x1
|
IFLA_BOND_MODE = 0x1
|
||||||
IFLA_BOND_ACTIVE_SLAVE = 0x2
|
IFLA_BOND_ACTIVE_SLAVE = 0x2
|
||||||
@ -1857,6 +1854,7 @@ const (
|
|||||||
IFLA_BOND_AD_LACP_ACTIVE = 0x1d
|
IFLA_BOND_AD_LACP_ACTIVE = 0x1d
|
||||||
IFLA_BOND_MISSED_MAX = 0x1e
|
IFLA_BOND_MISSED_MAX = 0x1e
|
||||||
IFLA_BOND_NS_IP6_TARGET = 0x1f
|
IFLA_BOND_NS_IP6_TARGET = 0x1f
|
||||||
|
IFLA_BOND_COUPLED_CONTROL = 0x20
|
||||||
IFLA_BOND_AD_INFO_UNSPEC = 0x0
|
IFLA_BOND_AD_INFO_UNSPEC = 0x0
|
||||||
IFLA_BOND_AD_INFO_AGGREGATOR = 0x1
|
IFLA_BOND_AD_INFO_AGGREGATOR = 0x1
|
||||||
IFLA_BOND_AD_INFO_NUM_PORTS = 0x2
|
IFLA_BOND_AD_INFO_NUM_PORTS = 0x2
|
||||||
@ -1925,6 +1923,7 @@ const (
|
|||||||
IFLA_HSR_SEQ_NR = 0x5
|
IFLA_HSR_SEQ_NR = 0x5
|
||||||
IFLA_HSR_VERSION = 0x6
|
IFLA_HSR_VERSION = 0x6
|
||||||
IFLA_HSR_PROTOCOL = 0x7
|
IFLA_HSR_PROTOCOL = 0x7
|
||||||
|
IFLA_HSR_INTERLINK = 0x8
|
||||||
IFLA_STATS_UNSPEC = 0x0
|
IFLA_STATS_UNSPEC = 0x0
|
||||||
IFLA_STATS_LINK_64 = 0x1
|
IFLA_STATS_LINK_64 = 0x1
|
||||||
IFLA_STATS_LINK_XSTATS = 0x2
|
IFLA_STATS_LINK_XSTATS = 0x2
|
||||||
@ -1977,6 +1976,15 @@ const (
|
|||||||
IFLA_DSA_MASTER = 0x1
|
IFLA_DSA_MASTER = 0x1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
NETKIT_NEXT = -0x1
|
||||||
|
NETKIT_PASS = 0x0
|
||||||
|
NETKIT_DROP = 0x2
|
||||||
|
NETKIT_REDIRECT = 0x7
|
||||||
|
NETKIT_L2 = 0x0
|
||||||
|
NETKIT_L3 = 0x1
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
NF_INET_PRE_ROUTING = 0x0
|
NF_INET_PRE_ROUTING = 0x0
|
||||||
NF_INET_LOCAL_IN = 0x1
|
NF_INET_LOCAL_IN = 0x1
|
||||||
@ -4110,6 +4118,106 @@ type EthtoolDrvinfo struct {
|
|||||||
Regdump_len uint32
|
Regdump_len uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type EthtoolTsInfo struct {
|
||||||
|
Cmd uint32
|
||||||
|
So_timestamping uint32
|
||||||
|
Phc_index int32
|
||||||
|
Tx_types uint32
|
||||||
|
Tx_reserved [3]uint32
|
||||||
|
Rx_filters uint32
|
||||||
|
Rx_reserved [3]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type HwTstampConfig struct {
|
||||||
|
Flags int32
|
||||||
|
Tx_type int32
|
||||||
|
Rx_filter int32
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
HWTSTAMP_FILTER_NONE = 0x0
|
||||||
|
HWTSTAMP_FILTER_ALL = 0x1
|
||||||
|
HWTSTAMP_FILTER_SOME = 0x2
|
||||||
|
HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3
|
||||||
|
HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6
|
||||||
|
HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9
|
||||||
|
HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
HWTSTAMP_TX_OFF = 0x0
|
||||||
|
HWTSTAMP_TX_ON = 0x1
|
||||||
|
HWTSTAMP_TX_ONESTEP_SYNC = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
PtpClockCaps struct {
|
||||||
|
Max_adj int32
|
||||||
|
N_alarm int32
|
||||||
|
N_ext_ts int32
|
||||||
|
N_per_out int32
|
||||||
|
Pps int32
|
||||||
|
N_pins int32
|
||||||
|
Cross_timestamping int32
|
||||||
|
Adjust_phase int32
|
||||||
|
Max_phase_adj int32
|
||||||
|
Rsv [11]int32
|
||||||
|
}
|
||||||
|
PtpClockTime struct {
|
||||||
|
Sec int64
|
||||||
|
Nsec uint32
|
||||||
|
Reserved uint32
|
||||||
|
}
|
||||||
|
PtpExttsEvent struct {
|
||||||
|
T PtpClockTime
|
||||||
|
Index uint32
|
||||||
|
Flags uint32
|
||||||
|
Rsv [2]uint32
|
||||||
|
}
|
||||||
|
PtpExttsRequest struct {
|
||||||
|
Index uint32
|
||||||
|
Flags uint32
|
||||||
|
Rsv [2]uint32
|
||||||
|
}
|
||||||
|
PtpPeroutRequest struct {
|
||||||
|
StartOrPhase PtpClockTime
|
||||||
|
Period PtpClockTime
|
||||||
|
Index uint32
|
||||||
|
Flags uint32
|
||||||
|
On PtpClockTime
|
||||||
|
}
|
||||||
|
PtpPinDesc struct {
|
||||||
|
Name [64]byte
|
||||||
|
Index uint32
|
||||||
|
Func uint32
|
||||||
|
Chan uint32
|
||||||
|
Rsv [5]uint32
|
||||||
|
}
|
||||||
|
PtpSysOffset struct {
|
||||||
|
Samples uint32
|
||||||
|
Rsv [3]uint32
|
||||||
|
Ts [51]PtpClockTime
|
||||||
|
}
|
||||||
|
PtpSysOffsetExtended struct {
|
||||||
|
Samples uint32
|
||||||
|
Rsv [3]uint32
|
||||||
|
Ts [25][3]PtpClockTime
|
||||||
|
}
|
||||||
|
PtpSysOffsetPrecise struct {
|
||||||
|
Device PtpClockTime
|
||||||
|
Realtime PtpClockTime
|
||||||
|
Monoraw PtpClockTime
|
||||||
|
Rsv [4]uint32
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PTP_PF_NONE = 0x0
|
||||||
|
PTP_PF_EXTTS = 0x1
|
||||||
|
PTP_PF_PEROUT = 0x2
|
||||||
|
PTP_PF_PHYSYNC = 0x3
|
||||||
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
HIDRawReportDescriptor struct {
|
HIDRawReportDescriptor struct {
|
||||||
Size uint32
|
Size uint32
|
||||||
|
6
vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go
generated
vendored
6
vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go
generated
vendored
@ -377,6 +377,12 @@ type Flock_t struct {
|
|||||||
Pid int32
|
Pid int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type F_cnvrt struct {
|
||||||
|
Cvtcmd int32
|
||||||
|
Pccsid int16
|
||||||
|
Fccsid int16
|
||||||
|
}
|
||||||
|
|
||||||
type Termios struct {
|
type Termios struct {
|
||||||
Cflag uint32
|
Cflag uint32
|
||||||
Iflag uint32
|
Iflag uint32
|
||||||
|
34
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
34
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
@ -725,20 +725,12 @@ func DurationSinceBoot() time.Duration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Ftruncate(fd Handle, length int64) (err error) {
|
func Ftruncate(fd Handle, length int64) (err error) {
|
||||||
curoffset, e := Seek(fd, 0, 1)
|
type _FILE_END_OF_FILE_INFO struct {
|
||||||
if e != nil {
|
EndOfFile int64
|
||||||
return e
|
|
||||||
}
|
}
|
||||||
defer Seek(fd, curoffset, 0)
|
var info _FILE_END_OF_FILE_INFO
|
||||||
_, e = Seek(fd, length, 0)
|
info.EndOfFile = length
|
||||||
if e != nil {
|
return SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info)))
|
||||||
return e
|
|
||||||
}
|
|
||||||
e = SetEndOfFile(fd)
|
|
||||||
if e != nil {
|
|
||||||
return e
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Gettimeofday(tv *Timeval) (err error) {
|
func Gettimeofday(tv *Timeval) (err error) {
|
||||||
@ -894,6 +886,11 @@ const socket_error = uintptr(^uint32(0))
|
|||||||
//sys GetACP() (acp uint32) = kernel32.GetACP
|
//sys GetACP() (acp uint32) = kernel32.GetACP
|
||||||
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
||||||
//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx
|
//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx
|
||||||
|
//sys GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex
|
||||||
|
//sys GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry
|
||||||
|
//sys NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange
|
||||||
|
//sys NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange
|
||||||
|
//sys CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2
|
||||||
|
|
||||||
// For testing: clients can set this flag to force
|
// For testing: clients can set this flag to force
|
||||||
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
||||||
@ -1685,13 +1682,16 @@ func (s NTStatus) Error() string {
|
|||||||
// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for
|
// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for
|
||||||
// the more common *uint16 string type.
|
// the more common *uint16 string type.
|
||||||
func NewNTUnicodeString(s string) (*NTUnicodeString, error) {
|
func NewNTUnicodeString(s string) (*NTUnicodeString, error) {
|
||||||
var u NTUnicodeString
|
s16, err := UTF16FromString(s)
|
||||||
s16, err := UTF16PtrFromString(s)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
RtlInitUnicodeString(&u, s16)
|
n := uint16(len(s16) * 2)
|
||||||
return &u, nil
|
return &NTUnicodeString{
|
||||||
|
Length: n - 2, // subtract 2 bytes for the NULL terminator
|
||||||
|
MaximumLength: n,
|
||||||
|
Buffer: &s16[0],
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.
|
// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.
|
||||||
|
126
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
126
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
@ -2203,6 +2203,132 @@ const (
|
|||||||
IfOperStatusLowerLayerDown = 7
|
IfOperStatusLowerLayerDown = 7
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
IF_MAX_PHYS_ADDRESS_LENGTH = 32
|
||||||
|
IF_MAX_STRING_SIZE = 256
|
||||||
|
)
|
||||||
|
|
||||||
|
// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or
|
||||||
|
// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex.
|
||||||
|
const (
|
||||||
|
MibIfEntryNormal = 0
|
||||||
|
MibIfEntryNormalWithoutStatistics = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or
|
||||||
|
// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type.
|
||||||
|
const (
|
||||||
|
MibParameterNotification = 0
|
||||||
|
MibAddInstance = 1
|
||||||
|
MibDeleteInstance = 2
|
||||||
|
MibInitialNotification = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// MibIfRow2 stores information about a particular interface. See
|
||||||
|
// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2.
|
||||||
|
type MibIfRow2 struct {
|
||||||
|
InterfaceLuid uint64
|
||||||
|
InterfaceIndex uint32
|
||||||
|
InterfaceGuid GUID
|
||||||
|
Alias [IF_MAX_STRING_SIZE + 1]uint16
|
||||||
|
Description [IF_MAX_STRING_SIZE + 1]uint16
|
||||||
|
PhysicalAddressLength uint32
|
||||||
|
PhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
|
||||||
|
PermanentPhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8
|
||||||
|
Mtu uint32
|
||||||
|
Type uint32
|
||||||
|
TunnelType uint32
|
||||||
|
MediaType uint32
|
||||||
|
PhysicalMediumType uint32
|
||||||
|
AccessType uint32
|
||||||
|
DirectionType uint32
|
||||||
|
InterfaceAndOperStatusFlags uint8
|
||||||
|
OperStatus uint32
|
||||||
|
AdminStatus uint32
|
||||||
|
MediaConnectState uint32
|
||||||
|
NetworkGuid GUID
|
||||||
|
ConnectionType uint32
|
||||||
|
TransmitLinkSpeed uint64
|
||||||
|
ReceiveLinkSpeed uint64
|
||||||
|
InOctets uint64
|
||||||
|
InUcastPkts uint64
|
||||||
|
InNUcastPkts uint64
|
||||||
|
InDiscards uint64
|
||||||
|
InErrors uint64
|
||||||
|
InUnknownProtos uint64
|
||||||
|
InUcastOctets uint64
|
||||||
|
InMulticastOctets uint64
|
||||||
|
InBroadcastOctets uint64
|
||||||
|
OutOctets uint64
|
||||||
|
OutUcastPkts uint64
|
||||||
|
OutNUcastPkts uint64
|
||||||
|
OutDiscards uint64
|
||||||
|
OutErrors uint64
|
||||||
|
OutUcastOctets uint64
|
||||||
|
OutMulticastOctets uint64
|
||||||
|
OutBroadcastOctets uint64
|
||||||
|
OutQLen uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See
|
||||||
|
// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row.
|
||||||
|
type MibUnicastIpAddressRow struct {
|
||||||
|
Address RawSockaddrInet6 // SOCKADDR_INET union
|
||||||
|
InterfaceLuid uint64
|
||||||
|
InterfaceIndex uint32
|
||||||
|
PrefixOrigin uint32
|
||||||
|
SuffixOrigin uint32
|
||||||
|
ValidLifetime uint32
|
||||||
|
PreferredLifetime uint32
|
||||||
|
OnLinkPrefixLength uint8
|
||||||
|
SkipAsSource uint8
|
||||||
|
DadState uint32
|
||||||
|
ScopeId uint32
|
||||||
|
CreationTimeStamp Filetime
|
||||||
|
}
|
||||||
|
|
||||||
|
const ScopeLevelCount = 16
|
||||||
|
|
||||||
|
// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface.
|
||||||
|
// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row.
|
||||||
|
type MibIpInterfaceRow struct {
|
||||||
|
Family uint16
|
||||||
|
InterfaceLuid uint64
|
||||||
|
InterfaceIndex uint32
|
||||||
|
MaxReassemblySize uint32
|
||||||
|
InterfaceIdentifier uint64
|
||||||
|
MinRouterAdvertisementInterval uint32
|
||||||
|
MaxRouterAdvertisementInterval uint32
|
||||||
|
AdvertisingEnabled uint8
|
||||||
|
ForwardingEnabled uint8
|
||||||
|
WeakHostSend uint8
|
||||||
|
WeakHostReceive uint8
|
||||||
|
UseAutomaticMetric uint8
|
||||||
|
UseNeighborUnreachabilityDetection uint8
|
||||||
|
ManagedAddressConfigurationSupported uint8
|
||||||
|
OtherStatefulConfigurationSupported uint8
|
||||||
|
AdvertiseDefaultRoute uint8
|
||||||
|
RouterDiscoveryBehavior uint32
|
||||||
|
DadTransmits uint32
|
||||||
|
BaseReachableTime uint32
|
||||||
|
RetransmitTime uint32
|
||||||
|
PathMtuDiscoveryTimeout uint32
|
||||||
|
LinkLocalAddressBehavior uint32
|
||||||
|
LinkLocalAddressTimeout uint32
|
||||||
|
ZoneIndices [ScopeLevelCount]uint32
|
||||||
|
SitePrefixLength uint32
|
||||||
|
Metric uint32
|
||||||
|
NlMtu uint32
|
||||||
|
Connected uint8
|
||||||
|
SupportsWakeUpPatterns uint8
|
||||||
|
SupportsNeighborDiscovery uint8
|
||||||
|
SupportsRouterDiscovery uint8
|
||||||
|
ReachableTime uint32
|
||||||
|
TransmitOffload uint32
|
||||||
|
ReceiveOffload uint32
|
||||||
|
DisableDefaultRoutes uint8
|
||||||
|
}
|
||||||
|
|
||||||
// Console related constants used for the mode parameter to SetConsoleMode. See
|
// Console related constants used for the mode parameter to SetConsoleMode. See
|
||||||
// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
|
// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
|
||||||
|
|
||||||
|
53
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
53
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
@ -181,10 +181,15 @@ var (
|
|||||||
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
||||||
procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute")
|
procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute")
|
||||||
procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute")
|
procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute")
|
||||||
|
procCancelMibChangeNotify2 = modiphlpapi.NewProc("CancelMibChangeNotify2")
|
||||||
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
||||||
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
||||||
procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx")
|
procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx")
|
||||||
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
||||||
|
procGetIfEntry2Ex = modiphlpapi.NewProc("GetIfEntry2Ex")
|
||||||
|
procGetUnicastIpAddressEntry = modiphlpapi.NewProc("GetUnicastIpAddressEntry")
|
||||||
|
procNotifyIpInterfaceChange = modiphlpapi.NewProc("NotifyIpInterfaceChange")
|
||||||
|
procNotifyUnicastIpAddressChange = modiphlpapi.NewProc("NotifyUnicastIpAddressChange")
|
||||||
procAddDllDirectory = modkernel32.NewProc("AddDllDirectory")
|
procAddDllDirectory = modkernel32.NewProc("AddDllDirectory")
|
||||||
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
||||||
procCancelIo = modkernel32.NewProc("CancelIo")
|
procCancelIo = modkernel32.NewProc("CancelIo")
|
||||||
@ -1606,6 +1611,14 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {
|
||||||
|
r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle))
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
|
func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
|
||||||
r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
|
r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@ -1638,6 +1651,46 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {
|
||||||
|
r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row)))
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {
|
||||||
|
r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row)))
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {
|
||||||
|
var _p0 uint32
|
||||||
|
if initialNotification {
|
||||||
|
_p0 = 1
|
||||||
|
}
|
||||||
|
r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) {
|
||||||
|
var _p0 uint32
|
||||||
|
if initialNotification {
|
||||||
|
_p0 = 1
|
||||||
|
}
|
||||||
|
r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func AddDllDirectory(path *uint16) (cookie uintptr, err error) {
|
func AddDllDirectory(path *uint16) (cookie uintptr, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
|
r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
|
||||||
cookie = uintptr(r0)
|
cookie = uintptr(r0)
|
||||||
|
11
vendor/golang.org/x/term/README.md
generated
vendored
11
vendor/golang.org/x/term/README.md
generated
vendored
@ -4,16 +4,13 @@
|
|||||||
|
|
||||||
This repository provides Go terminal and console support packages.
|
This repository provides Go terminal and console support packages.
|
||||||
|
|
||||||
## Download/Install
|
|
||||||
|
|
||||||
The easiest way to install is to run `go get -u golang.org/x/term`. You can
|
|
||||||
also manually git clone the repository to `$GOPATH/src/golang.org/x/term`.
|
|
||||||
|
|
||||||
## Report Issues / Send Patches
|
## Report Issues / Send Patches
|
||||||
|
|
||||||
This repository uses Gerrit for code changes. To learn how to submit changes to
|
This repository uses Gerrit for code changes. To learn how to submit changes to
|
||||||
this repository, see https://golang.org/doc/contribute.html.
|
this repository, see https://go.dev/doc/contribute.
|
||||||
|
|
||||||
|
The git repository is https://go.googlesource.com/term.
|
||||||
|
|
||||||
The main issue tracker for the term repository is located at
|
The main issue tracker for the term repository is located at
|
||||||
https://github.com/golang/go/issues. Prefix your issue with "x/term:" in the
|
https://go.dev/issues. Prefix your issue with "x/term:" in the
|
||||||
subject line, so it is easy to find.
|
subject line, so it is easy to find.
|
||||||
|
12
vendor/modules.txt
vendored
12
vendor/modules.txt
vendored
@ -726,7 +726,7 @@ go.uber.org/zap/internal/pool
|
|||||||
go.uber.org/zap/internal/stacktrace
|
go.uber.org/zap/internal/stacktrace
|
||||||
go.uber.org/zap/zapcore
|
go.uber.org/zap/zapcore
|
||||||
go.uber.org/zap/zapgrpc
|
go.uber.org/zap/zapgrpc
|
||||||
# golang.org/x/crypto v0.28.0
|
# golang.org/x/crypto v0.29.0
|
||||||
## explicit; go 1.20
|
## explicit; go 1.20
|
||||||
golang.org/x/crypto/argon2
|
golang.org/x/crypto/argon2
|
||||||
golang.org/x/crypto/blake2b
|
golang.org/x/crypto/blake2b
|
||||||
@ -751,7 +751,7 @@ golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
|
|||||||
golang.org/x/exp/constraints
|
golang.org/x/exp/constraints
|
||||||
golang.org/x/exp/maps
|
golang.org/x/exp/maps
|
||||||
golang.org/x/exp/slices
|
golang.org/x/exp/slices
|
||||||
# golang.org/x/net v0.30.0
|
# golang.org/x/net v0.31.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/net/context
|
golang.org/x/net/context
|
||||||
golang.org/x/net/html
|
golang.org/x/net/html
|
||||||
@ -770,20 +770,20 @@ golang.org/x/net/websocket
|
|||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/oauth2
|
golang.org/x/oauth2
|
||||||
golang.org/x/oauth2/internal
|
golang.org/x/oauth2/internal
|
||||||
# golang.org/x/sync v0.8.0
|
# golang.org/x/sync v0.9.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/sync/singleflight
|
golang.org/x/sync/singleflight
|
||||||
# golang.org/x/sys v0.26.0
|
# golang.org/x/sys v0.27.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
golang.org/x/sys/plan9
|
golang.org/x/sys/plan9
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
golang.org/x/sys/windows/registry
|
golang.org/x/sys/windows/registry
|
||||||
# golang.org/x/term v0.25.0
|
# golang.org/x/term v0.26.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/term
|
golang.org/x/term
|
||||||
# golang.org/x/text v0.19.0
|
# golang.org/x/text v0.20.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/text/cases
|
golang.org/x/text/cases
|
||||||
golang.org/x/text/encoding
|
golang.org/x/text/encoding
|
||||||
|
Loading…
Reference in New Issue
Block a user