mirror of
https://github.com/hanzoai/visor.git
synced 2026-09-24 17:04:14 +00:00
Endpoint protocol goroutines were previously started as part of loading the endpoint. This is potentially too soon, as resources used by these goroutine may not have been loaded. Protocol goroutines may perform meaningful work as soon as they're started (ex: incoming connect) which can cause them to indirectly access resources that haven't been loaded yet. This CL defers resuming all protocol goroutines until the end of restore. PiperOrigin-RevId: 262409429
99 lines
2.9 KiB
Go
99 lines
2.9 KiB
Go
// Copyright 2018 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package inet
|
|
|
|
// TestStack is a dummy implementation of Stack for tests.
|
|
type TestStack struct {
|
|
InterfacesMap map[int32]Interface
|
|
InterfaceAddrsMap map[int32][]InterfaceAddr
|
|
RouteList []Route
|
|
SupportsIPv6Flag bool
|
|
TCPRecvBufSize TCPBufferSize
|
|
TCPSendBufSize TCPBufferSize
|
|
TCPSACKFlag bool
|
|
}
|
|
|
|
// NewTestStack returns a TestStack with no network interfaces. The value of
|
|
// all other options is unspecified; tests that rely on specific values must
|
|
// set them explicitly.
|
|
func NewTestStack() *TestStack {
|
|
return &TestStack{
|
|
InterfacesMap: make(map[int32]Interface),
|
|
InterfaceAddrsMap: make(map[int32][]InterfaceAddr),
|
|
}
|
|
}
|
|
|
|
// Interfaces implements Stack.Interfaces.
|
|
func (s *TestStack) Interfaces() map[int32]Interface {
|
|
return s.InterfacesMap
|
|
}
|
|
|
|
// InterfaceAddrs implements Stack.InterfaceAddrs.
|
|
func (s *TestStack) InterfaceAddrs() map[int32][]InterfaceAddr {
|
|
return s.InterfaceAddrsMap
|
|
}
|
|
|
|
// SupportsIPv6 implements Stack.SupportsIPv6.
|
|
func (s *TestStack) SupportsIPv6() bool {
|
|
return s.SupportsIPv6Flag
|
|
}
|
|
|
|
// TCPReceiveBufferSize implements Stack.TCPReceiveBufferSize.
|
|
func (s *TestStack) TCPReceiveBufferSize() (TCPBufferSize, error) {
|
|
return s.TCPRecvBufSize, nil
|
|
}
|
|
|
|
// SetTCPReceiveBufferSize implements Stack.SetTCPReceiveBufferSize.
|
|
func (s *TestStack) SetTCPReceiveBufferSize(size TCPBufferSize) error {
|
|
s.TCPRecvBufSize = size
|
|
return nil
|
|
}
|
|
|
|
// TCPSendBufferSize implements Stack.TCPSendBufferSize.
|
|
func (s *TestStack) TCPSendBufferSize() (TCPBufferSize, error) {
|
|
return s.TCPSendBufSize, nil
|
|
}
|
|
|
|
// SetTCPSendBufferSize implements Stack.SetTCPSendBufferSize.
|
|
func (s *TestStack) SetTCPSendBufferSize(size TCPBufferSize) error {
|
|
s.TCPSendBufSize = size
|
|
return nil
|
|
}
|
|
|
|
// TCPSACKEnabled implements Stack.TCPSACKEnabled.
|
|
func (s *TestStack) TCPSACKEnabled() (bool, error) {
|
|
return s.TCPSACKFlag, nil
|
|
}
|
|
|
|
// SetTCPSACKEnabled implements Stack.SetTCPSACKEnabled.
|
|
func (s *TestStack) SetTCPSACKEnabled(enabled bool) error {
|
|
s.TCPSACKFlag = enabled
|
|
return nil
|
|
}
|
|
|
|
// Statistics implements inet.Stack.Statistics.
|
|
func (s *TestStack) Statistics(stat interface{}, arg string) error {
|
|
return nil
|
|
}
|
|
|
|
// RouteTable implements Stack.RouteTable.
|
|
func (s *TestStack) RouteTable() []Route {
|
|
return s.RouteList
|
|
}
|
|
|
|
// Resume implements Stack.Resume.
|
|
func (s *TestStack) Resume() {
|
|
}
|