diff options
| author | 2024-10-07 12:02:26 +0000 | |
|---|---|---|
| committer | 2024-10-07 12:02:26 +0000 | |
| commit | 33bd97a535834de4cec1b331ed511cb1ea49c4fe (patch) | |
| tree | aeaf0edf99c78f630456b8b167982c613138133f /vendor | |
| parent | update go-ffmpreg to v0.3.1 (pulls in latest wazero too) (#3398) (diff) | |
| download | gotosocial-33bd97a535834de4cec1b331ed511cb1ea49c4fe.tar.xz | |
[chore]: Bump golang.org/x/net from 0.29.0 to 0.30.0 (#3402)
Diffstat (limited to 'vendor')
42 files changed, 666 insertions, 239 deletions
diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go index 1ea9275b8..a01ef4357 100644 --- a/vendor/golang.org/x/crypto/sha3/shake.go +++ b/vendor/golang.org/x/crypto/sha3/shake.go @@ -85,9 +85,9 @@ func newCShake(N, S []byte, rate, outputLen int, dsbyte byte) ShakeHash {  	// leftEncode returns max 9 bytes  	c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) -	c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...) +	c.initBlock = append(c.initBlock, leftEncode(uint64(len(N))*8)...)  	c.initBlock = append(c.initBlock, N...) -	c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...) +	c.initBlock = append(c.initBlock, leftEncode(uint64(len(S))*8)...)  	c.initBlock = append(c.initBlock, S...)  	c.Write(bytepad(c.initBlock, c.rate))  	return &c diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index 3ca9e89e2..c0d1c29e6 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -510,8 +510,8 @@ userAuthLoop:  			if err := s.transport.writePacket(Marshal(discMsg)); err != nil {  				return nil, err  			} - -			return nil, discMsg +			authErrs = append(authErrs, discMsg) +			return nil, &ServerAuthError{Errors: authErrs}  		}  		var userAuthReq userAuthRequestMsg diff --git a/vendor/golang.org/x/net/http2/config.go b/vendor/golang.org/x/net/http2/config.go new file mode 100644 index 000000000..de58dfb8d --- /dev/null +++ b/vendor/golang.org/x/net/http2/config.go @@ -0,0 +1,122 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( +	"math" +	"net/http" +	"time" +) + +// http2Config is a package-internal version of net/http.HTTP2Config. +// +// http.HTTP2Config was added in Go 1.24. +// When running with a version of net/http that includes HTTP2Config, +// we merge the configuration with the fields in Transport or Server +// to produce an http2Config. +// +// Zero valued fields in http2Config are interpreted as in the +// net/http.HTTPConfig documentation. +// +// Precedence order for reconciling configurations is: +// +//   - Use the net/http.{Server,Transport}.HTTP2Config value, when non-zero. +//   - Otherwise use the http2.{Server.Transport} value. +//   - If the resulting value is zero or out of range, use a default. +type http2Config struct { +	MaxConcurrentStreams         uint32 +	MaxDecoderHeaderTableSize    uint32 +	MaxEncoderHeaderTableSize    uint32 +	MaxReadFrameSize             uint32 +	MaxUploadBufferPerConnection int32 +	MaxUploadBufferPerStream     int32 +	SendPingTimeout              time.Duration +	PingTimeout                  time.Duration +	WriteByteTimeout             time.Duration +	PermitProhibitedCipherSuites bool +	CountError                   func(errType string) +} + +// configFromServer merges configuration settings from +// net/http.Server.HTTP2Config and http2.Server. +func configFromServer(h1 *http.Server, h2 *Server) http2Config { +	conf := http2Config{ +		MaxConcurrentStreams:         h2.MaxConcurrentStreams, +		MaxEncoderHeaderTableSize:    h2.MaxEncoderHeaderTableSize, +		MaxDecoderHeaderTableSize:    h2.MaxDecoderHeaderTableSize, +		MaxReadFrameSize:             h2.MaxReadFrameSize, +		MaxUploadBufferPerConnection: h2.MaxUploadBufferPerConnection, +		MaxUploadBufferPerStream:     h2.MaxUploadBufferPerStream, +		SendPingTimeout:              h2.ReadIdleTimeout, +		PingTimeout:                  h2.PingTimeout, +		WriteByteTimeout:             h2.WriteByteTimeout, +		PermitProhibitedCipherSuites: h2.PermitProhibitedCipherSuites, +		CountError:                   h2.CountError, +	} +	fillNetHTTPServerConfig(&conf, h1) +	setConfigDefaults(&conf, true) +	return conf +} + +// configFromServer merges configuration settings from h2 and h2.t1.HTTP2 +// (the net/http Transport). +func configFromTransport(h2 *Transport) http2Config { +	conf := http2Config{ +		MaxEncoderHeaderTableSize: h2.MaxEncoderHeaderTableSize, +		MaxDecoderHeaderTableSize: h2.MaxDecoderHeaderTableSize, +		MaxReadFrameSize:          h2.MaxReadFrameSize, +		SendPingTimeout:           h2.ReadIdleTimeout, +		PingTimeout:               h2.PingTimeout, +		WriteByteTimeout:          h2.WriteByteTimeout, +	} + +	// Unlike most config fields, where out-of-range values revert to the default, +	// Transport.MaxReadFrameSize clips. +	if conf.MaxReadFrameSize < minMaxFrameSize { +		conf.MaxReadFrameSize = minMaxFrameSize +	} else if conf.MaxReadFrameSize > maxFrameSize { +		conf.MaxReadFrameSize = maxFrameSize +	} + +	if h2.t1 != nil { +		fillNetHTTPTransportConfig(&conf, h2.t1) +	} +	setConfigDefaults(&conf, false) +	return conf +} + +func setDefault[T ~int | ~int32 | ~uint32 | ~int64](v *T, minval, maxval, defval T) { +	if *v < minval || *v > maxval { +		*v = defval +	} +} + +func setConfigDefaults(conf *http2Config, server bool) { +	setDefault(&conf.MaxConcurrentStreams, 1, math.MaxUint32, defaultMaxStreams) +	setDefault(&conf.MaxEncoderHeaderTableSize, 1, math.MaxUint32, initialHeaderTableSize) +	setDefault(&conf.MaxDecoderHeaderTableSize, 1, math.MaxUint32, initialHeaderTableSize) +	if server { +		setDefault(&conf.MaxUploadBufferPerConnection, initialWindowSize, math.MaxInt32, 1<<20) +	} else { +		setDefault(&conf.MaxUploadBufferPerConnection, initialWindowSize, math.MaxInt32, transportDefaultConnFlow) +	} +	if server { +		setDefault(&conf.MaxUploadBufferPerStream, 1, math.MaxInt32, 1<<20) +	} else { +		setDefault(&conf.MaxUploadBufferPerStream, 1, math.MaxInt32, transportDefaultStreamFlow) +	} +	setDefault(&conf.MaxReadFrameSize, minMaxFrameSize, maxFrameSize, defaultMaxReadFrameSize) +	setDefault(&conf.PingTimeout, 1, math.MaxInt64, 15*time.Second) +} + +// adjustHTTP1MaxHeaderSize converts a limit in bytes on the size of an HTTP/1 header +// to an HTTP/2 MAX_HEADER_LIST_SIZE value. +func adjustHTTP1MaxHeaderSize(n int64) int64 { +	// http2's count is in a slightly different unit and includes 32 bytes per pair. +	// So, take the net/http.Server value and pad it up a bit, assuming 10 headers. +	const perFieldOverhead = 32 // per http2 spec +	const typicalHeaders = 10   // conservative +	return n + typicalHeaders*perFieldOverhead +} diff --git a/vendor/golang.org/x/net/http2/config_go124.go b/vendor/golang.org/x/net/http2/config_go124.go new file mode 100644 index 000000000..e3784123c --- /dev/null +++ b/vendor/golang.org/x/net/http2/config_go124.go @@ -0,0 +1,61 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.24 + +package http2 + +import "net/http" + +// fillNetHTTPServerConfig sets fields in conf from srv.HTTP2. +func fillNetHTTPServerConfig(conf *http2Config, srv *http.Server) { +	fillNetHTTPConfig(conf, srv.HTTP2) +} + +// fillNetHTTPServerConfig sets fields in conf from tr.HTTP2. +func fillNetHTTPTransportConfig(conf *http2Config, tr *http.Transport) { +	fillNetHTTPConfig(conf, tr.HTTP2) +} + +func fillNetHTTPConfig(conf *http2Config, h2 *http.HTTP2Config) { +	if h2 == nil { +		return +	} +	if h2.MaxConcurrentStreams != 0 { +		conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams) +	} +	if h2.MaxEncoderHeaderTableSize != 0 { +		conf.MaxEncoderHeaderTableSize = uint32(h2.MaxEncoderHeaderTableSize) +	} +	if h2.MaxDecoderHeaderTableSize != 0 { +		conf.MaxDecoderHeaderTableSize = uint32(h2.MaxDecoderHeaderTableSize) +	} +	if h2.MaxConcurrentStreams != 0 { +		conf.MaxConcurrentStreams = uint32(h2.MaxConcurrentStreams) +	} +	if h2.MaxReadFrameSize != 0 { +		conf.MaxReadFrameSize = uint32(h2.MaxReadFrameSize) +	} +	if h2.MaxReceiveBufferPerConnection != 0 { +		conf.MaxUploadBufferPerConnection = int32(h2.MaxReceiveBufferPerConnection) +	} +	if h2.MaxReceiveBufferPerStream != 0 { +		conf.MaxUploadBufferPerStream = int32(h2.MaxReceiveBufferPerStream) +	} +	if h2.SendPingTimeout != 0 { +		conf.SendPingTimeout = h2.SendPingTimeout +	} +	if h2.PingTimeout != 0 { +		conf.PingTimeout = h2.PingTimeout +	} +	if h2.WriteByteTimeout != 0 { +		conf.WriteByteTimeout = h2.WriteByteTimeout +	} +	if h2.PermitProhibitedCipherSuites { +		conf.PermitProhibitedCipherSuites = true +	} +	if h2.CountError != nil { +		conf.CountError = h2.CountError +	} +} diff --git a/vendor/golang.org/x/net/http2/config_pre_go124.go b/vendor/golang.org/x/net/http2/config_pre_go124.go new file mode 100644 index 000000000..060fd6c64 --- /dev/null +++ b/vendor/golang.org/x/net/http2/config_pre_go124.go @@ -0,0 +1,16 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.24 + +package http2 + +import "net/http" + +// Pre-Go 1.24 fallback. +// The Server.HTTP2 and Transport.HTTP2 config fields were added in Go 1.24. + +func fillNetHTTPServerConfig(conf *http2Config, srv *http.Server) {} + +func fillNetHTTPTransportConfig(conf *http2Config, tr *http.Transport) {} diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index 003e649f3..7688c356b 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -19,8 +19,9 @@ import (  	"bufio"  	"context"  	"crypto/tls" +	"errors"  	"fmt" -	"io" +	"net"  	"net/http"  	"os"  	"sort" @@ -237,13 +238,19 @@ func (cw closeWaiter) Wait() {  // Its buffered writer is lazily allocated as needed, to minimize  // idle memory usage with many connections.  type bufferedWriter struct { -	_  incomparable -	w  io.Writer     // immutable -	bw *bufio.Writer // non-nil when data is buffered +	_           incomparable +	group       synctestGroupInterface // immutable +	conn        net.Conn               // immutable +	bw          *bufio.Writer          // non-nil when data is buffered +	byteTimeout time.Duration          // immutable, WriteByteTimeout  } -func newBufferedWriter(w io.Writer) *bufferedWriter { -	return &bufferedWriter{w: w} +func newBufferedWriter(group synctestGroupInterface, conn net.Conn, timeout time.Duration) *bufferedWriter { +	return &bufferedWriter{ +		group:       group, +		conn:        conn, +		byteTimeout: timeout, +	}  }  // bufWriterPoolBufferSize is the size of bufio.Writer's @@ -270,7 +277,7 @@ func (w *bufferedWriter) Available() int {  func (w *bufferedWriter) Write(p []byte) (n int, err error) {  	if w.bw == nil {  		bw := bufWriterPool.Get().(*bufio.Writer) -		bw.Reset(w.w) +		bw.Reset((*bufferedWriterTimeoutWriter)(w))  		w.bw = bw  	}  	return w.bw.Write(p) @@ -288,6 +295,38 @@ func (w *bufferedWriter) Flush() error {  	return err  } +type bufferedWriterTimeoutWriter bufferedWriter + +func (w *bufferedWriterTimeoutWriter) Write(p []byte) (n int, err error) { +	return writeWithByteTimeout(w.group, w.conn, w.byteTimeout, p) +} + +// writeWithByteTimeout writes to conn. +// If more than timeout passes without any bytes being written to the connection, +// the write fails. +func writeWithByteTimeout(group synctestGroupInterface, conn net.Conn, timeout time.Duration, p []byte) (n int, err error) { +	if timeout <= 0 { +		return conn.Write(p) +	} +	for { +		var now time.Time +		if group == nil { +			now = time.Now() +		} else { +			now = group.Now() +		} +		conn.SetWriteDeadline(now.Add(timeout)) +		nn, err := conn.Write(p[n:]) +		n += nn +		if n == len(p) || nn == 0 || !errors.Is(err, os.ErrDeadlineExceeded) { +			// Either we finished the write, made no progress, or hit the deadline. +			// Whichever it is, we're done now. +			conn.SetWriteDeadline(time.Time{}) +			return n, err +		} +	} +} +  func mustUint31(v int32) uint32 {  	if v < 0 || v > 2147483647 {  		panic("out of range") diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 6c349f3ec..617b4a476 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -29,6 +29,7 @@ import (  	"bufio"  	"bytes"  	"context" +	"crypto/rand"  	"crypto/tls"  	"errors"  	"fmt" @@ -52,10 +53,14 @@ import (  )  const ( -	prefaceTimeout         = 10 * time.Second -	firstSettingsTimeout   = 2 * time.Second // should be in-flight with preface anyway -	handlerChunkWriteSize  = 4 << 10 -	defaultMaxStreams      = 250 // TODO: make this 100 as the GFE seems to? +	prefaceTimeout        = 10 * time.Second +	firstSettingsTimeout  = 2 * time.Second // should be in-flight with preface anyway +	handlerChunkWriteSize = 4 << 10 +	defaultMaxStreams     = 250 // TODO: make this 100 as the GFE seems to? + +	// maxQueuedControlFrames is the maximum number of control frames like +	// SETTINGS, PING and RST_STREAM that will be queued for writing before +	// the connection is closed to prevent memory exhaustion attacks.  	maxQueuedControlFrames = 10000  ) @@ -127,6 +132,22 @@ type Server struct {  	// If zero or negative, there is no timeout.  	IdleTimeout time.Duration +	// ReadIdleTimeout is the timeout after which a health check using a ping +	// frame will be carried out if no frame is received on the connection. +	// If zero, no health check is performed. +	ReadIdleTimeout time.Duration + +	// PingTimeout is the timeout after which the connection will be closed +	// if a response to a ping is not received. +	// If zero, a default of 15 seconds is used. +	PingTimeout time.Duration + +	// WriteByteTimeout is the timeout after which a connection will be +	// closed if no data can be written to it. The timeout begins when data is +	// available to write, and is extended whenever any bytes are written. +	// If zero or negative, there is no timeout. +	WriteByteTimeout time.Duration +  	// MaxUploadBufferPerConnection is the size of the initial flow  	// control window for each connections. The HTTP/2 spec does not  	// allow this to be smaller than 65535 or larger than 2^32-1. @@ -189,57 +210,6 @@ func (s *Server) afterFunc(d time.Duration, f func()) timer {  	return timeTimer{time.AfterFunc(d, f)}  } -func (s *Server) initialConnRecvWindowSize() int32 { -	if s.MaxUploadBufferPerConnection >= initialWindowSize { -		return s.MaxUploadBufferPerConnection -	} -	return 1 << 20 -} - -func (s *Server) initialStreamRecvWindowSize() int32 { -	if s.MaxUploadBufferPerStream > 0 { -		return s.MaxUploadBufferPerStream -	} -	return 1 << 20 -} - -func (s *Server) maxReadFrameSize() uint32 { -	if v := s.MaxReadFrameSize; v >= minMaxFrameSize && v <= maxFrameSize { -		return v -	} -	return defaultMaxReadFrameSize -} - -func (s *Server) maxConcurrentStreams() uint32 { -	if v := s.MaxConcurrentStreams; v > 0 { -		return v -	} -	return defaultMaxStreams -} - -func (s *Server) maxDecoderHeaderTableSize() uint32 { -	if v := s.MaxDecoderHeaderTableSize; v > 0 { -		return v -	} -	return initialHeaderTableSize -} - -func (s *Server) maxEncoderHeaderTableSize() uint32 { -	if v := s.MaxEncoderHeaderTableSize; v > 0 { -		return v -	} -	return initialHeaderTableSize -} - -// maxQueuedControlFrames is the maximum number of control frames like -// SETTINGS, PING and RST_STREAM that will be queued for writing before -// the connection is closed to prevent memory exhaustion attacks. -func (s *Server) maxQueuedControlFrames() int { -	// TODO: if anybody asks, add a Server field, and remember to define the -	// behavior of negative values. -	return maxQueuedControlFrames -} -  type serverInternalState struct {  	mu          sync.Mutex  	activeConns map[*serverConn]struct{} @@ -440,13 +410,15 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon  	baseCtx, cancel := serverConnBaseContext(c, opts)  	defer cancel() +	http1srv := opts.baseConfig() +	conf := configFromServer(http1srv, s)  	sc := &serverConn{  		srv:                         s, -		hs:                          opts.baseConfig(), +		hs:                          http1srv,  		conn:                        c,  		baseCtx:                     baseCtx,  		remoteAddrStr:               c.RemoteAddr().String(), -		bw:                          newBufferedWriter(c), +		bw:                          newBufferedWriter(s.group, c, conf.WriteByteTimeout),  		handler:                     opts.handler(),  		streams:                     make(map[uint32]*stream),  		readFrameCh:                 make(chan readFrameResult), @@ -456,9 +428,12 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon  		bodyReadCh:                  make(chan bodyReadMsg),         // buffering doesn't matter either way  		doneServing:                 make(chan struct{}),  		clientMaxStreams:            math.MaxUint32, // Section 6.5.2: "Initially, there is no limit to this value" -		advMaxStreams:               s.maxConcurrentStreams(), +		advMaxStreams:               conf.MaxConcurrentStreams,  		initialStreamSendWindowSize: initialWindowSize, +		initialStreamRecvWindowSize: conf.MaxUploadBufferPerStream,  		maxFrameSize:                initialMaxFrameSize, +		pingTimeout:                 conf.PingTimeout, +		countErrorFunc:              conf.CountError,  		serveG:                      newGoroutineLock(),  		pushEnabled:                 true,  		sawClientPreface:            opts.SawClientPreface, @@ -491,15 +466,15 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon  	sc.flow.add(initialWindowSize)  	sc.inflow.init(initialWindowSize)  	sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf) -	sc.hpackEncoder.SetMaxDynamicTableSizeLimit(s.maxEncoderHeaderTableSize()) +	sc.hpackEncoder.SetMaxDynamicTableSizeLimit(conf.MaxEncoderHeaderTableSize)  	fr := NewFramer(sc.bw, c) -	if s.CountError != nil { -		fr.countError = s.CountError +	if conf.CountError != nil { +		fr.countError = conf.CountError  	} -	fr.ReadMetaHeaders = hpack.NewDecoder(s.maxDecoderHeaderTableSize(), nil) +	fr.ReadMetaHeaders = hpack.NewDecoder(conf.MaxDecoderHeaderTableSize, nil)  	fr.MaxHeaderListSize = sc.maxHeaderListSize() -	fr.SetMaxReadFrameSize(s.maxReadFrameSize()) +	fr.SetMaxReadFrameSize(conf.MaxReadFrameSize)  	sc.framer = fr  	if tc, ok := c.(connectionStater); ok { @@ -532,7 +507,7 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon  			// So for now, do nothing here again.  		} -		if !s.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) { +		if !conf.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) {  			// "Endpoints MAY choose to generate a connection error  			// (Section 5.4.1) of type INADEQUATE_SECURITY if one of  			// the prohibited cipher suites are negotiated." @@ -569,7 +544,7 @@ func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverCon  		opts.UpgradeRequest = nil  	} -	sc.serve() +	sc.serve(conf)  }  func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) { @@ -609,6 +584,7 @@ type serverConn struct {  	tlsState         *tls.ConnectionState   // shared by all handlers, like net/http  	remoteAddrStr    string  	writeSched       WriteScheduler +	countErrorFunc   func(errType string)  	// Everything following is owned by the serve loop; use serveG.check():  	serveG                      goroutineLock // used to verify funcs are on serve() @@ -628,6 +604,7 @@ type serverConn struct {  	streams                     map[uint32]*stream  	unstartedHandlers           []unstartedHandler  	initialStreamSendWindowSize int32 +	initialStreamRecvWindowSize int32  	maxFrameSize                int32  	peerMaxHeaderListSize       uint32            // zero means unknown (default)  	canonHeader                 map[string]string // http2-lower-case -> Go-Canonical-Case @@ -638,9 +615,14 @@ type serverConn struct {  	inGoAway                    bool              // we've started to or sent GOAWAY  	inFrameScheduleLoop         bool              // whether we're in the scheduleFrameWrite loop  	needToSendGoAway            bool              // we need to schedule a GOAWAY frame write +	pingSent                    bool +	sentPingData                [8]byte  	goAwayCode                  ErrCode  	shutdownTimer               timer // nil until used  	idleTimer                   timer // nil if unused +	readIdleTimeout             time.Duration +	pingTimeout                 time.Duration +	readIdleTimer               timer // nil if unused  	// Owned by the writeFrameAsync goroutine:  	headerWriteBuf bytes.Buffer @@ -655,11 +637,7 @@ func (sc *serverConn) maxHeaderListSize() uint32 {  	if n <= 0 {  		n = http.DefaultMaxHeaderBytes  	} -	// http2's count is in a slightly different unit and includes 32 bytes per pair. -	// So, take the net/http.Server value and pad it up a bit, assuming 10 headers. -	const perFieldOverhead = 32 // per http2 spec -	const typicalHeaders = 10   // conservative -	return uint32(n + typicalHeaders*perFieldOverhead) +	return uint32(adjustHTTP1MaxHeaderSize(int64(n)))  }  func (sc *serverConn) curOpenStreams() uint32 { @@ -923,7 +901,7 @@ func (sc *serverConn) notePanic() {  	}  } -func (sc *serverConn) serve() { +func (sc *serverConn) serve(conf http2Config) {  	sc.serveG.check()  	defer sc.notePanic()  	defer sc.conn.Close() @@ -937,18 +915,18 @@ func (sc *serverConn) serve() {  	sc.writeFrame(FrameWriteRequest{  		write: writeSettings{ -			{SettingMaxFrameSize, sc.srv.maxReadFrameSize()}, +			{SettingMaxFrameSize, conf.MaxReadFrameSize},  			{SettingMaxConcurrentStreams, sc.advMaxStreams},  			{SettingMaxHeaderListSize, sc.maxHeaderListSize()}, -			{SettingHeaderTableSize, sc.srv.maxDecoderHeaderTableSize()}, -			{SettingInitialWindowSize, uint32(sc.srv.initialStreamRecvWindowSize())}, +			{SettingHeaderTableSize, conf.MaxDecoderHeaderTableSize}, +			{SettingInitialWindowSize, uint32(sc.initialStreamRecvWindowSize)},  		},  	})  	sc.unackedSettings++  	// Each connection starts with initialWindowSize inflow tokens.  	// If a higher value is configured, we add more tokens. -	if diff := sc.srv.initialConnRecvWindowSize() - initialWindowSize; diff > 0 { +	if diff := conf.MaxUploadBufferPerConnection - initialWindowSize; diff > 0 {  		sc.sendWindowUpdate(nil, int(diff))  	} @@ -968,11 +946,18 @@ func (sc *serverConn) serve() {  		defer sc.idleTimer.Stop()  	} +	if conf.SendPingTimeout > 0 { +		sc.readIdleTimeout = conf.SendPingTimeout +		sc.readIdleTimer = sc.srv.afterFunc(conf.SendPingTimeout, sc.onReadIdleTimer) +		defer sc.readIdleTimer.Stop() +	} +  	go sc.readFrames() // closed by defer sc.conn.Close above  	settingsTimer := sc.srv.afterFunc(firstSettingsTimeout, sc.onSettingsTimer)  	defer settingsTimer.Stop() +	lastFrameTime := sc.srv.now()  	loopNum := 0  	for {  		loopNum++ @@ -986,6 +971,7 @@ func (sc *serverConn) serve() {  		case res := <-sc.wroteFrameCh:  			sc.wroteFrame(res)  		case res := <-sc.readFrameCh: +			lastFrameTime = sc.srv.now()  			// Process any written frames before reading new frames from the client since a  			// written frame could have triggered a new stream to be started.  			if sc.writingFrameAsync { @@ -1017,6 +1003,8 @@ func (sc *serverConn) serve() {  				case idleTimerMsg:  					sc.vlogf("connection is idle")  					sc.goAway(ErrCodeNo) +				case readIdleTimerMsg: +					sc.handlePingTimer(lastFrameTime)  				case shutdownTimerMsg:  					sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr())  					return @@ -1039,7 +1027,7 @@ func (sc *serverConn) serve() {  		// If the peer is causing us to generate a lot of control frames,  		// but not reading them from us, assume they are trying to make us  		// run out of memory. -		if sc.queuedControlFrames > sc.srv.maxQueuedControlFrames() { +		if sc.queuedControlFrames > maxQueuedControlFrames {  			sc.vlogf("http2: too many control frames in send queue, closing connection")  			return  		} @@ -1055,12 +1043,39 @@ func (sc *serverConn) serve() {  	}  } +func (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) { +	if sc.pingSent { +		sc.vlogf("timeout waiting for PING response") +		sc.conn.Close() +		return +	} + +	pingAt := lastFrameReadTime.Add(sc.readIdleTimeout) +	now := sc.srv.now() +	if pingAt.After(now) { +		// We received frames since arming the ping timer. +		// Reset it for the next possible timeout. +		sc.readIdleTimer.Reset(pingAt.Sub(now)) +		return +	} + +	sc.pingSent = true +	// Ignore crypto/rand.Read errors: It generally can't fail, and worse case if it does +	// is we send a PING frame containing 0s. +	_, _ = rand.Read(sc.sentPingData[:]) +	sc.writeFrame(FrameWriteRequest{ +		write: &writePing{data: sc.sentPingData}, +	}) +	sc.readIdleTimer.Reset(sc.pingTimeout) +} +  type serverMessage int  // Message values sent to serveMsgCh.  var (  	settingsTimerMsg    = new(serverMessage)  	idleTimerMsg        = new(serverMessage) +	readIdleTimerMsg    = new(serverMessage)  	shutdownTimerMsg    = new(serverMessage)  	gracefulShutdownMsg = new(serverMessage)  	handlerDoneMsg      = new(serverMessage) @@ -1068,6 +1083,7 @@ var (  func (sc *serverConn) onSettingsTimer() { sc.sendServeMsg(settingsTimerMsg) }  func (sc *serverConn) onIdleTimer()     { sc.sendServeMsg(idleTimerMsg) } +func (sc *serverConn) onReadIdleTimer() { sc.sendServeMsg(readIdleTimerMsg) }  func (sc *serverConn) onShutdownTimer() { sc.sendServeMsg(shutdownTimerMsg) }  func (sc *serverConn) sendServeMsg(msg interface{}) { @@ -1320,6 +1336,10 @@ func (sc *serverConn) wroteFrame(res frameWriteResult) {  	sc.writingFrame = false  	sc.writingFrameAsync = false +	if res.err != nil { +		sc.conn.Close() +	} +  	wr := res.wr  	if writeEndsStream(wr.write) { @@ -1594,6 +1614,11 @@ func (sc *serverConn) processFrame(f Frame) error {  func (sc *serverConn) processPing(f *PingFrame) error {  	sc.serveG.check()  	if f.IsAck() { +		if sc.pingSent && sc.sentPingData == f.Data { +			// This is a response to a PING we sent. +			sc.pingSent = false +			sc.readIdleTimer.Reset(sc.readIdleTimeout) +		}  		// 6.7 PING: " An endpoint MUST NOT respond to PING frames  		// containing this flag."  		return nil @@ -2160,7 +2185,7 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream  	st.cw.Init()  	st.flow.conn = &sc.flow // link to conn-level counter  	st.flow.add(sc.initialStreamSendWindowSize) -	st.inflow.init(sc.srv.initialStreamRecvWindowSize()) +	st.inflow.init(sc.initialStreamRecvWindowSize)  	if sc.hs.WriteTimeout > 0 {  		st.writeDeadline = sc.srv.afterFunc(sc.hs.WriteTimeout, st.onWriteTimeout)  	} @@ -3301,7 +3326,7 @@ func (sc *serverConn) countError(name string, err error) error {  	if sc == nil || sc.srv == nil {  		return err  	} -	f := sc.srv.CountError +	f := sc.countErrorFunc  	if f == nil {  		return err  	} diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 61f511f97..0c5f64aa8 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -25,7 +25,6 @@ import (  	"net/http"  	"net/http/httptrace"  	"net/textproto" -	"os"  	"sort"  	"strconv"  	"strings" @@ -227,40 +226,26 @@ func (t *Transport) contextWithTimeout(ctx context.Context, d time.Duration) (co  }  func (t *Transport) maxHeaderListSize() uint32 { -	if t.MaxHeaderListSize == 0 { +	n := int64(t.MaxHeaderListSize) +	if t.t1 != nil && t.t1.MaxResponseHeaderBytes != 0 { +		n = t.t1.MaxResponseHeaderBytes +		if n > 0 { +			n = adjustHTTP1MaxHeaderSize(n) +		} +	} +	if n <= 0 {  		return 10 << 20  	} -	if t.MaxHeaderListSize == 0xffffffff { +	if n >= 0xffffffff {  		return 0  	} -	return t.MaxHeaderListSize -} - -func (t *Transport) maxFrameReadSize() uint32 { -	if t.MaxReadFrameSize == 0 { -		return 0 // use the default provided by the peer -	} -	if t.MaxReadFrameSize < minMaxFrameSize { -		return minMaxFrameSize -	} -	if t.MaxReadFrameSize > maxFrameSize { -		return maxFrameSize -	} -	return t.MaxReadFrameSize +	return uint32(n)  }  func (t *Transport) disableCompression() bool {  	return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)  } -func (t *Transport) pingTimeout() time.Duration { -	if t.PingTimeout == 0 { -		return 15 * time.Second -	} -	return t.PingTimeout - -} -  // ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.  // It returns an error if t1 has already been HTTP/2-enabled.  // @@ -370,11 +355,14 @@ type ClientConn struct {  	lastActive      time.Time  	lastIdle        time.Time // time last idle  	// Settings from peer: (also guarded by wmu) -	maxFrameSize           uint32 -	maxConcurrentStreams   uint32 -	peerMaxHeaderListSize  uint64 -	peerMaxHeaderTableSize uint32 -	initialWindowSize      uint32 +	maxFrameSize                uint32 +	maxConcurrentStreams        uint32 +	peerMaxHeaderListSize       uint64 +	peerMaxHeaderTableSize      uint32 +	initialWindowSize           uint32 +	initialStreamRecvWindowSize int32 +	readIdleTimeout             time.Duration +	pingTimeout                 time.Duration  	// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.  	// Write to reqHeaderMu to lock it, read from it to unlock. @@ -499,6 +487,7 @@ func (cs *clientStream) closeReqBodyLocked() {  }  type stickyErrWriter struct { +	group   synctestGroupInterface  	conn    net.Conn  	timeout time.Duration  	err     *error @@ -508,22 +497,9 @@ func (sew stickyErrWriter) Write(p []byte) (n int, err error) {  	if *sew.err != nil {  		return 0, *sew.err  	} -	for { -		if sew.timeout != 0 { -			sew.conn.SetWriteDeadline(time.Now().Add(sew.timeout)) -		} -		nn, err := sew.conn.Write(p[n:]) -		n += nn -		if n < len(p) && nn > 0 && errors.Is(err, os.ErrDeadlineExceeded) { -			// Keep extending the deadline so long as we're making progress. -			continue -		} -		if sew.timeout != 0 { -			sew.conn.SetWriteDeadline(time.Time{}) -		} -		*sew.err = err -		return n, err -	} +	n, err = writeWithByteTimeout(sew.group, sew.conn, sew.timeout, p) +	*sew.err = err +	return n, err  }  // noCachedConnError is the concrete type of ErrNoCachedConn, which @@ -758,44 +734,36 @@ func (t *Transport) expectContinueTimeout() time.Duration {  	return t.t1.ExpectContinueTimeout  } -func (t *Transport) maxDecoderHeaderTableSize() uint32 { -	if v := t.MaxDecoderHeaderTableSize; v > 0 { -		return v -	} -	return initialHeaderTableSize -} - -func (t *Transport) maxEncoderHeaderTableSize() uint32 { -	if v := t.MaxEncoderHeaderTableSize; v > 0 { -		return v -	} -	return initialHeaderTableSize -} -  func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {  	return t.newClientConn(c, t.disableKeepAlives())  }  func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, error) { +	conf := configFromTransport(t)  	cc := &ClientConn{ -		t:                     t, -		tconn:                 c, -		readerDone:            make(chan struct{}), -		nextStreamID:          1, -		maxFrameSize:          16 << 10,                    // spec default -		initialWindowSize:     65535,                       // spec default -		maxConcurrentStreams:  initialMaxConcurrentStreams, // "infinite", per spec. Use a smaller value until we have received server settings. -		peerMaxHeaderListSize: 0xffffffffffffffff,          // "infinite", per spec. Use 2^64-1 instead. -		streams:               make(map[uint32]*clientStream), -		singleUse:             singleUse, -		wantSettingsAck:       true, -		pings:                 make(map[[8]byte]chan struct{}), -		reqHeaderMu:           make(chan struct{}, 1), -	} +		t:                           t, +		tconn:                       c, +		readerDone:                  make(chan struct{}), +		nextStreamID:                1, +		maxFrameSize:                16 << 10, // spec default +		initialWindowSize:           65535,    // spec default +		initialStreamRecvWindowSize: conf.MaxUploadBufferPerStream, +		maxConcurrentStreams:        initialMaxConcurrentStreams, // "infinite", per spec. Use a smaller value until we have received server settings. +		peerMaxHeaderListSize:       0xffffffffffffffff,          // "infinite", per spec. Use 2^64-1 instead. +		streams:                     make(map[uint32]*clientStream), +		singleUse:                   singleUse, +		wantSettingsAck:             true, +		readIdleTimeout:             conf.SendPingTimeout, +		pingTimeout:                 conf.PingTimeout, +		pings:                       make(map[[8]byte]chan struct{}), +		reqHeaderMu:                 make(chan struct{}, 1), +	} +	var group synctestGroupInterface  	if t.transportTestHooks != nil {  		t.markNewGoroutine()  		t.transportTestHooks.newclientconn(cc)  		c = cc.tconn +		group = t.group  	}  	if VerboseLogs {  		t.vlogf("http2: Transport creating client conn %p to %v", cc, c.RemoteAddr()) @@ -807,24 +775,23 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro  	// TODO: adjust this writer size to account for frame size +  	// MTU + crypto/tls record padding.  	cc.bw = bufio.NewWriter(stickyErrWriter{ +		group:   group,  		conn:    c, -		timeout: t.WriteByteTimeout, +		timeout: conf.WriteByteTimeout,  		err:     &cc.werr,  	})  	cc.br = bufio.NewReader(c)  	cc.fr = NewFramer(cc.bw, cc.br) -	if t.maxFrameReadSize() != 0 { -		cc.fr.SetMaxReadFrameSize(t.maxFrameReadSize()) -	} +	cc.fr.SetMaxReadFrameSize(conf.MaxReadFrameSize)  	if t.CountError != nil {  		cc.fr.countError = t.CountError  	} -	maxHeaderTableSize := t.maxDecoderHeaderTableSize() +	maxHeaderTableSize := conf.MaxDecoderHeaderTableSize  	cc.fr.ReadMetaHeaders = hpack.NewDecoder(maxHeaderTableSize, nil)  	cc.fr.MaxHeaderListSize = t.maxHeaderListSize()  	cc.henc = hpack.NewEncoder(&cc.hbuf) -	cc.henc.SetMaxDynamicTableSizeLimit(t.maxEncoderHeaderTableSize()) +	cc.henc.SetMaxDynamicTableSizeLimit(conf.MaxEncoderHeaderTableSize)  	cc.peerMaxHeaderTableSize = initialHeaderTableSize  	if cs, ok := c.(connectionStater); ok { @@ -834,11 +801,9 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro  	initialSettings := []Setting{  		{ID: SettingEnablePush, Val: 0}, -		{ID: SettingInitialWindowSize, Val: transportDefaultStreamFlow}, -	} -	if max := t.maxFrameReadSize(); max != 0 { -		initialSettings = append(initialSettings, Setting{ID: SettingMaxFrameSize, Val: max}) +		{ID: SettingInitialWindowSize, Val: uint32(cc.initialStreamRecvWindowSize)},  	} +	initialSettings = append(initialSettings, Setting{ID: SettingMaxFrameSize, Val: conf.MaxReadFrameSize})  	if max := t.maxHeaderListSize(); max != 0 {  		initialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max})  	} @@ -848,8 +813,8 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro  	cc.bw.Write(clientPreface)  	cc.fr.WriteSettings(initialSettings...) -	cc.fr.WriteWindowUpdate(0, transportDefaultConnFlow) -	cc.inflow.init(transportDefaultConnFlow + initialWindowSize) +	cc.fr.WriteWindowUpdate(0, uint32(conf.MaxUploadBufferPerConnection)) +	cc.inflow.init(conf.MaxUploadBufferPerConnection + initialWindowSize)  	cc.bw.Flush()  	if cc.werr != nil {  		cc.Close() @@ -867,7 +832,7 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro  }  func (cc *ClientConn) healthCheck() { -	pingTimeout := cc.t.pingTimeout() +	pingTimeout := cc.pingTimeout  	// We don't need to periodically ping in the health check, because the readLoop of ClientConn will  	// trigger the healthCheck again if there is no frame received.  	ctx, cancel := cc.t.contextWithTimeout(context.Background(), pingTimeout) @@ -2199,7 +2164,7 @@ type resAndError struct {  func (cc *ClientConn) addStreamLocked(cs *clientStream) {  	cs.flow.add(int32(cc.initialWindowSize))  	cs.flow.setConnFlow(&cc.flow) -	cs.inflow.init(transportDefaultStreamFlow) +	cs.inflow.init(cc.initialStreamRecvWindowSize)  	cs.ID = cc.nextStreamID  	cc.nextStreamID += 2  	cc.streams[cs.ID] = cs @@ -2345,7 +2310,7 @@ func (cc *ClientConn) countReadFrameError(err error) {  func (rl *clientConnReadLoop) run() error {  	cc := rl.cc  	gotSettings := false -	readIdleTimeout := cc.t.ReadIdleTimeout +	readIdleTimeout := cc.readIdleTimeout  	var t timer  	if readIdleTimeout != 0 {  		t = cc.t.afterFunc(readIdleTimeout, cc.healthCheck) diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go index 33f61398a..6ff6bee7e 100644 --- a/vendor/golang.org/x/net/http2/write.go +++ b/vendor/golang.org/x/net/http2/write.go @@ -131,6 +131,16 @@ func (se StreamError) writeFrame(ctx writeContext) error {  func (se StreamError) staysWithinBuffer(max int) bool { return frameHeaderLen+4 <= max } +type writePing struct { +	data [8]byte +} + +func (w writePing) writeFrame(ctx writeContext) error { +	return ctx.Framer().WritePing(false, w.data) +} + +func (w writePing) staysWithinBuffer(max int) bool { return frameHeaderLen+len(w.data) <= max } +  type writePingAck struct{ pf *PingFrame }  func (w writePingAck) writeFrame(ctx writeContext) error { diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md index 7d3c060e1..6e08a76a7 100644 --- a/vendor/golang.org/x/sys/unix/README.md +++ b/vendor/golang.org/x/sys/unix/README.md @@ -156,7 +156,7 @@ from the generated architecture-specific files listed below, and merge these  into a common file for each OS.  The merge is performed in the following steps: -1. Construct the set of common code that is idential in all architecture-specific files. +1. Construct the set of common code that is identical in all architecture-specific files.  2. Write this common code to the merged file.  3. Remove the common code from all architecture-specific files. diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index e14b766a3..ac54ecaba 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -656,7 +656,7 @@ errors=$(  signals=$(  	echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |  	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | -	grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | +	grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |  	sort  ) @@ -666,7 +666,7 @@ echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |  	sort >_error.grep  echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |  	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | -	grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | +	grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |  	sort >_signal.grep  echo '// mkerrors.sh' "$@" diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 67ce6cef2..6f15ba1ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -360,7 +360,7 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,  	var status _C_int  	var r Pid_t  	err = ERESTART -	// AIX wait4 may return with ERESTART errno, while the processus is still +	// AIX wait4 may return with ERESTART errno, while the process is still  	// active.  	for err == ERESTART {  		r, err = wait4(Pid_t(pid), &status, options, rusage) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 3f1d3d4cb..f08abd434 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -1295,6 +1295,48 @@ func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {  	return &value, err  } +// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) { +	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment +	vallen := _Socklen(SizeofTCPCCInfo) +	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) +	out := (*TCPVegasInfo)(unsafe.Pointer(&value[0])) +	return out, err +} + +// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) { +	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment +	vallen := _Socklen(SizeofTCPCCInfo) +	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) +	out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0])) +	return out, err +} + +// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +//	algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) { +	var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment +	vallen := _Socklen(SizeofTCPCCInfo) +	err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) +	out := (*TCPBBRInfo)(unsafe.Pointer(&value[0])) +	return out, err +} +  // GetsockoptString returns the string value of the socket option opt for the  // socket associated with fd at the given socket level.  func GetsockoptString(fd, level, opt int) (string, error) { @@ -1959,7 +2001,26 @@ func Getpgrp() (pid int) {  //sysnb	Getpid() (pid int)  //sysnb	Getppid() (ppid int)  //sys	Getpriority(which int, who int) (prio int, err error) -//sys	Getrandom(buf []byte, flags int) (n int, err error) + +func Getrandom(buf []byte, flags int) (n int, err error) { +	vdsoRet, supported := vgetrandom(buf, uint32(flags)) +	if supported { +		if vdsoRet < 0 { +			return 0, errnoErr(syscall.Errno(-vdsoRet)) +		} +		return vdsoRet, nil +	} +	var p *byte +	if len(buf) > 0 { +		p = &buf[0] +	} +	r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags)) +	if e != 0 { +		return 0, errnoErr(e) +	} +	return int(r), nil +} +  //sysnb	Getrusage(who int, rusage *Rusage) (err error)  //sysnb	Getsid(pid int) (sid int, err error)  //sysnb	Gettid() (tid int) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index cf2ee6c75..745e5c7e6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -182,3 +182,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error  	}  	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)  } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go index 3d0e98451..dd2262a40 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -214,3 +214,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error  	}  	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)  } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 6f5a28894..8cf3670bd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -187,3 +187,5 @@ func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error  	}  	return riscvHWProbe(pairs, setSize, set, flags)  } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go new file mode 100644 index 000000000..07ac8e09d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && go1.24 + +package unix + +import _ "unsafe" + +//go:linkname vgetrandom runtime.vgetrandom +//go:noescape +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go new file mode 100644 index 000000000..297e97bce --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux || !go1.24 + +package unix + +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { +	return -1, false +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 01a70b246..de3b46248 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -495,6 +495,7 @@ const (  	BPF_F_TEST_REG_INVARIANTS                   = 0x80  	BPF_F_TEST_RND_HI32                         = 0x4  	BPF_F_TEST_RUN_ON_CPU                       = 0x1 +	BPF_F_TEST_SKB_CHECKSUM_COMPLETE            = 0x4  	BPF_F_TEST_STATE_FREQ                       = 0x8  	BPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2  	BPF_F_XDP_DEV_BOUND_ONLY                    = 0x40 @@ -1922,6 +1923,7 @@ const (  	MNT_EXPIRE                                  = 0x4  	MNT_FORCE                                   = 0x1  	MNT_ID_REQ_SIZE_VER0                        = 0x18 +	MNT_ID_REQ_SIZE_VER1                        = 0x20  	MODULE_INIT_COMPRESSED_FILE                 = 0x4  	MODULE_INIT_IGNORE_MODVERSIONS              = 0x1  	MODULE_INIT_IGNORE_VERMAGIC                 = 0x2 @@ -2187,7 +2189,7 @@ const (  	NFT_REG_SIZE                                = 0x10  	NFT_REJECT_ICMPX_MAX                        = 0x3  	NFT_RT_MAX                                  = 0x4 -	NFT_SECMARK_CTX_MAXLEN                      = 0x100 +	NFT_SECMARK_CTX_MAXLEN                      = 0x1000  	NFT_SET_MAXNAMELEN                          = 0x100  	NFT_SOCKET_MAX                              = 0x3  	NFT_TABLE_F_MASK                            = 0x7 @@ -2356,9 +2358,11 @@ const (  	PERF_MEM_LVLNUM_IO                          = 0xa  	PERF_MEM_LVLNUM_L1                          = 0x1  	PERF_MEM_LVLNUM_L2                          = 0x2 +	PERF_MEM_LVLNUM_L2_MHB                      = 0x5  	PERF_MEM_LVLNUM_L3                          = 0x3  	PERF_MEM_LVLNUM_L4                          = 0x4  	PERF_MEM_LVLNUM_LFB                         = 0xc +	PERF_MEM_LVLNUM_MSC                         = 0x6  	PERF_MEM_LVLNUM_NA                          = 0xf  	PERF_MEM_LVLNUM_PMEM                        = 0xe  	PERF_MEM_LVLNUM_RAM                         = 0xd @@ -2431,6 +2435,7 @@ const (  	PRIO_PGRP                                   = 0x1  	PRIO_PROCESS                                = 0x0  	PRIO_USER                                   = 0x2 +	PROCFS_IOCTL_MAGIC                          = 'f'  	PROC_SUPER_MAGIC                            = 0x9fa0  	PROT_EXEC                                   = 0x4  	PROT_GROWSDOWN                              = 0x1000000 @@ -2933,11 +2938,12 @@ const (  	RUSAGE_SELF                                 = 0x0  	RUSAGE_THREAD                               = 0x1  	RWF_APPEND                                  = 0x10 +	RWF_ATOMIC                                  = 0x40  	RWF_DSYNC                                   = 0x2  	RWF_HIPRI                                   = 0x1  	RWF_NOAPPEND                                = 0x20  	RWF_NOWAIT                                  = 0x8 -	RWF_SUPPORTED                               = 0x3f +	RWF_SUPPORTED                               = 0x7f  	RWF_SYNC                                    = 0x4  	RWF_WRITE_LIFE_NOT_SET                      = 0x0  	SCHED_BATCH                                 = 0x3 @@ -3210,6 +3216,7 @@ const (  	STATX_ATTR_MOUNT_ROOT                       = 0x2000  	STATX_ATTR_NODUMP                           = 0x40  	STATX_ATTR_VERITY                           = 0x100000 +	STATX_ATTR_WRITE_ATOMIC                     = 0x400000  	STATX_BASIC_STATS                           = 0x7ff  	STATX_BLOCKS                                = 0x400  	STATX_BTIME                                 = 0x800 @@ -3226,6 +3233,7 @@ const (  	STATX_SUBVOL                                = 0x8000  	STATX_TYPE                                  = 0x1  	STATX_UID                                   = 0x8 +	STATX_WRITE_ATOMIC                          = 0x10000  	STATX__RESERVED                             = 0x80000000  	SYNC_FILE_RANGE_WAIT_AFTER                  = 0x4  	SYNC_FILE_RANGE_WAIT_BEFORE                 = 0x1 @@ -3624,6 +3632,7 @@ const (  	XDP_UMEM_PGOFF_COMPLETION_RING              = 0x180000000  	XDP_UMEM_PGOFF_FILL_RING                    = 0x100000000  	XDP_UMEM_REG                                = 0x4 +	XDP_UMEM_TX_METADATA_LEN                    = 0x4  	XDP_UMEM_TX_SW_CSUM                         = 0x2  	XDP_UMEM_UNALIGNED_CHUNK_FLAG               = 0x1  	XDP_USE_NEED_WAKEUP                         = 0x8 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 684a5168d..8aa6d77c0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -153,9 +153,14 @@ const (  	NFDBITS                          = 0x20  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 61d74b592..da428f425 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -153,9 +153,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 a28c9e3e8..bf45bfec7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x20  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 ab5d1fe8e..71c67162b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -154,9 +154,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 c523090e7..9476628fa 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -154,9 +154,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 01e6ea780..b9e85f3cf 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x20  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x2  	ONLCR                            = 0x4 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 7aa610b1e..a48b68a76 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x2  	ONLCR                            = 0x4 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 92af771b4..ea00e8522 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x2  	ONLCR                            = 0x4 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 b27ef5e6f..91c646871 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x20  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x2  	ONLCR                            = 0x4 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 237a2cefb..8cbf38d63 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -152,9 +152,14 @@ const (  	NL3                              = 0x300  	NLDLY                            = 0x300  	NOFLSH                           = 0x80000000 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x4  	ONLCR                            = 0x2 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 4a5c555a3..a2df73419 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -152,9 +152,14 @@ const (  	NL3                              = 0x300  	NLDLY                            = 0x300  	NOFLSH                           = 0x80000000 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x4  	ONLCR                            = 0x2 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 a02fb49a5..247913792 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -152,9 +152,14 @@ const (  	NL3                              = 0x300  	NLDLY                            = 0x300  	NOFLSH                           = 0x80000000 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x4  	ONLCR                            = 0x2 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 e26a7c61b..d265f146e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 c48f7c210..3f2d64439 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -150,9 +150,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x8008b705  	NS_GET_NSTYPE                    = 0xb703  	NS_GET_OWNER_UID                 = 0xb704  	NS_GET_PARENT                    = 0xb702 +	NS_GET_PID_FROM_PIDNS            = 0x8004b706 +	NS_GET_PID_IN_PIDNS              = 0x8004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x8004b707 +	NS_GET_TGID_IN_PIDNS             = 0x8004b709  	NS_GET_USERNS                    = 0xb701  	OLCUC                            = 0x2  	ONLCR                            = 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 ad4b9aace..5d8b727a1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -155,9 +155,14 @@ const (  	NFDBITS                          = 0x40  	NLDLY                            = 0x100  	NOFLSH                           = 0x80 +	NS_GET_MNTNS_ID                  = 0x4008b705  	NS_GET_NSTYPE                    = 0x2000b703  	NS_GET_OWNER_UID                 = 0x2000b704  	NS_GET_PARENT                    = 0x2000b702 +	NS_GET_PID_FROM_PIDNS            = 0x4004b706 +	NS_GET_PID_IN_PIDNS              = 0x4004b708 +	NS_GET_TGID_FROM_PIDNS           = 0x4004b707 +	NS_GET_TGID_IN_PIDNS             = 0x4004b709  	NS_GET_USERNS                    = 0x2000b701  	OLCUC                            = 0x2  	ONLCR                            = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 1bc1a5adb..af30da557 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -971,23 +971,6 @@ func Getpriority(which int, who int) (prio int, err error) {  // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getrandom(buf []byte, flags int) (n int, err error) { -	var _p0 unsafe.Pointer -	if len(buf) > 0 { -		_p0 = unsafe.Pointer(&buf[0]) -	} else { -		_p0 = unsafe.Pointer(&_zero) -	} -	r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) -	n = int(r0) -	if e1 != 0 { -		err = errnoErr(e1) -	} -	return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -  func Getrusage(who int, rusage *Rusage) (err error) {  	_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)  	if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index d3e38f681..f485dbf45 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -341,6 +341,7 @@ const (  	SYS_STATX                   = 332  	SYS_IO_PGETEVENTS           = 333  	SYS_RSEQ                    = 334 +	SYS_URETPROBE               = 335  	SYS_PIDFD_SEND_SIGNAL       = 424  	SYS_IO_URING_SETUP          = 425  	SYS_IO_URING_ENTER          = 426 diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 6c778c232..1893e2fe8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -85,7 +85,7 @@ const (  	SYS_SPLICE                  = 76  	SYS_TEE                     = 77  	SYS_READLINKAT              = 78 -	SYS_FSTATAT                 = 79 +	SYS_NEWFSTATAT              = 79  	SYS_FSTAT                   = 80  	SYS_SYNC                    = 81  	SYS_FSYNC                   = 82 diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 37281cf51..16a4017da 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -84,6 +84,8 @@ const (  	SYS_SPLICE                  = 76  	SYS_TEE                     = 77  	SYS_READLINKAT              = 78 +	SYS_NEWFSTATAT              = 79 +	SYS_FSTAT                   = 80  	SYS_SYNC                    = 81  	SYS_FSYNC                   = 82  	SYS_FDATASYNC               = 83 diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 9889f6a55..a5459e766 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -84,7 +84,7 @@ const (  	SYS_SPLICE                  = 76  	SYS_TEE                     = 77  	SYS_READLINKAT              = 78 -	SYS_FSTATAT                 = 79 +	SYS_NEWFSTATAT              = 79  	SYS_FSTAT                   = 80  	SYS_SYNC                    = 81  	SYS_FSYNC                   = 82 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 9f2550dc3..3a69e4549 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -87,31 +87,35 @@ type StatxTimestamp struct {  }  type Statx_t struct { -	Mask             uint32 -	Blksize          uint32 -	Attributes       uint64 -	Nlink            uint32 -	Uid              uint32 -	Gid              uint32 -	Mode             uint16 -	_                [1]uint16 -	Ino              uint64 -	Size             uint64 -	Blocks           uint64 -	Attributes_mask  uint64 -	Atime            StatxTimestamp -	Btime            StatxTimestamp -	Ctime            StatxTimestamp -	Mtime            StatxTimestamp -	Rdev_major       uint32 -	Rdev_minor       uint32 -	Dev_major        uint32 -	Dev_minor        uint32 -	Mnt_id           uint64 -	Dio_mem_align    uint32 -	Dio_offset_align uint32 -	Subvol           uint64 -	_                [11]uint64 +	Mask                      uint32 +	Blksize                   uint32 +	Attributes                uint64 +	Nlink                     uint32 +	Uid                       uint32 +	Gid                       uint32 +	Mode                      uint16 +	_                         [1]uint16 +	Ino                       uint64 +	Size                      uint64 +	Blocks                    uint64 +	Attributes_mask           uint64 +	Atime                     StatxTimestamp +	Btime                     StatxTimestamp +	Ctime                     StatxTimestamp +	Mtime                     StatxTimestamp +	Rdev_major                uint32 +	Rdev_minor                uint32 +	Dev_major                 uint32 +	Dev_minor                 uint32 +	Mnt_id                    uint64 +	Dio_mem_align             uint32 +	Dio_offset_align          uint32 +	Subvol                    uint64 +	Atomic_write_unit_min     uint32 +	Atomic_write_unit_max     uint32 +	Atomic_write_segments_max uint32 +	_                         [1]uint32 +	_                         [9]uint64  }  type Fsid struct { @@ -516,6 +520,29 @@ type TCPInfo struct {  	Total_rto_time       uint32  } +type TCPVegasInfo struct { +	Enabled uint32 +	Rttcnt  uint32 +	Rtt     uint32 +	Minrtt  uint32 +} + +type TCPDCTCPInfo struct { +	Enabled  uint16 +	Ce_state uint16 +	Alpha    uint32 +	Ab_ecn   uint32 +	Ab_tot   uint32 +} + +type TCPBBRInfo struct { +	Bw_lo       uint32 +	Bw_hi       uint32 +	Min_rtt     uint32 +	Pacing_gain uint32 +	Cwnd_gain   uint32 +} +  type CanFilter struct {  	Id   uint32  	Mask uint32 @@ -557,6 +584,7 @@ const (  	SizeofICMPv6Filter      = 0x20  	SizeofUcred             = 0xc  	SizeofTCPInfo           = 0xf8 +	SizeofTCPCCInfo         = 0x14  	SizeofCanFilter         = 0x8  	SizeofTCPRepairOpt      = 0x8  ) @@ -3766,7 +3794,7 @@ const (  	ETHTOOL_MSG_PSE_GET                       = 0x24  	ETHTOOL_MSG_PSE_SET                       = 0x25  	ETHTOOL_MSG_RSS_GET                       = 0x26 -	ETHTOOL_MSG_USER_MAX                      = 0x2b +	ETHTOOL_MSG_USER_MAX                      = 0x2c  	ETHTOOL_MSG_KERNEL_NONE                   = 0x0  	ETHTOOL_MSG_STRSET_GET_REPLY              = 0x1  	ETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2 @@ -3806,7 +3834,7 @@ const (  	ETHTOOL_MSG_MODULE_NTF                    = 0x24  	ETHTOOL_MSG_PSE_GET_REPLY                 = 0x25  	ETHTOOL_MSG_RSS_GET_REPLY                 = 0x26 -	ETHTOOL_MSG_KERNEL_MAX                    = 0x2b +	ETHTOOL_MSG_KERNEL_MAX                    = 0x2c  	ETHTOOL_FLAG_COMPACT_BITSETS              = 0x1  	ETHTOOL_FLAG_OMIT_REPLY                   = 0x2  	ETHTOOL_FLAG_STATS                        = 0x4 @@ -3951,7 +3979,7 @@ const (  	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17  	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18  	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19 -	ETHTOOL_A_COALESCE_MAX                    = 0x1c +	ETHTOOL_A_COALESCE_MAX                    = 0x1e  	ETHTOOL_A_PAUSE_UNSPEC                    = 0x0  	ETHTOOL_A_PAUSE_HEADER                    = 0x1  	ETHTOOL_A_PAUSE_AUTONEG                   = 0x2 @@ -4609,7 +4637,7 @@ const (  	NL80211_ATTR_MAC_HINT                                   = 0xc8  	NL80211_ATTR_MAC_MASK                                   = 0xd7  	NL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca -	NL80211_ATTR_MAX                                        = 0x14a +	NL80211_ATTR_MAX                                        = 0x14c  	NL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4  	NL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce  	NL80211_ATTR_MAX_MATCH_SETS                             = 0x85 @@ -5213,7 +5241,7 @@ const (  	NL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf  	NL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe  	NL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf -	NL80211_FREQUENCY_ATTR_MAX                              = 0x20 +	NL80211_FREQUENCY_ATTR_MAX                              = 0x21  	NL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6  	NL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11  	NL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index 115341fba..4e613cf63 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -65,7 +65,7 @@ func LoadDLL(name string) (dll *DLL, err error) {  	return d, nil  } -// MustLoadDLL is like LoadDLL but panics if load operation failes. +// MustLoadDLL is like LoadDLL but panics if load operation fails.  func MustLoadDLL(name string) *DLL {  	d, e := LoadDLL(name)  	if e != nil { diff --git a/vendor/modules.txt b/vendor/modules.txt index cf4fa2d5d..f7b2584dd 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1058,7 +1058,7 @@ go.uber.org/multierr  # golang.org/x/arch v0.8.0  ## explicit; go 1.18  golang.org/x/arch/x86/x86asm -# golang.org/x/crypto v0.27.0 +# golang.org/x/crypto v0.28.0  ## explicit; go 1.20  golang.org/x/crypto/acme  golang.org/x/crypto/acme/autocert @@ -1096,7 +1096,7 @@ golang.org/x/image/webp  golang.org/x/mod/internal/lazyregexp  golang.org/x/mod/module  golang.org/x/mod/semver -# golang.org/x/net v0.29.0 +# golang.org/x/net v0.30.0  ## explicit; go 1.18  golang.org/x/net/bpf  golang.org/x/net/context @@ -1124,13 +1124,13 @@ golang.org/x/oauth2/internal  ## explicit; go 1.18  golang.org/x/sync/errgroup  golang.org/x/sync/semaphore -# golang.org/x/sys v0.25.0 +# golang.org/x/sys v0.26.0  ## explicit; go 1.18  golang.org/x/sys/cpu  golang.org/x/sys/unix  golang.org/x/sys/windows  golang.org/x/sys/windows/registry -# golang.org/x/text v0.18.0 +# golang.org/x/text v0.19.0  ## explicit; go 1.18  golang.org/x/text/cases  golang.org/x/text/encoding  | 
