From af1537a1c4c7f0bad0a8f75909e16b7bd0135e8b Mon Sep 17 00:00:00 2001 From: torredil Date: Mon, 23 Dec 2024 20:43:46 +0000 Subject: [PATCH] external-snapshotter Address CVE-2024-45338 Signed-off-by: torredil --- .../external-snapshotter/1-29/CHECKSUMS | 8 +- ...l-snapshotter-Address-CVE-2024-45338.patch | 1524 +++++++++++++++++ .../external-snapshotter/1-30/CHECKSUMS | 8 +- ...l-snapshotter-Address-CVE-2024-45338.patch | 1524 +++++++++++++++++ .../external-snapshotter/1-31/CHECKSUMS | 8 +- ...l-snapshotter-Address-CVE-2024-45338.patch | 1524 +++++++++++++++++ .../external-snapshotter/1-32/CHECKSUMS | 8 +- ...l-snapshotter-Address-CVE-2024-45338.patch | 1524 +++++++++++++++++ 8 files changed, 6112 insertions(+), 16 deletions(-) create mode 100644 projects/kubernetes-csi/external-snapshotter/1-29/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch create mode 100644 projects/kubernetes-csi/external-snapshotter/1-30/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch create mode 100644 projects/kubernetes-csi/external-snapshotter/1-31/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch create mode 100644 projects/kubernetes-csi/external-snapshotter/1-32/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch diff --git a/projects/kubernetes-csi/external-snapshotter/1-29/CHECKSUMS b/projects/kubernetes-csi/external-snapshotter/1-29/CHECKSUMS index 9c39198e9..5c042a6d4 100644 --- a/projects/kubernetes-csi/external-snapshotter/1-29/CHECKSUMS +++ b/projects/kubernetes-csi/external-snapshotter/1-29/CHECKSUMS @@ -1,4 +1,4 @@ -3d1d5ed4b489a90131df5f3820834a14ff4b1412a94dbc57a4ddc93b0c5f2697 _output/1-29/bin/external-snapshotter/linux-amd64/csi-snapshotter -5bcec024f0edbfbf3a7717fc20eade52508ae8b99a6c859990083030dfb726f9 _output/1-29/bin/external-snapshotter/linux-amd64/snapshot-controller -c44d84691d2c8aac2c0ff781ab6ddb7dba44f05d70e3cd099a1d959c0d744f1e _output/1-29/bin/external-snapshotter/linux-arm64/csi-snapshotter -b5a95f54afd0a07f37db84bfebfac2dc48f630e01584c648410585ff5b212a2f _output/1-29/bin/external-snapshotter/linux-arm64/snapshot-controller +f2e35f9a04c1107ff7879eff28e27d4d73ab3ca0a7bf3b03e79ca6e49c868d5b _output/1-29/bin/external-snapshotter/linux-amd64/csi-snapshotter +414e65954b9e8c4dc7c393f1162fe4a8929aa26455f4e3b82f1fa3a81bcf9e23 _output/1-29/bin/external-snapshotter/linux-amd64/snapshot-controller +b039b425018524958614a03c5b48bafe8d8bc11081dd38767190888bb50ce885 _output/1-29/bin/external-snapshotter/linux-arm64/csi-snapshotter +09132bdd62acd4d4b4f62108a699c0f0053c6c513683263aacac65d49b09a523 _output/1-29/bin/external-snapshotter/linux-arm64/snapshot-controller diff --git a/projects/kubernetes-csi/external-snapshotter/1-29/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch b/projects/kubernetes-csi/external-snapshotter/1-29/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch new file mode 100644 index 000000000..3c49f3c83 --- /dev/null +++ b/projects/kubernetes-csi/external-snapshotter/1-29/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch @@ -0,0 +1,1524 @@ +From a918d1867148ed73d2a115022febbf75c63b036d Mon Sep 17 00:00:00 2001 +From: torredil +Date: Mon, 23 Dec 2024 20:31:42 +0000 +Subject: [PATCH] external-snapshotter Address CVE-2024-45338 + +Signed-off-by: torredil +--- + go.mod | 8 +- + go.sum | 16 +- + vendor/golang.org/x/net/http2/frame.go | 4 +- + vendor/golang.org/x/net/http2/http2.go | 42 ++++-- + vendor/golang.org/x/net/http2/server.go | 35 +++-- + vendor/golang.org/x/net/http2/transport.go | 137 ++++++++++++++---- + vendor/golang.org/x/sys/unix/zerrors_linux.go | 9 ++ + .../x/sys/unix/zerrors_linux_386.go | 6 + + .../x/sys/unix/zerrors_linux_amd64.go | 6 + + .../x/sys/unix/zerrors_linux_arm.go | 6 + + .../x/sys/unix/zerrors_linux_arm64.go | 7 + + .../x/sys/unix/zerrors_linux_loong64.go | 6 + + .../x/sys/unix/zerrors_linux_mips.go | 6 + + .../x/sys/unix/zerrors_linux_mips64.go | 6 + + .../x/sys/unix/zerrors_linux_mips64le.go | 6 + + .../x/sys/unix/zerrors_linux_mipsle.go | 6 + + .../x/sys/unix/zerrors_linux_ppc.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64le.go | 6 + + .../x/sys/unix/zerrors_linux_riscv64.go | 6 + + .../x/sys/unix/zerrors_linux_s390x.go | 6 + + .../x/sys/unix/zerrors_linux_sparc64.go | 6 + + .../x/sys/unix/ztypes_darwin_amd64.go | 60 ++++++++ + .../x/sys/unix/ztypes_darwin_arm64.go | 60 ++++++++ + vendor/golang.org/x/sys/unix/ztypes_linux.go | 20 +-- + .../x/sys/windows/syscall_windows.go | 2 + + .../golang.org/x/sys/windows/types_windows.go | 1 + + .../x/sys/windows/zsyscall_windows.go | 28 +++- + vendor/modules.txt | 8 +- + 29 files changed, 433 insertions(+), 88 deletions(-) + +diff --git a/go.mod b/go.mod +index 610fd2c07..f9ec62163 100644 +--- a/go.mod ++++ b/go.mod +@@ -61,11 +61,11 @@ require ( + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect +- golang.org/x/net v0.31.0 // indirect ++ golang.org/x/net v0.33.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect +- golang.org/x/sys v0.27.0 // indirect +- golang.org/x/term v0.26.0 // indirect +- golang.org/x/text v0.20.0 // indirect ++ golang.org/x/sys v0.28.0 // indirect ++ golang.org/x/term v0.27.0 // indirect ++ golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.8.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect +diff --git a/go.sum b/go.sum +index f4da8704d..e89710fb3 100644 +--- a/go.sum ++++ b/go.sum +@@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= + golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +-golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +-golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= ++golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= ++golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= + golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= + golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= + golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +@@ -150,15 +150,15 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +-golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= ++golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +-golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +-golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= ++golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= ++golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +-golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +-golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= ++golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= ++golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= + golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= + golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= + golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go +index 105c3b279..81faec7e7 100644 +--- a/vendor/golang.org/x/net/http2/frame.go ++++ b/vendor/golang.org/x/net/http2/frame.go +@@ -1490,7 +1490,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { +- case ":method", ":path", ":scheme", ":authority": ++ case ":method", ":path", ":scheme", ":authority", ":protocol": + isRequest = true + case ":status": + isResponse = true +@@ -1498,7 +1498,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. +- // This would be a bad algorithm, but N is 4. ++ // This would be a bad algorithm, but N is 5. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { +diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go +index 7688c356b..c7601c909 100644 +--- a/vendor/golang.org/x/net/http2/http2.go ++++ b/vendor/golang.org/x/net/http2/http2.go +@@ -34,10 +34,11 @@ import ( + ) + + var ( +- VerboseLogs bool +- logFrameWrites bool +- logFrameReads bool +- inTests bool ++ VerboseLogs bool ++ logFrameWrites bool ++ logFrameReads bool ++ inTests bool ++ disableExtendedConnectProtocol bool + ) + + func init() { +@@ -50,6 +51,9 @@ func init() { + logFrameWrites = true + logFrameReads = true + } ++ if strings.Contains(e, "http2xconnect=0") { ++ disableExtendedConnectProtocol = true ++ } + } + + const ( +@@ -141,6 +145,10 @@ func (s Setting) Valid() error { + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } ++ case SettingEnableConnectProtocol: ++ if s.Val != 1 && s.Val != 0 { ++ return ConnectionError(ErrCodeProtocol) ++ } + } + return nil + } +@@ -150,21 +158,23 @@ func (s Setting) Valid() error { + type SettingID uint16 + + const ( +- SettingHeaderTableSize SettingID = 0x1 +- SettingEnablePush SettingID = 0x2 +- SettingMaxConcurrentStreams SettingID = 0x3 +- SettingInitialWindowSize SettingID = 0x4 +- SettingMaxFrameSize SettingID = 0x5 +- SettingMaxHeaderListSize SettingID = 0x6 ++ SettingHeaderTableSize SettingID = 0x1 ++ SettingEnablePush SettingID = 0x2 ++ SettingMaxConcurrentStreams SettingID = 0x3 ++ SettingInitialWindowSize SettingID = 0x4 ++ SettingMaxFrameSize SettingID = 0x5 ++ SettingMaxHeaderListSize SettingID = 0x6 ++ SettingEnableConnectProtocol SettingID = 0x8 + ) + + var settingName = map[SettingID]string{ +- SettingHeaderTableSize: "HEADER_TABLE_SIZE", +- SettingEnablePush: "ENABLE_PUSH", +- SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", +- SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", +- SettingMaxFrameSize: "MAX_FRAME_SIZE", +- SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingHeaderTableSize: "HEADER_TABLE_SIZE", ++ SettingEnablePush: "ENABLE_PUSH", ++ SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", ++ SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", ++ SettingMaxFrameSize: "MAX_FRAME_SIZE", ++ SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingEnableConnectProtocol: "ENABLE_CONNECT_PROTOCOL", + } + + func (s SettingID) String() string { +diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go +index 832414b45..b55547aec 100644 +--- a/vendor/golang.org/x/net/http2/server.go ++++ b/vendor/golang.org/x/net/http2/server.go +@@ -932,14 +932,18 @@ func (sc *serverConn) serve(conf http2Config) { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + ++ settings := writeSettings{ ++ {SettingMaxFrameSize, conf.MaxReadFrameSize}, ++ {SettingMaxConcurrentStreams, sc.advMaxStreams}, ++ {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, ++ {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, ++ {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, ++ } ++ if !disableExtendedConnectProtocol { ++ settings = append(settings, Setting{SettingEnableConnectProtocol, 1}) ++ } + sc.writeFrame(FrameWriteRequest{ +- write: writeSettings{ +- {SettingMaxFrameSize, conf.MaxReadFrameSize}, +- {SettingMaxConcurrentStreams, sc.advMaxStreams}, +- {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, +- {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, +- {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, +- }, ++ write: settings, + }) + sc.unackedSettings++ + +@@ -1801,6 +1805,9 @@ func (sc *serverConn) processSetting(s Setting) error { + sc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31 + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val ++ case SettingEnableConnectProtocol: ++ // Receipt of this parameter by a server does not ++ // have any impact + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST +@@ -2231,11 +2238,17 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + scheme: f.PseudoValue("scheme"), + authority: f.PseudoValue("authority"), + path: f.PseudoValue("path"), ++ protocol: f.PseudoValue("protocol"), ++ } ++ ++ // extended connect is disabled, so we should not see :protocol ++ if disableExtendedConnectProtocol && rp.protocol != "" { ++ return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + + isConnect := rp.method == "CONNECT" + if isConnect { +- if rp.path != "" || rp.scheme != "" || rp.authority == "" { ++ if rp.protocol == "" && (rp.path != "" || rp.scheme != "" || rp.authority == "") { + return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { +@@ -2259,6 +2272,9 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + if rp.authority == "" { + rp.authority = rp.header.Get("Host") + } ++ if rp.protocol != "" { ++ rp.header.Set(":protocol", rp.protocol) ++ } + + rw, req, err := sc.newWriterAndRequestNoBody(st, rp) + if err != nil { +@@ -2285,6 +2301,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + type requestParam struct { + method string + scheme, authority, path string ++ protocol string + header http.Header + } + +@@ -2326,7 +2343,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r + + var url_ *url.URL + var requestURI string +- if rp.method == "CONNECT" { ++ if rp.method == "CONNECT" && rp.protocol == "" { + url_ = &url.URL{Host: rp.authority} + requestURI = rp.authority // mimic HTTP/1 server behavior + } else { +diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go +index f5968f440..090d0e1bd 100644 +--- a/vendor/golang.org/x/net/http2/transport.go ++++ b/vendor/golang.org/x/net/http2/transport.go +@@ -368,25 +368,26 @@ type ClientConn struct { + idleTimeout time.Duration // or 0 for never + idleTimer timer + +- mu sync.Mutex // guards following +- cond *sync.Cond // hold mu; broadcast on flow/closed changes +- flow outflow // our conn-level flow control quota (cs.outflow is per stream) +- inflow inflow // peer's conn-level flow control +- doNotReuse bool // whether conn is marked to not be reused for any future requests +- closing bool +- closed bool +- seenSettings bool // true if we've seen a settings frame, false otherwise +- wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back +- goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received +- goAwayDebug string // goAway frame's debug data, retained as a string +- streams map[uint32]*clientStream // client-initiated +- streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip +- nextStreamID uint32 +- pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams +- pings map[[8]byte]chan struct{} // in flight ping data to notification channel +- br *bufio.Reader +- lastActive time.Time +- lastIdle time.Time // time last idle ++ mu sync.Mutex // guards following ++ cond *sync.Cond // hold mu; broadcast on flow/closed changes ++ flow outflow // our conn-level flow control quota (cs.outflow is per stream) ++ inflow inflow // peer's conn-level flow control ++ doNotReuse bool // whether conn is marked to not be reused for any future requests ++ closing bool ++ closed bool ++ seenSettings bool // true if we've seen a settings frame, false otherwise ++ seenSettingsChan chan struct{} // closed when seenSettings is true or frame reading fails ++ wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back ++ goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received ++ goAwayDebug string // goAway frame's debug data, retained as a string ++ streams map[uint32]*clientStream // client-initiated ++ streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip ++ nextStreamID uint32 ++ pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams ++ pings map[[8]byte]chan struct{} // in flight ping data to notification channel ++ br *bufio.Reader ++ lastActive time.Time ++ lastIdle time.Time // time last idle + // Settings from peer: (also guarded by wmu) + maxFrameSize uint32 + maxConcurrentStreams uint32 +@@ -396,6 +397,17 @@ type ClientConn struct { + initialStreamRecvWindowSize int32 + readIdleTimeout time.Duration + pingTimeout time.Duration ++ extendedConnectAllowed bool ++ ++ // rstStreamPingsBlocked works around an unfortunate gRPC behavior. ++ // gRPC strictly limits the number of PING frames that it will receive. ++ // The default is two pings per two hours, but the limit resets every time ++ // the gRPC endpoint sends a HEADERS or DATA frame. See golang/go#70575. ++ // ++ // rstStreamPingsBlocked is set after receiving a response to a PING frame ++ // bundled with an RST_STREAM (see pendingResets below), and cleared after ++ // receiving a HEADERS or DATA frame. ++ rstStreamPingsBlocked bool + + // 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, +@@ -819,6 +831,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro + peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. + streams: make(map[uint32]*clientStream), + singleUse: singleUse, ++ seenSettingsChan: make(chan struct{}), + wantSettingsAck: true, + readIdleTimeout: conf.SendPingTimeout, + pingTimeout: conf.PingTimeout, +@@ -1466,6 +1479,8 @@ func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream) + cs.cleanupWriteRequest(err) + } + ++var errExtendedConnectNotSupported = errors.New("net/http: extended connect not supported by peer") ++ + // writeRequest sends a request. + // + // It returns nil after the request is written, the response read, +@@ -1481,12 +1496,31 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre + return err + } + ++ // wait for setting frames to be received, a server can change this value later, ++ // but we just wait for the first settings frame ++ var isExtendedConnect bool ++ if req.Method == "CONNECT" && req.Header.Get(":protocol") != "" { ++ isExtendedConnect = true ++ } ++ + // Acquire the new-request lock by writing to reqHeaderMu. + // This lock guards the critical section covering allocating a new stream ID + // (requires mu) and creating the stream (requires wmu). + if cc.reqHeaderMu == nil { + panic("RoundTrip on uninitialized ClientConn") // for tests + } ++ if isExtendedConnect { ++ select { ++ case <-cs.reqCancel: ++ return errRequestCanceled ++ case <-ctx.Done(): ++ return ctx.Err() ++ case <-cc.seenSettingsChan: ++ if !cc.extendedConnectAllowed { ++ return errExtendedConnectNotSupported ++ } ++ } ++ } + select { + case cc.reqHeaderMu <- struct{}{}: + case <-cs.reqCancel: +@@ -1714,10 +1748,14 @@ func (cs *clientStream) cleanupWriteRequest(err error) { + ping := false + if !closeOnIdle { + cc.mu.Lock() +- if cc.pendingResets == 0 { +- ping = true ++ // rstStreamPingsBlocked works around a gRPC behavior: ++ // see comment on the field for details. ++ if !cc.rstStreamPingsBlocked { ++ if cc.pendingResets == 0 { ++ ping = true ++ } ++ cc.pendingResets++ + } +- cc.pendingResets++ + cc.mu.Unlock() + } + cc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err) +@@ -2030,7 +2068,7 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) + + func validateHeaders(hdrs http.Header) string { + for k, vv := range hdrs { +- if !httpguts.ValidHeaderFieldName(k) { ++ if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { +@@ -2046,6 +2084,10 @@ func validateHeaders(hdrs http.Header) string { + + var errNilRequestURL = errors.New("http2: Request.URI is nil") + ++func isNormalConnect(req *http.Request) bool { ++ return req.Method == "CONNECT" && req.Header.Get(":protocol") == "" ++} ++ + // requires cc.wmu be held. + func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() +@@ -2066,7 +2108,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + } + + var path string +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path +@@ -2103,7 +2145,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + m = http.MethodGet + } + f(":method", m) +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + f(":path", path) + f(":scheme", req.URL.Scheme) + } +@@ -2461,7 +2503,7 @@ func (rl *clientConnReadLoop) run() error { + cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) + } + if se, ok := err.(StreamError); ok { +- if cs := rl.streamByID(se.StreamID); cs != nil { ++ if cs := rl.streamByID(se.StreamID, notHeaderOrDataFrame); cs != nil { + if se.Cause == nil { + se.Cause = cc.fr.errDetail + } +@@ -2507,13 +2549,16 @@ func (rl *clientConnReadLoop) run() error { + if VerboseLogs { + cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) + } ++ if !cc.seenSettings { ++ close(cc.seenSettingsChan) ++ } + return err + } + } + } + + func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this +@@ -2842,7 +2887,7 @@ func (b transportResponseBody) Close() error { + + func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + data := f.Data() + if cs == nil { + cc.mu.Lock() +@@ -2977,9 +3022,22 @@ func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + cs.abortStream(err) + } + +-func (rl *clientConnReadLoop) streamByID(id uint32) *clientStream { ++// Constants passed to streamByID for documentation purposes. ++const ( ++ headerOrDataFrame = true ++ notHeaderOrDataFrame = false ++) ++ ++// streamByID returns the stream with the given id, or nil if no stream has that id. ++// If headerOrData is true, it clears rst.StreamPingsBlocked. ++func (rl *clientConnReadLoop) streamByID(id uint32, headerOrData bool) *clientStream { + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() ++ if headerOrData { ++ // Work around an unfortunate gRPC behavior. ++ // See comment on ClientConn.rstStreamPingsBlocked for details. ++ rl.cc.rstStreamPingsBlocked = false ++ } + cs := rl.cc.streams[id] + if cs != nil && !cs.readAborted { + return cs +@@ -3073,6 +3131,21 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + case SettingHeaderTableSize: + cc.henc.SetMaxDynamicTableSize(s.Val) + cc.peerMaxHeaderTableSize = s.Val ++ case SettingEnableConnectProtocol: ++ if err := s.Valid(); err != nil { ++ return err ++ } ++ // If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL, ++ // we require that it do so in the first SETTINGS frame. ++ // ++ // When we attempt to use extended CONNECT, we wait for the first ++ // SETTINGS frame to see if the server supports it. If we let the ++ // server enable the feature with a later SETTINGS frame, then ++ // users will see inconsistent results depending on whether we've ++ // seen that frame or not. ++ if !cc.seenSettings { ++ cc.extendedConnectAllowed = s.Val == 1 ++ } + default: + cc.vlogf("Unhandled Setting: %v", s) + } +@@ -3090,6 +3163,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + // connection can establish to our default. + cc.maxConcurrentStreams = defaultMaxConcurrentStreams + } ++ close(cc.seenSettingsChan) + cc.seenSettings = true + } + +@@ -3098,7 +3172,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + + func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if f.StreamID != 0 && cs == nil { + return nil + } +@@ -3127,7 +3201,7 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + } + + func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if cs == nil { + // TODO: return error if server tries to RST_STREAM an idle stream + return nil +@@ -3205,6 +3279,7 @@ func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if cc.pendingResets > 0 { + // See clientStream.cleanupWriteRequest. + cc.pendingResets = 0 ++ cc.rstStreamPingsBlocked = true + cc.cond.Broadcast() + } + return nil +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go +index ccba391c9..6ebc48b3f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go +@@ -321,6 +321,9 @@ const ( + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f ++ AUDIT_IPE_ACCESS = 0x58c ++ AUDIT_IPE_CONFIG_CHANGE = 0x58d ++ AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 +@@ -489,6 +492,7 @@ const ( + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_QUERY_EFFECTIVE = 0x1 ++ BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 +@@ -1166,6 +1170,7 @@ const ( + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 ++ FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 +@@ -1799,6 +1804,8 @@ const ( + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 ++ LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 ++ LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 +@@ -1924,6 +1931,7 @@ const ( + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 ++ MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 +@@ -2970,6 +2978,7 @@ const ( + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 ++ SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +index 0c00cb3f3..c0d45e320 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -297,6 +298,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -335,6 +338,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +index dfb364554..c731d24f0 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -298,6 +299,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -336,6 +339,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +index d46dcf78a..680018a4a 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -303,6 +304,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -341,6 +344,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +index 3af3248a7..a63909f30 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -205,6 +206,7 @@ const ( + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 ++ POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 +@@ -294,6 +296,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -332,6 +336,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +index 292bcf028..9b0a2573f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -290,6 +291,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -328,6 +331,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +index 782b7110f..958e6e064 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +index 84973fd92..50c7f25bd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +index 6d9cbc3b2..ced21d66d 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +index 5f9fedbce..226c04419 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +index bb0026ee0..3122737cd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -351,6 +352,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -389,6 +392,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +index 46120db5c..eb5d3467e 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +index 5c951634f..e921ebc60 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +index 11a84d5af..38ba81c55 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -287,6 +288,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -325,6 +328,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +index f78c4617c..71f040097 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -359,6 +360,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -397,6 +400,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +index aeb777c34..c44a31332 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -350,6 +351,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x58 ++ SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c +@@ -436,6 +439,9 @@ const ( + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 ++ SO_DEVMEM_DMABUF = 0x58 ++ SO_DEVMEM_DONTNEED = 0x59 ++ SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +index d003c3d43..17c53bd9b 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +index 0d45a941a..2392226a7 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go +index 8daaf3faf..5537148dc 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go +@@ -2594,8 +2594,8 @@ const ( + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + +- SOF_TIMESTAMPING_LAST = 0x10000 +- SOF_TIMESTAMPING_MASK = 0x1ffff ++ SOF_TIMESTAMPING_LAST = 0x20000 ++ SOF_TIMESTAMPING_MASK = 0x3ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 +@@ -3541,7 +3541,7 @@ type Nhmsg struct { + type NexthopGrp struct { + Id uint32 + Weight uint8 +- Resvd1 uint8 ++ High uint8 + Resvd2 uint16 + } + +@@ -3802,7 +3802,7 @@ const ( + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 +- ETHTOOL_MSG_USER_MAX = 0x2c ++ ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 +@@ -3842,7 +3842,7 @@ const ( + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 +- ETHTOOL_MSG_KERNEL_MAX = 0x2c ++ ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 +@@ -3850,7 +3850,7 @@ const ( + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 +- ETHTOOL_A_HEADER_MAX = 0x3 ++ ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 +@@ -4031,11 +4031,11 @@ const ( + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 +- ETHTOOL_A_CABLE_RESULT_MAX = 0x2 ++ ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 +- ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 ++ ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 +@@ -4200,7 +4200,8 @@ type ( + } + PtpSysOffsetExtended struct { + Samples uint32 +- Rsv [3]uint32 ++ Clockid int32 ++ Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { +@@ -4399,6 +4400,7 @@ const ( + type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 ++ Scoped uint64 + } + + type LandlockPathBeneathAttr struct { +diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go +index 4510bfc3f..4a3254386 100644 +--- a/vendor/golang.org/x/sys/windows/syscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/syscall_windows.go +@@ -168,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { + //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW + //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) + //sys DisconnectNamedPipe(pipe Handle) (err error) ++//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) ++//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) + //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) + //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW + //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go +index 51311e205..9d138de5f 100644 +--- a/vendor/golang.org/x/sys/windows/types_windows.go ++++ b/vendor/golang.org/x/sys/windows/types_windows.go +@@ -176,6 +176,7 @@ const ( + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. ++ PROCESS_ALL_ACCESS = 0xFFFF + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 +diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +index 6f5252880..01c0716c2 100644 +--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +@@ -280,8 +280,10 @@ var ( + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") ++ procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") ++ procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") +@@ -1612,7 +1614,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si + } + + func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { +- r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) ++ r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1652,7 +1654,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + } + + func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1660,7 +1662,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + } + + func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1672,7 +1674,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1684,7 +1686,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -2446,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er + return + } + ++func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + if r1 == 0 { +@@ -2462,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 + return + } + ++func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { +diff --git a/vendor/modules.txt b/vendor/modules.txt +index 8db4816db..605f6aa6e 100644 +--- a/vendor/modules.txt ++++ b/vendor/modules.txt +@@ -199,7 +199,7 @@ go.opentelemetry.io/otel/metric/noop + ## explicit; go 1.22 + go.opentelemetry.io/otel/trace + go.opentelemetry.io/otel/trace/embedded +-# golang.org/x/net v0.31.0 ++# golang.org/x/net v0.33.0 + ## explicit; go 1.18 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 +@@ -211,15 +211,15 @@ golang.org/x/net/trace + ## explicit; go 1.18 + golang.org/x/oauth2 + golang.org/x/oauth2/internal +-# golang.org/x/sys v0.27.0 ++# golang.org/x/sys v0.28.0 + ## explicit; go 1.18 + golang.org/x/sys/plan9 + golang.org/x/sys/unix + golang.org/x/sys/windows +-# golang.org/x/term v0.26.0 ++# golang.org/x/term v0.27.0 + ## explicit; go 1.18 + golang.org/x/term +-# golang.org/x/text v0.20.0 ++# golang.org/x/text v0.21.0 + ## explicit; go 1.18 + golang.org/x/text/secure/bidirule + golang.org/x/text/transform +-- +2.40.1 + diff --git a/projects/kubernetes-csi/external-snapshotter/1-30/CHECKSUMS b/projects/kubernetes-csi/external-snapshotter/1-30/CHECKSUMS index a90b4c0f9..cc53d16bd 100644 --- a/projects/kubernetes-csi/external-snapshotter/1-30/CHECKSUMS +++ b/projects/kubernetes-csi/external-snapshotter/1-30/CHECKSUMS @@ -1,4 +1,4 @@ -3d1d5ed4b489a90131df5f3820834a14ff4b1412a94dbc57a4ddc93b0c5f2697 _output/1-30/bin/external-snapshotter/linux-amd64/csi-snapshotter -5bcec024f0edbfbf3a7717fc20eade52508ae8b99a6c859990083030dfb726f9 _output/1-30/bin/external-snapshotter/linux-amd64/snapshot-controller -c44d84691d2c8aac2c0ff781ab6ddb7dba44f05d70e3cd099a1d959c0d744f1e _output/1-30/bin/external-snapshotter/linux-arm64/csi-snapshotter -b5a95f54afd0a07f37db84bfebfac2dc48f630e01584c648410585ff5b212a2f _output/1-30/bin/external-snapshotter/linux-arm64/snapshot-controller +f2e35f9a04c1107ff7879eff28e27d4d73ab3ca0a7bf3b03e79ca6e49c868d5b _output/1-30/bin/external-snapshotter/linux-amd64/csi-snapshotter +414e65954b9e8c4dc7c393f1162fe4a8929aa26455f4e3b82f1fa3a81bcf9e23 _output/1-30/bin/external-snapshotter/linux-amd64/snapshot-controller +b039b425018524958614a03c5b48bafe8d8bc11081dd38767190888bb50ce885 _output/1-30/bin/external-snapshotter/linux-arm64/csi-snapshotter +09132bdd62acd4d4b4f62108a699c0f0053c6c513683263aacac65d49b09a523 _output/1-30/bin/external-snapshotter/linux-arm64/snapshot-controller diff --git a/projects/kubernetes-csi/external-snapshotter/1-30/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch b/projects/kubernetes-csi/external-snapshotter/1-30/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch new file mode 100644 index 000000000..3c49f3c83 --- /dev/null +++ b/projects/kubernetes-csi/external-snapshotter/1-30/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch @@ -0,0 +1,1524 @@ +From a918d1867148ed73d2a115022febbf75c63b036d Mon Sep 17 00:00:00 2001 +From: torredil +Date: Mon, 23 Dec 2024 20:31:42 +0000 +Subject: [PATCH] external-snapshotter Address CVE-2024-45338 + +Signed-off-by: torredil +--- + go.mod | 8 +- + go.sum | 16 +- + vendor/golang.org/x/net/http2/frame.go | 4 +- + vendor/golang.org/x/net/http2/http2.go | 42 ++++-- + vendor/golang.org/x/net/http2/server.go | 35 +++-- + vendor/golang.org/x/net/http2/transport.go | 137 ++++++++++++++---- + vendor/golang.org/x/sys/unix/zerrors_linux.go | 9 ++ + .../x/sys/unix/zerrors_linux_386.go | 6 + + .../x/sys/unix/zerrors_linux_amd64.go | 6 + + .../x/sys/unix/zerrors_linux_arm.go | 6 + + .../x/sys/unix/zerrors_linux_arm64.go | 7 + + .../x/sys/unix/zerrors_linux_loong64.go | 6 + + .../x/sys/unix/zerrors_linux_mips.go | 6 + + .../x/sys/unix/zerrors_linux_mips64.go | 6 + + .../x/sys/unix/zerrors_linux_mips64le.go | 6 + + .../x/sys/unix/zerrors_linux_mipsle.go | 6 + + .../x/sys/unix/zerrors_linux_ppc.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64le.go | 6 + + .../x/sys/unix/zerrors_linux_riscv64.go | 6 + + .../x/sys/unix/zerrors_linux_s390x.go | 6 + + .../x/sys/unix/zerrors_linux_sparc64.go | 6 + + .../x/sys/unix/ztypes_darwin_amd64.go | 60 ++++++++ + .../x/sys/unix/ztypes_darwin_arm64.go | 60 ++++++++ + vendor/golang.org/x/sys/unix/ztypes_linux.go | 20 +-- + .../x/sys/windows/syscall_windows.go | 2 + + .../golang.org/x/sys/windows/types_windows.go | 1 + + .../x/sys/windows/zsyscall_windows.go | 28 +++- + vendor/modules.txt | 8 +- + 29 files changed, 433 insertions(+), 88 deletions(-) + +diff --git a/go.mod b/go.mod +index 610fd2c07..f9ec62163 100644 +--- a/go.mod ++++ b/go.mod +@@ -61,11 +61,11 @@ require ( + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect +- golang.org/x/net v0.31.0 // indirect ++ golang.org/x/net v0.33.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect +- golang.org/x/sys v0.27.0 // indirect +- golang.org/x/term v0.26.0 // indirect +- golang.org/x/text v0.20.0 // indirect ++ golang.org/x/sys v0.28.0 // indirect ++ golang.org/x/term v0.27.0 // indirect ++ golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.8.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect +diff --git a/go.sum b/go.sum +index f4da8704d..e89710fb3 100644 +--- a/go.sum ++++ b/go.sum +@@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= + golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +-golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +-golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= ++golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= ++golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= + golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= + golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= + golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +@@ -150,15 +150,15 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +-golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= ++golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +-golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +-golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= ++golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= ++golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +-golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +-golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= ++golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= ++golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= + golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= + golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= + golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go +index 105c3b279..81faec7e7 100644 +--- a/vendor/golang.org/x/net/http2/frame.go ++++ b/vendor/golang.org/x/net/http2/frame.go +@@ -1490,7 +1490,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { +- case ":method", ":path", ":scheme", ":authority": ++ case ":method", ":path", ":scheme", ":authority", ":protocol": + isRequest = true + case ":status": + isResponse = true +@@ -1498,7 +1498,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. +- // This would be a bad algorithm, but N is 4. ++ // This would be a bad algorithm, but N is 5. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { +diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go +index 7688c356b..c7601c909 100644 +--- a/vendor/golang.org/x/net/http2/http2.go ++++ b/vendor/golang.org/x/net/http2/http2.go +@@ -34,10 +34,11 @@ import ( + ) + + var ( +- VerboseLogs bool +- logFrameWrites bool +- logFrameReads bool +- inTests bool ++ VerboseLogs bool ++ logFrameWrites bool ++ logFrameReads bool ++ inTests bool ++ disableExtendedConnectProtocol bool + ) + + func init() { +@@ -50,6 +51,9 @@ func init() { + logFrameWrites = true + logFrameReads = true + } ++ if strings.Contains(e, "http2xconnect=0") { ++ disableExtendedConnectProtocol = true ++ } + } + + const ( +@@ -141,6 +145,10 @@ func (s Setting) Valid() error { + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } ++ case SettingEnableConnectProtocol: ++ if s.Val != 1 && s.Val != 0 { ++ return ConnectionError(ErrCodeProtocol) ++ } + } + return nil + } +@@ -150,21 +158,23 @@ func (s Setting) Valid() error { + type SettingID uint16 + + const ( +- SettingHeaderTableSize SettingID = 0x1 +- SettingEnablePush SettingID = 0x2 +- SettingMaxConcurrentStreams SettingID = 0x3 +- SettingInitialWindowSize SettingID = 0x4 +- SettingMaxFrameSize SettingID = 0x5 +- SettingMaxHeaderListSize SettingID = 0x6 ++ SettingHeaderTableSize SettingID = 0x1 ++ SettingEnablePush SettingID = 0x2 ++ SettingMaxConcurrentStreams SettingID = 0x3 ++ SettingInitialWindowSize SettingID = 0x4 ++ SettingMaxFrameSize SettingID = 0x5 ++ SettingMaxHeaderListSize SettingID = 0x6 ++ SettingEnableConnectProtocol SettingID = 0x8 + ) + + var settingName = map[SettingID]string{ +- SettingHeaderTableSize: "HEADER_TABLE_SIZE", +- SettingEnablePush: "ENABLE_PUSH", +- SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", +- SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", +- SettingMaxFrameSize: "MAX_FRAME_SIZE", +- SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingHeaderTableSize: "HEADER_TABLE_SIZE", ++ SettingEnablePush: "ENABLE_PUSH", ++ SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", ++ SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", ++ SettingMaxFrameSize: "MAX_FRAME_SIZE", ++ SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingEnableConnectProtocol: "ENABLE_CONNECT_PROTOCOL", + } + + func (s SettingID) String() string { +diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go +index 832414b45..b55547aec 100644 +--- a/vendor/golang.org/x/net/http2/server.go ++++ b/vendor/golang.org/x/net/http2/server.go +@@ -932,14 +932,18 @@ func (sc *serverConn) serve(conf http2Config) { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + ++ settings := writeSettings{ ++ {SettingMaxFrameSize, conf.MaxReadFrameSize}, ++ {SettingMaxConcurrentStreams, sc.advMaxStreams}, ++ {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, ++ {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, ++ {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, ++ } ++ if !disableExtendedConnectProtocol { ++ settings = append(settings, Setting{SettingEnableConnectProtocol, 1}) ++ } + sc.writeFrame(FrameWriteRequest{ +- write: writeSettings{ +- {SettingMaxFrameSize, conf.MaxReadFrameSize}, +- {SettingMaxConcurrentStreams, sc.advMaxStreams}, +- {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, +- {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, +- {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, +- }, ++ write: settings, + }) + sc.unackedSettings++ + +@@ -1801,6 +1805,9 @@ func (sc *serverConn) processSetting(s Setting) error { + sc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31 + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val ++ case SettingEnableConnectProtocol: ++ // Receipt of this parameter by a server does not ++ // have any impact + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST +@@ -2231,11 +2238,17 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + scheme: f.PseudoValue("scheme"), + authority: f.PseudoValue("authority"), + path: f.PseudoValue("path"), ++ protocol: f.PseudoValue("protocol"), ++ } ++ ++ // extended connect is disabled, so we should not see :protocol ++ if disableExtendedConnectProtocol && rp.protocol != "" { ++ return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + + isConnect := rp.method == "CONNECT" + if isConnect { +- if rp.path != "" || rp.scheme != "" || rp.authority == "" { ++ if rp.protocol == "" && (rp.path != "" || rp.scheme != "" || rp.authority == "") { + return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { +@@ -2259,6 +2272,9 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + if rp.authority == "" { + rp.authority = rp.header.Get("Host") + } ++ if rp.protocol != "" { ++ rp.header.Set(":protocol", rp.protocol) ++ } + + rw, req, err := sc.newWriterAndRequestNoBody(st, rp) + if err != nil { +@@ -2285,6 +2301,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + type requestParam struct { + method string + scheme, authority, path string ++ protocol string + header http.Header + } + +@@ -2326,7 +2343,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r + + var url_ *url.URL + var requestURI string +- if rp.method == "CONNECT" { ++ if rp.method == "CONNECT" && rp.protocol == "" { + url_ = &url.URL{Host: rp.authority} + requestURI = rp.authority // mimic HTTP/1 server behavior + } else { +diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go +index f5968f440..090d0e1bd 100644 +--- a/vendor/golang.org/x/net/http2/transport.go ++++ b/vendor/golang.org/x/net/http2/transport.go +@@ -368,25 +368,26 @@ type ClientConn struct { + idleTimeout time.Duration // or 0 for never + idleTimer timer + +- mu sync.Mutex // guards following +- cond *sync.Cond // hold mu; broadcast on flow/closed changes +- flow outflow // our conn-level flow control quota (cs.outflow is per stream) +- inflow inflow // peer's conn-level flow control +- doNotReuse bool // whether conn is marked to not be reused for any future requests +- closing bool +- closed bool +- seenSettings bool // true if we've seen a settings frame, false otherwise +- wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back +- goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received +- goAwayDebug string // goAway frame's debug data, retained as a string +- streams map[uint32]*clientStream // client-initiated +- streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip +- nextStreamID uint32 +- pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams +- pings map[[8]byte]chan struct{} // in flight ping data to notification channel +- br *bufio.Reader +- lastActive time.Time +- lastIdle time.Time // time last idle ++ mu sync.Mutex // guards following ++ cond *sync.Cond // hold mu; broadcast on flow/closed changes ++ flow outflow // our conn-level flow control quota (cs.outflow is per stream) ++ inflow inflow // peer's conn-level flow control ++ doNotReuse bool // whether conn is marked to not be reused for any future requests ++ closing bool ++ closed bool ++ seenSettings bool // true if we've seen a settings frame, false otherwise ++ seenSettingsChan chan struct{} // closed when seenSettings is true or frame reading fails ++ wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back ++ goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received ++ goAwayDebug string // goAway frame's debug data, retained as a string ++ streams map[uint32]*clientStream // client-initiated ++ streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip ++ nextStreamID uint32 ++ pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams ++ pings map[[8]byte]chan struct{} // in flight ping data to notification channel ++ br *bufio.Reader ++ lastActive time.Time ++ lastIdle time.Time // time last idle + // Settings from peer: (also guarded by wmu) + maxFrameSize uint32 + maxConcurrentStreams uint32 +@@ -396,6 +397,17 @@ type ClientConn struct { + initialStreamRecvWindowSize int32 + readIdleTimeout time.Duration + pingTimeout time.Duration ++ extendedConnectAllowed bool ++ ++ // rstStreamPingsBlocked works around an unfortunate gRPC behavior. ++ // gRPC strictly limits the number of PING frames that it will receive. ++ // The default is two pings per two hours, but the limit resets every time ++ // the gRPC endpoint sends a HEADERS or DATA frame. See golang/go#70575. ++ // ++ // rstStreamPingsBlocked is set after receiving a response to a PING frame ++ // bundled with an RST_STREAM (see pendingResets below), and cleared after ++ // receiving a HEADERS or DATA frame. ++ rstStreamPingsBlocked bool + + // 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, +@@ -819,6 +831,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro + peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. + streams: make(map[uint32]*clientStream), + singleUse: singleUse, ++ seenSettingsChan: make(chan struct{}), + wantSettingsAck: true, + readIdleTimeout: conf.SendPingTimeout, + pingTimeout: conf.PingTimeout, +@@ -1466,6 +1479,8 @@ func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream) + cs.cleanupWriteRequest(err) + } + ++var errExtendedConnectNotSupported = errors.New("net/http: extended connect not supported by peer") ++ + // writeRequest sends a request. + // + // It returns nil after the request is written, the response read, +@@ -1481,12 +1496,31 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre + return err + } + ++ // wait for setting frames to be received, a server can change this value later, ++ // but we just wait for the first settings frame ++ var isExtendedConnect bool ++ if req.Method == "CONNECT" && req.Header.Get(":protocol") != "" { ++ isExtendedConnect = true ++ } ++ + // Acquire the new-request lock by writing to reqHeaderMu. + // This lock guards the critical section covering allocating a new stream ID + // (requires mu) and creating the stream (requires wmu). + if cc.reqHeaderMu == nil { + panic("RoundTrip on uninitialized ClientConn") // for tests + } ++ if isExtendedConnect { ++ select { ++ case <-cs.reqCancel: ++ return errRequestCanceled ++ case <-ctx.Done(): ++ return ctx.Err() ++ case <-cc.seenSettingsChan: ++ if !cc.extendedConnectAllowed { ++ return errExtendedConnectNotSupported ++ } ++ } ++ } + select { + case cc.reqHeaderMu <- struct{}{}: + case <-cs.reqCancel: +@@ -1714,10 +1748,14 @@ func (cs *clientStream) cleanupWriteRequest(err error) { + ping := false + if !closeOnIdle { + cc.mu.Lock() +- if cc.pendingResets == 0 { +- ping = true ++ // rstStreamPingsBlocked works around a gRPC behavior: ++ // see comment on the field for details. ++ if !cc.rstStreamPingsBlocked { ++ if cc.pendingResets == 0 { ++ ping = true ++ } ++ cc.pendingResets++ + } +- cc.pendingResets++ + cc.mu.Unlock() + } + cc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err) +@@ -2030,7 +2068,7 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) + + func validateHeaders(hdrs http.Header) string { + for k, vv := range hdrs { +- if !httpguts.ValidHeaderFieldName(k) { ++ if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { +@@ -2046,6 +2084,10 @@ func validateHeaders(hdrs http.Header) string { + + var errNilRequestURL = errors.New("http2: Request.URI is nil") + ++func isNormalConnect(req *http.Request) bool { ++ return req.Method == "CONNECT" && req.Header.Get(":protocol") == "" ++} ++ + // requires cc.wmu be held. + func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() +@@ -2066,7 +2108,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + } + + var path string +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path +@@ -2103,7 +2145,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + m = http.MethodGet + } + f(":method", m) +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + f(":path", path) + f(":scheme", req.URL.Scheme) + } +@@ -2461,7 +2503,7 @@ func (rl *clientConnReadLoop) run() error { + cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) + } + if se, ok := err.(StreamError); ok { +- if cs := rl.streamByID(se.StreamID); cs != nil { ++ if cs := rl.streamByID(se.StreamID, notHeaderOrDataFrame); cs != nil { + if se.Cause == nil { + se.Cause = cc.fr.errDetail + } +@@ -2507,13 +2549,16 @@ func (rl *clientConnReadLoop) run() error { + if VerboseLogs { + cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) + } ++ if !cc.seenSettings { ++ close(cc.seenSettingsChan) ++ } + return err + } + } + } + + func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this +@@ -2842,7 +2887,7 @@ func (b transportResponseBody) Close() error { + + func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + data := f.Data() + if cs == nil { + cc.mu.Lock() +@@ -2977,9 +3022,22 @@ func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + cs.abortStream(err) + } + +-func (rl *clientConnReadLoop) streamByID(id uint32) *clientStream { ++// Constants passed to streamByID for documentation purposes. ++const ( ++ headerOrDataFrame = true ++ notHeaderOrDataFrame = false ++) ++ ++// streamByID returns the stream with the given id, or nil if no stream has that id. ++// If headerOrData is true, it clears rst.StreamPingsBlocked. ++func (rl *clientConnReadLoop) streamByID(id uint32, headerOrData bool) *clientStream { + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() ++ if headerOrData { ++ // Work around an unfortunate gRPC behavior. ++ // See comment on ClientConn.rstStreamPingsBlocked for details. ++ rl.cc.rstStreamPingsBlocked = false ++ } + cs := rl.cc.streams[id] + if cs != nil && !cs.readAborted { + return cs +@@ -3073,6 +3131,21 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + case SettingHeaderTableSize: + cc.henc.SetMaxDynamicTableSize(s.Val) + cc.peerMaxHeaderTableSize = s.Val ++ case SettingEnableConnectProtocol: ++ if err := s.Valid(); err != nil { ++ return err ++ } ++ // If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL, ++ // we require that it do so in the first SETTINGS frame. ++ // ++ // When we attempt to use extended CONNECT, we wait for the first ++ // SETTINGS frame to see if the server supports it. If we let the ++ // server enable the feature with a later SETTINGS frame, then ++ // users will see inconsistent results depending on whether we've ++ // seen that frame or not. ++ if !cc.seenSettings { ++ cc.extendedConnectAllowed = s.Val == 1 ++ } + default: + cc.vlogf("Unhandled Setting: %v", s) + } +@@ -3090,6 +3163,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + // connection can establish to our default. + cc.maxConcurrentStreams = defaultMaxConcurrentStreams + } ++ close(cc.seenSettingsChan) + cc.seenSettings = true + } + +@@ -3098,7 +3172,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + + func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if f.StreamID != 0 && cs == nil { + return nil + } +@@ -3127,7 +3201,7 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + } + + func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if cs == nil { + // TODO: return error if server tries to RST_STREAM an idle stream + return nil +@@ -3205,6 +3279,7 @@ func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if cc.pendingResets > 0 { + // See clientStream.cleanupWriteRequest. + cc.pendingResets = 0 ++ cc.rstStreamPingsBlocked = true + cc.cond.Broadcast() + } + return nil +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go +index ccba391c9..6ebc48b3f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go +@@ -321,6 +321,9 @@ const ( + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f ++ AUDIT_IPE_ACCESS = 0x58c ++ AUDIT_IPE_CONFIG_CHANGE = 0x58d ++ AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 +@@ -489,6 +492,7 @@ const ( + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_QUERY_EFFECTIVE = 0x1 ++ BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 +@@ -1166,6 +1170,7 @@ const ( + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 ++ FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 +@@ -1799,6 +1804,8 @@ const ( + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 ++ LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 ++ LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 +@@ -1924,6 +1931,7 @@ const ( + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 ++ MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 +@@ -2970,6 +2978,7 @@ const ( + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 ++ SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +index 0c00cb3f3..c0d45e320 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -297,6 +298,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -335,6 +338,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +index dfb364554..c731d24f0 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -298,6 +299,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -336,6 +339,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +index d46dcf78a..680018a4a 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -303,6 +304,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -341,6 +344,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +index 3af3248a7..a63909f30 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -205,6 +206,7 @@ const ( + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 ++ POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 +@@ -294,6 +296,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -332,6 +336,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +index 292bcf028..9b0a2573f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -290,6 +291,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -328,6 +331,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +index 782b7110f..958e6e064 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +index 84973fd92..50c7f25bd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +index 6d9cbc3b2..ced21d66d 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +index 5f9fedbce..226c04419 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +index bb0026ee0..3122737cd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -351,6 +352,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -389,6 +392,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +index 46120db5c..eb5d3467e 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +index 5c951634f..e921ebc60 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +index 11a84d5af..38ba81c55 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -287,6 +288,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -325,6 +328,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +index f78c4617c..71f040097 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -359,6 +360,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -397,6 +400,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +index aeb777c34..c44a31332 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -350,6 +351,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x58 ++ SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c +@@ -436,6 +439,9 @@ const ( + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 ++ SO_DEVMEM_DMABUF = 0x58 ++ SO_DEVMEM_DONTNEED = 0x59 ++ SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +index d003c3d43..17c53bd9b 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +index 0d45a941a..2392226a7 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go +index 8daaf3faf..5537148dc 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go +@@ -2594,8 +2594,8 @@ const ( + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + +- SOF_TIMESTAMPING_LAST = 0x10000 +- SOF_TIMESTAMPING_MASK = 0x1ffff ++ SOF_TIMESTAMPING_LAST = 0x20000 ++ SOF_TIMESTAMPING_MASK = 0x3ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 +@@ -3541,7 +3541,7 @@ type Nhmsg struct { + type NexthopGrp struct { + Id uint32 + Weight uint8 +- Resvd1 uint8 ++ High uint8 + Resvd2 uint16 + } + +@@ -3802,7 +3802,7 @@ const ( + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 +- ETHTOOL_MSG_USER_MAX = 0x2c ++ ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 +@@ -3842,7 +3842,7 @@ const ( + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 +- ETHTOOL_MSG_KERNEL_MAX = 0x2c ++ ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 +@@ -3850,7 +3850,7 @@ const ( + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 +- ETHTOOL_A_HEADER_MAX = 0x3 ++ ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 +@@ -4031,11 +4031,11 @@ const ( + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 +- ETHTOOL_A_CABLE_RESULT_MAX = 0x2 ++ ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 +- ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 ++ ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 +@@ -4200,7 +4200,8 @@ type ( + } + PtpSysOffsetExtended struct { + Samples uint32 +- Rsv [3]uint32 ++ Clockid int32 ++ Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { +@@ -4399,6 +4400,7 @@ const ( + type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 ++ Scoped uint64 + } + + type LandlockPathBeneathAttr struct { +diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go +index 4510bfc3f..4a3254386 100644 +--- a/vendor/golang.org/x/sys/windows/syscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/syscall_windows.go +@@ -168,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { + //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW + //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) + //sys DisconnectNamedPipe(pipe Handle) (err error) ++//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) ++//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) + //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) + //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW + //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go +index 51311e205..9d138de5f 100644 +--- a/vendor/golang.org/x/sys/windows/types_windows.go ++++ b/vendor/golang.org/x/sys/windows/types_windows.go +@@ -176,6 +176,7 @@ const ( + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. ++ PROCESS_ALL_ACCESS = 0xFFFF + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 +diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +index 6f5252880..01c0716c2 100644 +--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +@@ -280,8 +280,10 @@ var ( + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") ++ procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") ++ procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") +@@ -1612,7 +1614,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si + } + + func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { +- r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) ++ r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1652,7 +1654,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + } + + func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1660,7 +1662,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + } + + func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1672,7 +1674,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1684,7 +1686,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -2446,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er + return + } + ++func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + if r1 == 0 { +@@ -2462,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 + return + } + ++func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { +diff --git a/vendor/modules.txt b/vendor/modules.txt +index 8db4816db..605f6aa6e 100644 +--- a/vendor/modules.txt ++++ b/vendor/modules.txt +@@ -199,7 +199,7 @@ go.opentelemetry.io/otel/metric/noop + ## explicit; go 1.22 + go.opentelemetry.io/otel/trace + go.opentelemetry.io/otel/trace/embedded +-# golang.org/x/net v0.31.0 ++# golang.org/x/net v0.33.0 + ## explicit; go 1.18 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 +@@ -211,15 +211,15 @@ golang.org/x/net/trace + ## explicit; go 1.18 + golang.org/x/oauth2 + golang.org/x/oauth2/internal +-# golang.org/x/sys v0.27.0 ++# golang.org/x/sys v0.28.0 + ## explicit; go 1.18 + golang.org/x/sys/plan9 + golang.org/x/sys/unix + golang.org/x/sys/windows +-# golang.org/x/term v0.26.0 ++# golang.org/x/term v0.27.0 + ## explicit; go 1.18 + golang.org/x/term +-# golang.org/x/text v0.20.0 ++# golang.org/x/text v0.21.0 + ## explicit; go 1.18 + golang.org/x/text/secure/bidirule + golang.org/x/text/transform +-- +2.40.1 + diff --git a/projects/kubernetes-csi/external-snapshotter/1-31/CHECKSUMS b/projects/kubernetes-csi/external-snapshotter/1-31/CHECKSUMS index 0c0275fb0..41b79ff3a 100644 --- a/projects/kubernetes-csi/external-snapshotter/1-31/CHECKSUMS +++ b/projects/kubernetes-csi/external-snapshotter/1-31/CHECKSUMS @@ -1,4 +1,4 @@ -3d1d5ed4b489a90131df5f3820834a14ff4b1412a94dbc57a4ddc93b0c5f2697 _output/1-31/bin/external-snapshotter/linux-amd64/csi-snapshotter -5bcec024f0edbfbf3a7717fc20eade52508ae8b99a6c859990083030dfb726f9 _output/1-31/bin/external-snapshotter/linux-amd64/snapshot-controller -c44d84691d2c8aac2c0ff781ab6ddb7dba44f05d70e3cd099a1d959c0d744f1e _output/1-31/bin/external-snapshotter/linux-arm64/csi-snapshotter -b5a95f54afd0a07f37db84bfebfac2dc48f630e01584c648410585ff5b212a2f _output/1-31/bin/external-snapshotter/linux-arm64/snapshot-controller +f2e35f9a04c1107ff7879eff28e27d4d73ab3ca0a7bf3b03e79ca6e49c868d5b _output/1-31/bin/external-snapshotter/linux-amd64/csi-snapshotter +414e65954b9e8c4dc7c393f1162fe4a8929aa26455f4e3b82f1fa3a81bcf9e23 _output/1-31/bin/external-snapshotter/linux-amd64/snapshot-controller +b039b425018524958614a03c5b48bafe8d8bc11081dd38767190888bb50ce885 _output/1-31/bin/external-snapshotter/linux-arm64/csi-snapshotter +09132bdd62acd4d4b4f62108a699c0f0053c6c513683263aacac65d49b09a523 _output/1-31/bin/external-snapshotter/linux-arm64/snapshot-controller diff --git a/projects/kubernetes-csi/external-snapshotter/1-31/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch b/projects/kubernetes-csi/external-snapshotter/1-31/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch new file mode 100644 index 000000000..3c49f3c83 --- /dev/null +++ b/projects/kubernetes-csi/external-snapshotter/1-31/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch @@ -0,0 +1,1524 @@ +From a918d1867148ed73d2a115022febbf75c63b036d Mon Sep 17 00:00:00 2001 +From: torredil +Date: Mon, 23 Dec 2024 20:31:42 +0000 +Subject: [PATCH] external-snapshotter Address CVE-2024-45338 + +Signed-off-by: torredil +--- + go.mod | 8 +- + go.sum | 16 +- + vendor/golang.org/x/net/http2/frame.go | 4 +- + vendor/golang.org/x/net/http2/http2.go | 42 ++++-- + vendor/golang.org/x/net/http2/server.go | 35 +++-- + vendor/golang.org/x/net/http2/transport.go | 137 ++++++++++++++---- + vendor/golang.org/x/sys/unix/zerrors_linux.go | 9 ++ + .../x/sys/unix/zerrors_linux_386.go | 6 + + .../x/sys/unix/zerrors_linux_amd64.go | 6 + + .../x/sys/unix/zerrors_linux_arm.go | 6 + + .../x/sys/unix/zerrors_linux_arm64.go | 7 + + .../x/sys/unix/zerrors_linux_loong64.go | 6 + + .../x/sys/unix/zerrors_linux_mips.go | 6 + + .../x/sys/unix/zerrors_linux_mips64.go | 6 + + .../x/sys/unix/zerrors_linux_mips64le.go | 6 + + .../x/sys/unix/zerrors_linux_mipsle.go | 6 + + .../x/sys/unix/zerrors_linux_ppc.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64le.go | 6 + + .../x/sys/unix/zerrors_linux_riscv64.go | 6 + + .../x/sys/unix/zerrors_linux_s390x.go | 6 + + .../x/sys/unix/zerrors_linux_sparc64.go | 6 + + .../x/sys/unix/ztypes_darwin_amd64.go | 60 ++++++++ + .../x/sys/unix/ztypes_darwin_arm64.go | 60 ++++++++ + vendor/golang.org/x/sys/unix/ztypes_linux.go | 20 +-- + .../x/sys/windows/syscall_windows.go | 2 + + .../golang.org/x/sys/windows/types_windows.go | 1 + + .../x/sys/windows/zsyscall_windows.go | 28 +++- + vendor/modules.txt | 8 +- + 29 files changed, 433 insertions(+), 88 deletions(-) + +diff --git a/go.mod b/go.mod +index 610fd2c07..f9ec62163 100644 +--- a/go.mod ++++ b/go.mod +@@ -61,11 +61,11 @@ require ( + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect +- golang.org/x/net v0.31.0 // indirect ++ golang.org/x/net v0.33.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect +- golang.org/x/sys v0.27.0 // indirect +- golang.org/x/term v0.26.0 // indirect +- golang.org/x/text v0.20.0 // indirect ++ golang.org/x/sys v0.28.0 // indirect ++ golang.org/x/term v0.27.0 // indirect ++ golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.8.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect +diff --git a/go.sum b/go.sum +index f4da8704d..e89710fb3 100644 +--- a/go.sum ++++ b/go.sum +@@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= + golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +-golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +-golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= ++golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= ++golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= + golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= + golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= + golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +@@ -150,15 +150,15 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +-golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= ++golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +-golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +-golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= ++golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= ++golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +-golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +-golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= ++golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= ++golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= + golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= + golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= + golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go +index 105c3b279..81faec7e7 100644 +--- a/vendor/golang.org/x/net/http2/frame.go ++++ b/vendor/golang.org/x/net/http2/frame.go +@@ -1490,7 +1490,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { +- case ":method", ":path", ":scheme", ":authority": ++ case ":method", ":path", ":scheme", ":authority", ":protocol": + isRequest = true + case ":status": + isResponse = true +@@ -1498,7 +1498,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. +- // This would be a bad algorithm, but N is 4. ++ // This would be a bad algorithm, but N is 5. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { +diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go +index 7688c356b..c7601c909 100644 +--- a/vendor/golang.org/x/net/http2/http2.go ++++ b/vendor/golang.org/x/net/http2/http2.go +@@ -34,10 +34,11 @@ import ( + ) + + var ( +- VerboseLogs bool +- logFrameWrites bool +- logFrameReads bool +- inTests bool ++ VerboseLogs bool ++ logFrameWrites bool ++ logFrameReads bool ++ inTests bool ++ disableExtendedConnectProtocol bool + ) + + func init() { +@@ -50,6 +51,9 @@ func init() { + logFrameWrites = true + logFrameReads = true + } ++ if strings.Contains(e, "http2xconnect=0") { ++ disableExtendedConnectProtocol = true ++ } + } + + const ( +@@ -141,6 +145,10 @@ func (s Setting) Valid() error { + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } ++ case SettingEnableConnectProtocol: ++ if s.Val != 1 && s.Val != 0 { ++ return ConnectionError(ErrCodeProtocol) ++ } + } + return nil + } +@@ -150,21 +158,23 @@ func (s Setting) Valid() error { + type SettingID uint16 + + const ( +- SettingHeaderTableSize SettingID = 0x1 +- SettingEnablePush SettingID = 0x2 +- SettingMaxConcurrentStreams SettingID = 0x3 +- SettingInitialWindowSize SettingID = 0x4 +- SettingMaxFrameSize SettingID = 0x5 +- SettingMaxHeaderListSize SettingID = 0x6 ++ SettingHeaderTableSize SettingID = 0x1 ++ SettingEnablePush SettingID = 0x2 ++ SettingMaxConcurrentStreams SettingID = 0x3 ++ SettingInitialWindowSize SettingID = 0x4 ++ SettingMaxFrameSize SettingID = 0x5 ++ SettingMaxHeaderListSize SettingID = 0x6 ++ SettingEnableConnectProtocol SettingID = 0x8 + ) + + var settingName = map[SettingID]string{ +- SettingHeaderTableSize: "HEADER_TABLE_SIZE", +- SettingEnablePush: "ENABLE_PUSH", +- SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", +- SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", +- SettingMaxFrameSize: "MAX_FRAME_SIZE", +- SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingHeaderTableSize: "HEADER_TABLE_SIZE", ++ SettingEnablePush: "ENABLE_PUSH", ++ SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", ++ SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", ++ SettingMaxFrameSize: "MAX_FRAME_SIZE", ++ SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingEnableConnectProtocol: "ENABLE_CONNECT_PROTOCOL", + } + + func (s SettingID) String() string { +diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go +index 832414b45..b55547aec 100644 +--- a/vendor/golang.org/x/net/http2/server.go ++++ b/vendor/golang.org/x/net/http2/server.go +@@ -932,14 +932,18 @@ func (sc *serverConn) serve(conf http2Config) { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + ++ settings := writeSettings{ ++ {SettingMaxFrameSize, conf.MaxReadFrameSize}, ++ {SettingMaxConcurrentStreams, sc.advMaxStreams}, ++ {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, ++ {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, ++ {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, ++ } ++ if !disableExtendedConnectProtocol { ++ settings = append(settings, Setting{SettingEnableConnectProtocol, 1}) ++ } + sc.writeFrame(FrameWriteRequest{ +- write: writeSettings{ +- {SettingMaxFrameSize, conf.MaxReadFrameSize}, +- {SettingMaxConcurrentStreams, sc.advMaxStreams}, +- {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, +- {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, +- {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, +- }, ++ write: settings, + }) + sc.unackedSettings++ + +@@ -1801,6 +1805,9 @@ func (sc *serverConn) processSetting(s Setting) error { + sc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31 + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val ++ case SettingEnableConnectProtocol: ++ // Receipt of this parameter by a server does not ++ // have any impact + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST +@@ -2231,11 +2238,17 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + scheme: f.PseudoValue("scheme"), + authority: f.PseudoValue("authority"), + path: f.PseudoValue("path"), ++ protocol: f.PseudoValue("protocol"), ++ } ++ ++ // extended connect is disabled, so we should not see :protocol ++ if disableExtendedConnectProtocol && rp.protocol != "" { ++ return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + + isConnect := rp.method == "CONNECT" + if isConnect { +- if rp.path != "" || rp.scheme != "" || rp.authority == "" { ++ if rp.protocol == "" && (rp.path != "" || rp.scheme != "" || rp.authority == "") { + return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { +@@ -2259,6 +2272,9 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + if rp.authority == "" { + rp.authority = rp.header.Get("Host") + } ++ if rp.protocol != "" { ++ rp.header.Set(":protocol", rp.protocol) ++ } + + rw, req, err := sc.newWriterAndRequestNoBody(st, rp) + if err != nil { +@@ -2285,6 +2301,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + type requestParam struct { + method string + scheme, authority, path string ++ protocol string + header http.Header + } + +@@ -2326,7 +2343,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r + + var url_ *url.URL + var requestURI string +- if rp.method == "CONNECT" { ++ if rp.method == "CONNECT" && rp.protocol == "" { + url_ = &url.URL{Host: rp.authority} + requestURI = rp.authority // mimic HTTP/1 server behavior + } else { +diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go +index f5968f440..090d0e1bd 100644 +--- a/vendor/golang.org/x/net/http2/transport.go ++++ b/vendor/golang.org/x/net/http2/transport.go +@@ -368,25 +368,26 @@ type ClientConn struct { + idleTimeout time.Duration // or 0 for never + idleTimer timer + +- mu sync.Mutex // guards following +- cond *sync.Cond // hold mu; broadcast on flow/closed changes +- flow outflow // our conn-level flow control quota (cs.outflow is per stream) +- inflow inflow // peer's conn-level flow control +- doNotReuse bool // whether conn is marked to not be reused for any future requests +- closing bool +- closed bool +- seenSettings bool // true if we've seen a settings frame, false otherwise +- wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back +- goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received +- goAwayDebug string // goAway frame's debug data, retained as a string +- streams map[uint32]*clientStream // client-initiated +- streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip +- nextStreamID uint32 +- pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams +- pings map[[8]byte]chan struct{} // in flight ping data to notification channel +- br *bufio.Reader +- lastActive time.Time +- lastIdle time.Time // time last idle ++ mu sync.Mutex // guards following ++ cond *sync.Cond // hold mu; broadcast on flow/closed changes ++ flow outflow // our conn-level flow control quota (cs.outflow is per stream) ++ inflow inflow // peer's conn-level flow control ++ doNotReuse bool // whether conn is marked to not be reused for any future requests ++ closing bool ++ closed bool ++ seenSettings bool // true if we've seen a settings frame, false otherwise ++ seenSettingsChan chan struct{} // closed when seenSettings is true or frame reading fails ++ wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back ++ goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received ++ goAwayDebug string // goAway frame's debug data, retained as a string ++ streams map[uint32]*clientStream // client-initiated ++ streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip ++ nextStreamID uint32 ++ pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams ++ pings map[[8]byte]chan struct{} // in flight ping data to notification channel ++ br *bufio.Reader ++ lastActive time.Time ++ lastIdle time.Time // time last idle + // Settings from peer: (also guarded by wmu) + maxFrameSize uint32 + maxConcurrentStreams uint32 +@@ -396,6 +397,17 @@ type ClientConn struct { + initialStreamRecvWindowSize int32 + readIdleTimeout time.Duration + pingTimeout time.Duration ++ extendedConnectAllowed bool ++ ++ // rstStreamPingsBlocked works around an unfortunate gRPC behavior. ++ // gRPC strictly limits the number of PING frames that it will receive. ++ // The default is two pings per two hours, but the limit resets every time ++ // the gRPC endpoint sends a HEADERS or DATA frame. See golang/go#70575. ++ // ++ // rstStreamPingsBlocked is set after receiving a response to a PING frame ++ // bundled with an RST_STREAM (see pendingResets below), and cleared after ++ // receiving a HEADERS or DATA frame. ++ rstStreamPingsBlocked bool + + // 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, +@@ -819,6 +831,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro + peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. + streams: make(map[uint32]*clientStream), + singleUse: singleUse, ++ seenSettingsChan: make(chan struct{}), + wantSettingsAck: true, + readIdleTimeout: conf.SendPingTimeout, + pingTimeout: conf.PingTimeout, +@@ -1466,6 +1479,8 @@ func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream) + cs.cleanupWriteRequest(err) + } + ++var errExtendedConnectNotSupported = errors.New("net/http: extended connect not supported by peer") ++ + // writeRequest sends a request. + // + // It returns nil after the request is written, the response read, +@@ -1481,12 +1496,31 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre + return err + } + ++ // wait for setting frames to be received, a server can change this value later, ++ // but we just wait for the first settings frame ++ var isExtendedConnect bool ++ if req.Method == "CONNECT" && req.Header.Get(":protocol") != "" { ++ isExtendedConnect = true ++ } ++ + // Acquire the new-request lock by writing to reqHeaderMu. + // This lock guards the critical section covering allocating a new stream ID + // (requires mu) and creating the stream (requires wmu). + if cc.reqHeaderMu == nil { + panic("RoundTrip on uninitialized ClientConn") // for tests + } ++ if isExtendedConnect { ++ select { ++ case <-cs.reqCancel: ++ return errRequestCanceled ++ case <-ctx.Done(): ++ return ctx.Err() ++ case <-cc.seenSettingsChan: ++ if !cc.extendedConnectAllowed { ++ return errExtendedConnectNotSupported ++ } ++ } ++ } + select { + case cc.reqHeaderMu <- struct{}{}: + case <-cs.reqCancel: +@@ -1714,10 +1748,14 @@ func (cs *clientStream) cleanupWriteRequest(err error) { + ping := false + if !closeOnIdle { + cc.mu.Lock() +- if cc.pendingResets == 0 { +- ping = true ++ // rstStreamPingsBlocked works around a gRPC behavior: ++ // see comment on the field for details. ++ if !cc.rstStreamPingsBlocked { ++ if cc.pendingResets == 0 { ++ ping = true ++ } ++ cc.pendingResets++ + } +- cc.pendingResets++ + cc.mu.Unlock() + } + cc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err) +@@ -2030,7 +2068,7 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) + + func validateHeaders(hdrs http.Header) string { + for k, vv := range hdrs { +- if !httpguts.ValidHeaderFieldName(k) { ++ if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { +@@ -2046,6 +2084,10 @@ func validateHeaders(hdrs http.Header) string { + + var errNilRequestURL = errors.New("http2: Request.URI is nil") + ++func isNormalConnect(req *http.Request) bool { ++ return req.Method == "CONNECT" && req.Header.Get(":protocol") == "" ++} ++ + // requires cc.wmu be held. + func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() +@@ -2066,7 +2108,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + } + + var path string +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path +@@ -2103,7 +2145,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + m = http.MethodGet + } + f(":method", m) +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + f(":path", path) + f(":scheme", req.URL.Scheme) + } +@@ -2461,7 +2503,7 @@ func (rl *clientConnReadLoop) run() error { + cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) + } + if se, ok := err.(StreamError); ok { +- if cs := rl.streamByID(se.StreamID); cs != nil { ++ if cs := rl.streamByID(se.StreamID, notHeaderOrDataFrame); cs != nil { + if se.Cause == nil { + se.Cause = cc.fr.errDetail + } +@@ -2507,13 +2549,16 @@ func (rl *clientConnReadLoop) run() error { + if VerboseLogs { + cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) + } ++ if !cc.seenSettings { ++ close(cc.seenSettingsChan) ++ } + return err + } + } + } + + func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this +@@ -2842,7 +2887,7 @@ func (b transportResponseBody) Close() error { + + func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + data := f.Data() + if cs == nil { + cc.mu.Lock() +@@ -2977,9 +3022,22 @@ func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + cs.abortStream(err) + } + +-func (rl *clientConnReadLoop) streamByID(id uint32) *clientStream { ++// Constants passed to streamByID for documentation purposes. ++const ( ++ headerOrDataFrame = true ++ notHeaderOrDataFrame = false ++) ++ ++// streamByID returns the stream with the given id, or nil if no stream has that id. ++// If headerOrData is true, it clears rst.StreamPingsBlocked. ++func (rl *clientConnReadLoop) streamByID(id uint32, headerOrData bool) *clientStream { + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() ++ if headerOrData { ++ // Work around an unfortunate gRPC behavior. ++ // See comment on ClientConn.rstStreamPingsBlocked for details. ++ rl.cc.rstStreamPingsBlocked = false ++ } + cs := rl.cc.streams[id] + if cs != nil && !cs.readAborted { + return cs +@@ -3073,6 +3131,21 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + case SettingHeaderTableSize: + cc.henc.SetMaxDynamicTableSize(s.Val) + cc.peerMaxHeaderTableSize = s.Val ++ case SettingEnableConnectProtocol: ++ if err := s.Valid(); err != nil { ++ return err ++ } ++ // If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL, ++ // we require that it do so in the first SETTINGS frame. ++ // ++ // When we attempt to use extended CONNECT, we wait for the first ++ // SETTINGS frame to see if the server supports it. If we let the ++ // server enable the feature with a later SETTINGS frame, then ++ // users will see inconsistent results depending on whether we've ++ // seen that frame or not. ++ if !cc.seenSettings { ++ cc.extendedConnectAllowed = s.Val == 1 ++ } + default: + cc.vlogf("Unhandled Setting: %v", s) + } +@@ -3090,6 +3163,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + // connection can establish to our default. + cc.maxConcurrentStreams = defaultMaxConcurrentStreams + } ++ close(cc.seenSettingsChan) + cc.seenSettings = true + } + +@@ -3098,7 +3172,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + + func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if f.StreamID != 0 && cs == nil { + return nil + } +@@ -3127,7 +3201,7 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + } + + func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if cs == nil { + // TODO: return error if server tries to RST_STREAM an idle stream + return nil +@@ -3205,6 +3279,7 @@ func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if cc.pendingResets > 0 { + // See clientStream.cleanupWriteRequest. + cc.pendingResets = 0 ++ cc.rstStreamPingsBlocked = true + cc.cond.Broadcast() + } + return nil +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go +index ccba391c9..6ebc48b3f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go +@@ -321,6 +321,9 @@ const ( + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f ++ AUDIT_IPE_ACCESS = 0x58c ++ AUDIT_IPE_CONFIG_CHANGE = 0x58d ++ AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 +@@ -489,6 +492,7 @@ const ( + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_QUERY_EFFECTIVE = 0x1 ++ BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 +@@ -1166,6 +1170,7 @@ const ( + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 ++ FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 +@@ -1799,6 +1804,8 @@ const ( + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 ++ LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 ++ LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 +@@ -1924,6 +1931,7 @@ const ( + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 ++ MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 +@@ -2970,6 +2978,7 @@ const ( + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 ++ SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +index 0c00cb3f3..c0d45e320 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -297,6 +298,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -335,6 +338,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +index dfb364554..c731d24f0 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -298,6 +299,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -336,6 +339,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +index d46dcf78a..680018a4a 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -303,6 +304,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -341,6 +344,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +index 3af3248a7..a63909f30 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -205,6 +206,7 @@ const ( + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 ++ POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 +@@ -294,6 +296,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -332,6 +336,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +index 292bcf028..9b0a2573f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -290,6 +291,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -328,6 +331,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +index 782b7110f..958e6e064 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +index 84973fd92..50c7f25bd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +index 6d9cbc3b2..ced21d66d 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +index 5f9fedbce..226c04419 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +index bb0026ee0..3122737cd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -351,6 +352,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -389,6 +392,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +index 46120db5c..eb5d3467e 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +index 5c951634f..e921ebc60 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +index 11a84d5af..38ba81c55 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -287,6 +288,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -325,6 +328,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +index f78c4617c..71f040097 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -359,6 +360,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -397,6 +400,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +index aeb777c34..c44a31332 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -350,6 +351,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x58 ++ SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c +@@ -436,6 +439,9 @@ const ( + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 ++ SO_DEVMEM_DMABUF = 0x58 ++ SO_DEVMEM_DONTNEED = 0x59 ++ SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +index d003c3d43..17c53bd9b 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +index 0d45a941a..2392226a7 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go +index 8daaf3faf..5537148dc 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go +@@ -2594,8 +2594,8 @@ const ( + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + +- SOF_TIMESTAMPING_LAST = 0x10000 +- SOF_TIMESTAMPING_MASK = 0x1ffff ++ SOF_TIMESTAMPING_LAST = 0x20000 ++ SOF_TIMESTAMPING_MASK = 0x3ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 +@@ -3541,7 +3541,7 @@ type Nhmsg struct { + type NexthopGrp struct { + Id uint32 + Weight uint8 +- Resvd1 uint8 ++ High uint8 + Resvd2 uint16 + } + +@@ -3802,7 +3802,7 @@ const ( + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 +- ETHTOOL_MSG_USER_MAX = 0x2c ++ ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 +@@ -3842,7 +3842,7 @@ const ( + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 +- ETHTOOL_MSG_KERNEL_MAX = 0x2c ++ ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 +@@ -3850,7 +3850,7 @@ const ( + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 +- ETHTOOL_A_HEADER_MAX = 0x3 ++ ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 +@@ -4031,11 +4031,11 @@ const ( + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 +- ETHTOOL_A_CABLE_RESULT_MAX = 0x2 ++ ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 +- ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 ++ ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 +@@ -4200,7 +4200,8 @@ type ( + } + PtpSysOffsetExtended struct { + Samples uint32 +- Rsv [3]uint32 ++ Clockid int32 ++ Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { +@@ -4399,6 +4400,7 @@ const ( + type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 ++ Scoped uint64 + } + + type LandlockPathBeneathAttr struct { +diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go +index 4510bfc3f..4a3254386 100644 +--- a/vendor/golang.org/x/sys/windows/syscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/syscall_windows.go +@@ -168,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { + //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW + //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) + //sys DisconnectNamedPipe(pipe Handle) (err error) ++//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) ++//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) + //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) + //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW + //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go +index 51311e205..9d138de5f 100644 +--- a/vendor/golang.org/x/sys/windows/types_windows.go ++++ b/vendor/golang.org/x/sys/windows/types_windows.go +@@ -176,6 +176,7 @@ const ( + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. ++ PROCESS_ALL_ACCESS = 0xFFFF + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 +diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +index 6f5252880..01c0716c2 100644 +--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +@@ -280,8 +280,10 @@ var ( + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") ++ procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") ++ procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") +@@ -1612,7 +1614,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si + } + + func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { +- r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) ++ r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1652,7 +1654,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + } + + func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1660,7 +1662,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + } + + func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1672,7 +1674,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1684,7 +1686,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -2446,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er + return + } + ++func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + if r1 == 0 { +@@ -2462,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 + return + } + ++func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { +diff --git a/vendor/modules.txt b/vendor/modules.txt +index 8db4816db..605f6aa6e 100644 +--- a/vendor/modules.txt ++++ b/vendor/modules.txt +@@ -199,7 +199,7 @@ go.opentelemetry.io/otel/metric/noop + ## explicit; go 1.22 + go.opentelemetry.io/otel/trace + go.opentelemetry.io/otel/trace/embedded +-# golang.org/x/net v0.31.0 ++# golang.org/x/net v0.33.0 + ## explicit; go 1.18 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 +@@ -211,15 +211,15 @@ golang.org/x/net/trace + ## explicit; go 1.18 + golang.org/x/oauth2 + golang.org/x/oauth2/internal +-# golang.org/x/sys v0.27.0 ++# golang.org/x/sys v0.28.0 + ## explicit; go 1.18 + golang.org/x/sys/plan9 + golang.org/x/sys/unix + golang.org/x/sys/windows +-# golang.org/x/term v0.26.0 ++# golang.org/x/term v0.27.0 + ## explicit; go 1.18 + golang.org/x/term +-# golang.org/x/text v0.20.0 ++# golang.org/x/text v0.21.0 + ## explicit; go 1.18 + golang.org/x/text/secure/bidirule + golang.org/x/text/transform +-- +2.40.1 + diff --git a/projects/kubernetes-csi/external-snapshotter/1-32/CHECKSUMS b/projects/kubernetes-csi/external-snapshotter/1-32/CHECKSUMS index d6cb76412..417692f86 100644 --- a/projects/kubernetes-csi/external-snapshotter/1-32/CHECKSUMS +++ b/projects/kubernetes-csi/external-snapshotter/1-32/CHECKSUMS @@ -1,4 +1,4 @@ -3d1d5ed4b489a90131df5f3820834a14ff4b1412a94dbc57a4ddc93b0c5f2697 _output/1-32/bin/external-snapshotter/linux-amd64/csi-snapshotter -5bcec024f0edbfbf3a7717fc20eade52508ae8b99a6c859990083030dfb726f9 _output/1-32/bin/external-snapshotter/linux-amd64/snapshot-controller -c44d84691d2c8aac2c0ff781ab6ddb7dba44f05d70e3cd099a1d959c0d744f1e _output/1-32/bin/external-snapshotter/linux-arm64/csi-snapshotter -b5a95f54afd0a07f37db84bfebfac2dc48f630e01584c648410585ff5b212a2f _output/1-32/bin/external-snapshotter/linux-arm64/snapshot-controller +f2e35f9a04c1107ff7879eff28e27d4d73ab3ca0a7bf3b03e79ca6e49c868d5b _output/1-32/bin/external-snapshotter/linux-amd64/csi-snapshotter +414e65954b9e8c4dc7c393f1162fe4a8929aa26455f4e3b82f1fa3a81bcf9e23 _output/1-32/bin/external-snapshotter/linux-amd64/snapshot-controller +b039b425018524958614a03c5b48bafe8d8bc11081dd38767190888bb50ce885 _output/1-32/bin/external-snapshotter/linux-arm64/csi-snapshotter +09132bdd62acd4d4b4f62108a699c0f0053c6c513683263aacac65d49b09a523 _output/1-32/bin/external-snapshotter/linux-arm64/snapshot-controller diff --git a/projects/kubernetes-csi/external-snapshotter/1-32/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch b/projects/kubernetes-csi/external-snapshotter/1-32/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch new file mode 100644 index 000000000..3c49f3c83 --- /dev/null +++ b/projects/kubernetes-csi/external-snapshotter/1-32/patches/0001-external-snapshotter-Address-CVE-2024-45338.patch @@ -0,0 +1,1524 @@ +From a918d1867148ed73d2a115022febbf75c63b036d Mon Sep 17 00:00:00 2001 +From: torredil +Date: Mon, 23 Dec 2024 20:31:42 +0000 +Subject: [PATCH] external-snapshotter Address CVE-2024-45338 + +Signed-off-by: torredil +--- + go.mod | 8 +- + go.sum | 16 +- + vendor/golang.org/x/net/http2/frame.go | 4 +- + vendor/golang.org/x/net/http2/http2.go | 42 ++++-- + vendor/golang.org/x/net/http2/server.go | 35 +++-- + vendor/golang.org/x/net/http2/transport.go | 137 ++++++++++++++---- + vendor/golang.org/x/sys/unix/zerrors_linux.go | 9 ++ + .../x/sys/unix/zerrors_linux_386.go | 6 + + .../x/sys/unix/zerrors_linux_amd64.go | 6 + + .../x/sys/unix/zerrors_linux_arm.go | 6 + + .../x/sys/unix/zerrors_linux_arm64.go | 7 + + .../x/sys/unix/zerrors_linux_loong64.go | 6 + + .../x/sys/unix/zerrors_linux_mips.go | 6 + + .../x/sys/unix/zerrors_linux_mips64.go | 6 + + .../x/sys/unix/zerrors_linux_mips64le.go | 6 + + .../x/sys/unix/zerrors_linux_mipsle.go | 6 + + .../x/sys/unix/zerrors_linux_ppc.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64.go | 6 + + .../x/sys/unix/zerrors_linux_ppc64le.go | 6 + + .../x/sys/unix/zerrors_linux_riscv64.go | 6 + + .../x/sys/unix/zerrors_linux_s390x.go | 6 + + .../x/sys/unix/zerrors_linux_sparc64.go | 6 + + .../x/sys/unix/ztypes_darwin_amd64.go | 60 ++++++++ + .../x/sys/unix/ztypes_darwin_arm64.go | 60 ++++++++ + vendor/golang.org/x/sys/unix/ztypes_linux.go | 20 +-- + .../x/sys/windows/syscall_windows.go | 2 + + .../golang.org/x/sys/windows/types_windows.go | 1 + + .../x/sys/windows/zsyscall_windows.go | 28 +++- + vendor/modules.txt | 8 +- + 29 files changed, 433 insertions(+), 88 deletions(-) + +diff --git a/go.mod b/go.mod +index 610fd2c07..f9ec62163 100644 +--- a/go.mod ++++ b/go.mod +@@ -61,11 +61,11 @@ require ( + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect +- golang.org/x/net v0.31.0 // indirect ++ golang.org/x/net v0.33.0 // indirect + golang.org/x/oauth2 v0.24.0 // indirect +- golang.org/x/sys v0.27.0 // indirect +- golang.org/x/term v0.26.0 // indirect +- golang.org/x/text v0.20.0 // indirect ++ golang.org/x/sys v0.28.0 // indirect ++ golang.org/x/term v0.27.0 // indirect ++ golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.8.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect +diff --git a/go.sum b/go.sum +index f4da8704d..e89710fb3 100644 +--- a/go.sum ++++ b/go.sum +@@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= + golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= + golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +-golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +-golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= ++golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= ++golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= + golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= + golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= + golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +@@ -150,15 +150,15 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= + golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +-golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +-golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= ++golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= ++golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +-golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= +-golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= ++golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= ++golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +-golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +-golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= ++golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= ++golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= + golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= + golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= + golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go +index 105c3b279..81faec7e7 100644 +--- a/vendor/golang.org/x/net/http2/frame.go ++++ b/vendor/golang.org/x/net/http2/frame.go +@@ -1490,7 +1490,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { +- case ":method", ":path", ":scheme", ":authority": ++ case ":method", ":path", ":scheme", ":authority", ":protocol": + isRequest = true + case ":status": + isResponse = true +@@ -1498,7 +1498,7 @@ func (mh *MetaHeadersFrame) checkPseudos() error { + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. +- // This would be a bad algorithm, but N is 4. ++ // This would be a bad algorithm, but N is 5. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { +diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go +index 7688c356b..c7601c909 100644 +--- a/vendor/golang.org/x/net/http2/http2.go ++++ b/vendor/golang.org/x/net/http2/http2.go +@@ -34,10 +34,11 @@ import ( + ) + + var ( +- VerboseLogs bool +- logFrameWrites bool +- logFrameReads bool +- inTests bool ++ VerboseLogs bool ++ logFrameWrites bool ++ logFrameReads bool ++ inTests bool ++ disableExtendedConnectProtocol bool + ) + + func init() { +@@ -50,6 +51,9 @@ func init() { + logFrameWrites = true + logFrameReads = true + } ++ if strings.Contains(e, "http2xconnect=0") { ++ disableExtendedConnectProtocol = true ++ } + } + + const ( +@@ -141,6 +145,10 @@ func (s Setting) Valid() error { + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } ++ case SettingEnableConnectProtocol: ++ if s.Val != 1 && s.Val != 0 { ++ return ConnectionError(ErrCodeProtocol) ++ } + } + return nil + } +@@ -150,21 +158,23 @@ func (s Setting) Valid() error { + type SettingID uint16 + + const ( +- SettingHeaderTableSize SettingID = 0x1 +- SettingEnablePush SettingID = 0x2 +- SettingMaxConcurrentStreams SettingID = 0x3 +- SettingInitialWindowSize SettingID = 0x4 +- SettingMaxFrameSize SettingID = 0x5 +- SettingMaxHeaderListSize SettingID = 0x6 ++ SettingHeaderTableSize SettingID = 0x1 ++ SettingEnablePush SettingID = 0x2 ++ SettingMaxConcurrentStreams SettingID = 0x3 ++ SettingInitialWindowSize SettingID = 0x4 ++ SettingMaxFrameSize SettingID = 0x5 ++ SettingMaxHeaderListSize SettingID = 0x6 ++ SettingEnableConnectProtocol SettingID = 0x8 + ) + + var settingName = map[SettingID]string{ +- SettingHeaderTableSize: "HEADER_TABLE_SIZE", +- SettingEnablePush: "ENABLE_PUSH", +- SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", +- SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", +- SettingMaxFrameSize: "MAX_FRAME_SIZE", +- SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingHeaderTableSize: "HEADER_TABLE_SIZE", ++ SettingEnablePush: "ENABLE_PUSH", ++ SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", ++ SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", ++ SettingMaxFrameSize: "MAX_FRAME_SIZE", ++ SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", ++ SettingEnableConnectProtocol: "ENABLE_CONNECT_PROTOCOL", + } + + func (s SettingID) String() string { +diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go +index 832414b45..b55547aec 100644 +--- a/vendor/golang.org/x/net/http2/server.go ++++ b/vendor/golang.org/x/net/http2/server.go +@@ -932,14 +932,18 @@ func (sc *serverConn) serve(conf http2Config) { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + ++ settings := writeSettings{ ++ {SettingMaxFrameSize, conf.MaxReadFrameSize}, ++ {SettingMaxConcurrentStreams, sc.advMaxStreams}, ++ {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, ++ {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, ++ {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, ++ } ++ if !disableExtendedConnectProtocol { ++ settings = append(settings, Setting{SettingEnableConnectProtocol, 1}) ++ } + sc.writeFrame(FrameWriteRequest{ +- write: writeSettings{ +- {SettingMaxFrameSize, conf.MaxReadFrameSize}, +- {SettingMaxConcurrentStreams, sc.advMaxStreams}, +- {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, +- {SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, +- {SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)}, +- }, ++ write: settings, + }) + sc.unackedSettings++ + +@@ -1801,6 +1805,9 @@ func (sc *serverConn) processSetting(s Setting) error { + sc.maxFrameSize = int32(s.Val) // the maximum valid s.Val is < 2^31 + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val ++ case SettingEnableConnectProtocol: ++ // Receipt of this parameter by a server does not ++ // have any impact + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST +@@ -2231,11 +2238,17 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + scheme: f.PseudoValue("scheme"), + authority: f.PseudoValue("authority"), + path: f.PseudoValue("path"), ++ protocol: f.PseudoValue("protocol"), ++ } ++ ++ // extended connect is disabled, so we should not see :protocol ++ if disableExtendedConnectProtocol && rp.protocol != "" { ++ return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + + isConnect := rp.method == "CONNECT" + if isConnect { +- if rp.path != "" || rp.scheme != "" || rp.authority == "" { ++ if rp.protocol == "" && (rp.path != "" || rp.scheme != "" || rp.authority == "") { + return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) + } + } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { +@@ -2259,6 +2272,9 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + if rp.authority == "" { + rp.authority = rp.header.Get("Host") + } ++ if rp.protocol != "" { ++ rp.header.Set(":protocol", rp.protocol) ++ } + + rw, req, err := sc.newWriterAndRequestNoBody(st, rp) + if err != nil { +@@ -2285,6 +2301,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res + type requestParam struct { + method string + scheme, authority, path string ++ protocol string + header http.Header + } + +@@ -2326,7 +2343,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r + + var url_ *url.URL + var requestURI string +- if rp.method == "CONNECT" { ++ if rp.method == "CONNECT" && rp.protocol == "" { + url_ = &url.URL{Host: rp.authority} + requestURI = rp.authority // mimic HTTP/1 server behavior + } else { +diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go +index f5968f440..090d0e1bd 100644 +--- a/vendor/golang.org/x/net/http2/transport.go ++++ b/vendor/golang.org/x/net/http2/transport.go +@@ -368,25 +368,26 @@ type ClientConn struct { + idleTimeout time.Duration // or 0 for never + idleTimer timer + +- mu sync.Mutex // guards following +- cond *sync.Cond // hold mu; broadcast on flow/closed changes +- flow outflow // our conn-level flow control quota (cs.outflow is per stream) +- inflow inflow // peer's conn-level flow control +- doNotReuse bool // whether conn is marked to not be reused for any future requests +- closing bool +- closed bool +- seenSettings bool // true if we've seen a settings frame, false otherwise +- wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back +- goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received +- goAwayDebug string // goAway frame's debug data, retained as a string +- streams map[uint32]*clientStream // client-initiated +- streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip +- nextStreamID uint32 +- pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams +- pings map[[8]byte]chan struct{} // in flight ping data to notification channel +- br *bufio.Reader +- lastActive time.Time +- lastIdle time.Time // time last idle ++ mu sync.Mutex // guards following ++ cond *sync.Cond // hold mu; broadcast on flow/closed changes ++ flow outflow // our conn-level flow control quota (cs.outflow is per stream) ++ inflow inflow // peer's conn-level flow control ++ doNotReuse bool // whether conn is marked to not be reused for any future requests ++ closing bool ++ closed bool ++ seenSettings bool // true if we've seen a settings frame, false otherwise ++ seenSettingsChan chan struct{} // closed when seenSettings is true or frame reading fails ++ wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back ++ goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received ++ goAwayDebug string // goAway frame's debug data, retained as a string ++ streams map[uint32]*clientStream // client-initiated ++ streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip ++ nextStreamID uint32 ++ pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams ++ pings map[[8]byte]chan struct{} // in flight ping data to notification channel ++ br *bufio.Reader ++ lastActive time.Time ++ lastIdle time.Time // time last idle + // Settings from peer: (also guarded by wmu) + maxFrameSize uint32 + maxConcurrentStreams uint32 +@@ -396,6 +397,17 @@ type ClientConn struct { + initialStreamRecvWindowSize int32 + readIdleTimeout time.Duration + pingTimeout time.Duration ++ extendedConnectAllowed bool ++ ++ // rstStreamPingsBlocked works around an unfortunate gRPC behavior. ++ // gRPC strictly limits the number of PING frames that it will receive. ++ // The default is two pings per two hours, but the limit resets every time ++ // the gRPC endpoint sends a HEADERS or DATA frame. See golang/go#70575. ++ // ++ // rstStreamPingsBlocked is set after receiving a response to a PING frame ++ // bundled with an RST_STREAM (see pendingResets below), and cleared after ++ // receiving a HEADERS or DATA frame. ++ rstStreamPingsBlocked bool + + // 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, +@@ -819,6 +831,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro + peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. + streams: make(map[uint32]*clientStream), + singleUse: singleUse, ++ seenSettingsChan: make(chan struct{}), + wantSettingsAck: true, + readIdleTimeout: conf.SendPingTimeout, + pingTimeout: conf.PingTimeout, +@@ -1466,6 +1479,8 @@ func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream) + cs.cleanupWriteRequest(err) + } + ++var errExtendedConnectNotSupported = errors.New("net/http: extended connect not supported by peer") ++ + // writeRequest sends a request. + // + // It returns nil after the request is written, the response read, +@@ -1481,12 +1496,31 @@ func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStre + return err + } + ++ // wait for setting frames to be received, a server can change this value later, ++ // but we just wait for the first settings frame ++ var isExtendedConnect bool ++ if req.Method == "CONNECT" && req.Header.Get(":protocol") != "" { ++ isExtendedConnect = true ++ } ++ + // Acquire the new-request lock by writing to reqHeaderMu. + // This lock guards the critical section covering allocating a new stream ID + // (requires mu) and creating the stream (requires wmu). + if cc.reqHeaderMu == nil { + panic("RoundTrip on uninitialized ClientConn") // for tests + } ++ if isExtendedConnect { ++ select { ++ case <-cs.reqCancel: ++ return errRequestCanceled ++ case <-ctx.Done(): ++ return ctx.Err() ++ case <-cc.seenSettingsChan: ++ if !cc.extendedConnectAllowed { ++ return errExtendedConnectNotSupported ++ } ++ } ++ } + select { + case cc.reqHeaderMu <- struct{}{}: + case <-cs.reqCancel: +@@ -1714,10 +1748,14 @@ func (cs *clientStream) cleanupWriteRequest(err error) { + ping := false + if !closeOnIdle { + cc.mu.Lock() +- if cc.pendingResets == 0 { +- ping = true ++ // rstStreamPingsBlocked works around a gRPC behavior: ++ // see comment on the field for details. ++ if !cc.rstStreamPingsBlocked { ++ if cc.pendingResets == 0 { ++ ping = true ++ } ++ cc.pendingResets++ + } +- cc.pendingResets++ + cc.mu.Unlock() + } + cc.writeStreamReset(cs.ID, ErrCodeCancel, ping, err) +@@ -2030,7 +2068,7 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) + + func validateHeaders(hdrs http.Header) string { + for k, vv := range hdrs { +- if !httpguts.ValidHeaderFieldName(k) { ++ if !httpguts.ValidHeaderFieldName(k) && k != ":protocol" { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { +@@ -2046,6 +2084,10 @@ func validateHeaders(hdrs http.Header) string { + + var errNilRequestURL = errors.New("http2: Request.URI is nil") + ++func isNormalConnect(req *http.Request) bool { ++ return req.Method == "CONNECT" && req.Header.Get(":protocol") == "" ++} ++ + // requires cc.wmu be held. + func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() +@@ -2066,7 +2108,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + } + + var path string +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + path = req.URL.RequestURI() + if !validPseudoPath(path) { + orig := path +@@ -2103,7 +2145,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail + m = http.MethodGet + } + f(":method", m) +- if req.Method != "CONNECT" { ++ if !isNormalConnect(req) { + f(":path", path) + f(":scheme", req.URL.Scheme) + } +@@ -2461,7 +2503,7 @@ func (rl *clientConnReadLoop) run() error { + cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) + } + if se, ok := err.(StreamError); ok { +- if cs := rl.streamByID(se.StreamID); cs != nil { ++ if cs := rl.streamByID(se.StreamID, notHeaderOrDataFrame); cs != nil { + if se.Cause == nil { + se.Cause = cc.fr.errDetail + } +@@ -2507,13 +2549,16 @@ func (rl *clientConnReadLoop) run() error { + if VerboseLogs { + cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", cc, summarizeFrame(f), err) + } ++ if !cc.seenSettings { ++ close(cc.seenSettingsChan) ++ } + return err + } + } + } + + func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this +@@ -2842,7 +2887,7 @@ func (b transportResponseBody) Close() error { + + func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, headerOrDataFrame) + data := f.Data() + if cs == nil { + cc.mu.Lock() +@@ -2977,9 +3022,22 @@ func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + cs.abortStream(err) + } + +-func (rl *clientConnReadLoop) streamByID(id uint32) *clientStream { ++// Constants passed to streamByID for documentation purposes. ++const ( ++ headerOrDataFrame = true ++ notHeaderOrDataFrame = false ++) ++ ++// streamByID returns the stream with the given id, or nil if no stream has that id. ++// If headerOrData is true, it clears rst.StreamPingsBlocked. ++func (rl *clientConnReadLoop) streamByID(id uint32, headerOrData bool) *clientStream { + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() ++ if headerOrData { ++ // Work around an unfortunate gRPC behavior. ++ // See comment on ClientConn.rstStreamPingsBlocked for details. ++ rl.cc.rstStreamPingsBlocked = false ++ } + cs := rl.cc.streams[id] + if cs != nil && !cs.readAborted { + return cs +@@ -3073,6 +3131,21 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + case SettingHeaderTableSize: + cc.henc.SetMaxDynamicTableSize(s.Val) + cc.peerMaxHeaderTableSize = s.Val ++ case SettingEnableConnectProtocol: ++ if err := s.Valid(); err != nil { ++ return err ++ } ++ // If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL, ++ // we require that it do so in the first SETTINGS frame. ++ // ++ // When we attempt to use extended CONNECT, we wait for the first ++ // SETTINGS frame to see if the server supports it. If we let the ++ // server enable the feature with a later SETTINGS frame, then ++ // users will see inconsistent results depending on whether we've ++ // seen that frame or not. ++ if !cc.seenSettings { ++ cc.extendedConnectAllowed = s.Val == 1 ++ } + default: + cc.vlogf("Unhandled Setting: %v", s) + } +@@ -3090,6 +3163,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + // connection can establish to our default. + cc.maxConcurrentStreams = defaultMaxConcurrentStreams + } ++ close(cc.seenSettingsChan) + cc.seenSettings = true + } + +@@ -3098,7 +3172,7 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { + + func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if f.StreamID != 0 && cs == nil { + return nil + } +@@ -3127,7 +3201,7 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + } + + func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { +- cs := rl.streamByID(f.StreamID) ++ cs := rl.streamByID(f.StreamID, notHeaderOrDataFrame) + if cs == nil { + // TODO: return error if server tries to RST_STREAM an idle stream + return nil +@@ -3205,6 +3279,7 @@ func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if cc.pendingResets > 0 { + // See clientStream.cleanupWriteRequest. + cc.pendingResets = 0 ++ cc.rstStreamPingsBlocked = true + cc.cond.Broadcast() + } + return nil +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go +index ccba391c9..6ebc48b3f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go +@@ -321,6 +321,9 @@ const ( + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f ++ AUDIT_IPE_ACCESS = 0x58c ++ AUDIT_IPE_CONFIG_CHANGE = 0x58d ++ AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 +@@ -489,6 +492,7 @@ const ( + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_QUERY_EFFECTIVE = 0x1 ++ BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 +@@ -1166,6 +1170,7 @@ const ( + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 ++ FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 +@@ -1799,6 +1804,8 @@ const ( + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 ++ LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 ++ LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 +@@ -1924,6 +1931,7 @@ const ( + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 ++ MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 +@@ -2970,6 +2978,7 @@ const ( + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 ++ SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +index 0c00cb3f3..c0d45e320 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -297,6 +298,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -335,6 +338,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +index dfb364554..c731d24f0 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -298,6 +299,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -336,6 +339,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +index d46dcf78a..680018a4a 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -303,6 +304,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -341,6 +344,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +index 3af3248a7..a63909f30 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -205,6 +206,7 @@ const ( + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 ++ POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 +@@ -294,6 +296,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -332,6 +336,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +index 292bcf028..9b0a2573f 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +@@ -109,6 +109,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -290,6 +291,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -328,6 +331,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +index 782b7110f..958e6e064 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +index 84973fd92..50c7f25bd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +index 6d9cbc3b2..ced21d66d 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +index 5f9fedbce..226c04419 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 +@@ -296,6 +297,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -334,6 +337,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +index bb0026ee0..3122737cd 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -351,6 +352,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -389,6 +392,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +index 46120db5c..eb5d3467e 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +index 5c951634f..e921ebc60 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 +@@ -355,6 +356,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -393,6 +396,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +index 11a84d5af..38ba81c55 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -287,6 +288,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -325,6 +328,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +index f78c4617c..71f040097 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +@@ -108,6 +108,7 @@ const ( + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 ++ HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -359,6 +360,8 @@ const ( + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f ++ SCM_DEVMEM_DMABUF = 0x4f ++ SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a +@@ -397,6 +400,9 @@ const ( + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 ++ SO_DEVMEM_DMABUF = 0x4f ++ SO_DEVMEM_DONTNEED = 0x50 ++ SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 +diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +index aeb777c34..c44a31332 100644 +--- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go ++++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +@@ -112,6 +112,7 @@ const ( + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 ++ HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 +@@ -350,6 +351,8 @@ const ( + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f ++ SCM_DEVMEM_DMABUF = 0x58 ++ SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c +@@ -436,6 +439,9 @@ const ( + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 ++ SO_DEVMEM_DMABUF = 0x58 ++ SO_DEVMEM_DONTNEED = 0x59 ++ SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +index d003c3d43..17c53bd9b 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +index 0d45a941a..2392226a7 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +@@ -462,11 +462,14 @@ type FdSet struct { + + const ( + SizeofIfMsghdr = 0x70 ++ SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 ++ SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c ++ SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 + ) + +@@ -480,6 +483,20 @@ type IfMsghdr struct { + Data IfData + } + ++type IfMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Addrs int32 ++ Flags int32 ++ Index uint16 ++ Snd_len int32 ++ Snd_maxlen int32 ++ Snd_drops int32 ++ Timer int32 ++ Data IfData64 ++} ++ + type IfData struct { + Type uint8 + Typelen uint8 +@@ -512,6 +529,34 @@ type IfData struct { + Reserved2 uint32 + } + ++type IfData64 struct { ++ Type uint8 ++ Typelen uint8 ++ Physical uint8 ++ Addrlen uint8 ++ Hdrlen uint8 ++ Recvquota uint8 ++ Xmitquota uint8 ++ Unused1 uint8 ++ Mtu uint32 ++ Metric uint32 ++ Baudrate uint64 ++ Ipackets uint64 ++ Ierrors uint64 ++ Opackets uint64 ++ Oerrors uint64 ++ Collisions uint64 ++ Ibytes uint64 ++ Obytes uint64 ++ Imcasts uint64 ++ Omcasts uint64 ++ Iqdrops uint64 ++ Noproto uint64 ++ Recvtiming uint32 ++ Xmittiming uint32 ++ Lastchange Timeval32 ++} ++ + type IfaMsghdr struct { + Msglen uint16 + Version uint8 +@@ -557,6 +602,21 @@ type RtMsghdr struct { + Rmx RtMetrics + } + ++type RtMsghdr2 struct { ++ Msglen uint16 ++ Version uint8 ++ Type uint8 ++ Index uint16 ++ Flags int32 ++ Addrs int32 ++ Refcnt int32 ++ Parentflags int32 ++ Reserved int32 ++ Use int32 ++ Inits uint32 ++ Rmx RtMetrics ++} ++ + type RtMetrics struct { + Locks uint32 + Mtu uint32 +diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go +index 8daaf3faf..5537148dc 100644 +--- a/vendor/golang.org/x/sys/unix/ztypes_linux.go ++++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go +@@ -2594,8 +2594,8 @@ const ( + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + +- SOF_TIMESTAMPING_LAST = 0x10000 +- SOF_TIMESTAMPING_MASK = 0x1ffff ++ SOF_TIMESTAMPING_LAST = 0x20000 ++ SOF_TIMESTAMPING_MASK = 0x3ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 +@@ -3541,7 +3541,7 @@ type Nhmsg struct { + type NexthopGrp struct { + Id uint32 + Weight uint8 +- Resvd1 uint8 ++ High uint8 + Resvd2 uint16 + } + +@@ -3802,7 +3802,7 @@ const ( + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 +- ETHTOOL_MSG_USER_MAX = 0x2c ++ ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 +@@ -3842,7 +3842,7 @@ const ( + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 +- ETHTOOL_MSG_KERNEL_MAX = 0x2c ++ ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 +@@ -3850,7 +3850,7 @@ const ( + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 +- ETHTOOL_A_HEADER_MAX = 0x3 ++ ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 +@@ -4031,11 +4031,11 @@ const ( + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 +- ETHTOOL_A_CABLE_RESULT_MAX = 0x2 ++ ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 +- ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 ++ ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 +@@ -4200,7 +4200,8 @@ type ( + } + PtpSysOffsetExtended struct { + Samples uint32 +- Rsv [3]uint32 ++ Clockid int32 ++ Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { +@@ -4399,6 +4400,7 @@ const ( + type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 ++ Scoped uint64 + } + + type LandlockPathBeneathAttr struct { +diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go +index 4510bfc3f..4a3254386 100644 +--- a/vendor/golang.org/x/sys/windows/syscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/syscall_windows.go +@@ -168,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { + //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW + //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) + //sys DisconnectNamedPipe(pipe Handle) (err error) ++//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) ++//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) + //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) + //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW + //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go +index 51311e205..9d138de5f 100644 +--- a/vendor/golang.org/x/sys/windows/types_windows.go ++++ b/vendor/golang.org/x/sys/windows/types_windows.go +@@ -176,6 +176,7 @@ const ( + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. ++ PROCESS_ALL_ACCESS = 0xFFFF + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 +diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +index 6f5252880..01c0716c2 100644 +--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go ++++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go +@@ -280,8 +280,10 @@ var ( + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") ++ procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") ++ procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") +@@ -1612,7 +1614,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si + } + + func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { +- r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) ++ r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1652,7 +1654,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + } + + func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1660,7 +1662,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + } + + func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { +- r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) ++ r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1672,7 +1674,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -1684,7 +1686,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext + if initialNotification { + _p0 = 1 + } +- r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) ++ r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } +@@ -2446,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er + return + } + ++func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + if r1 == 0 { +@@ -2462,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 + return + } + ++func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { ++ r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) ++ if r1 == 0 { ++ err = errnoErr(e1) ++ } ++ return ++} ++ + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { +diff --git a/vendor/modules.txt b/vendor/modules.txt +index 8db4816db..605f6aa6e 100644 +--- a/vendor/modules.txt ++++ b/vendor/modules.txt +@@ -199,7 +199,7 @@ go.opentelemetry.io/otel/metric/noop + ## explicit; go 1.22 + go.opentelemetry.io/otel/trace + go.opentelemetry.io/otel/trace/embedded +-# golang.org/x/net v0.31.0 ++# golang.org/x/net v0.33.0 + ## explicit; go 1.18 + golang.org/x/net/http/httpguts + golang.org/x/net/http2 +@@ -211,15 +211,15 @@ golang.org/x/net/trace + ## explicit; go 1.18 + golang.org/x/oauth2 + golang.org/x/oauth2/internal +-# golang.org/x/sys v0.27.0 ++# golang.org/x/sys v0.28.0 + ## explicit; go 1.18 + golang.org/x/sys/plan9 + golang.org/x/sys/unix + golang.org/x/sys/windows +-# golang.org/x/term v0.26.0 ++# golang.org/x/term v0.27.0 + ## explicit; go 1.18 + golang.org/x/term +-# golang.org/x/text v0.20.0 ++# golang.org/x/text v0.21.0 + ## explicit; go 1.18 + golang.org/x/text/secure/bidirule + golang.org/x/text/transform +-- +2.40.1 +