Add support for bare IPv4 in packetimpact tests

PiperOrigin-RevId: 339699771
This commit is contained in:
Arthur Sfez 2020-10-29 10:42:39 -07:00 committed by gVisor bot
parent 1f0f687cbe
commit 337c4b9a19
1 changed files with 55 additions and 0 deletions

View File

@ -839,6 +839,61 @@ func (conn *TCPIPv4) Drain(t *testing.T) {
conn.sniffer.Drain(t)
}
// IPv4Conn maintains the state for all the layers in a IPv4 connection.
type IPv4Conn Connection
// NewIPv4Conn creates a new IPv4Conn connection with reasonable defaults.
func NewIPv4Conn(t *testing.T, outgoingIPv4, incomingIPv4 IPv4) IPv4Conn {
t.Helper()
etherState, err := newEtherState(Ether{}, Ether{})
if err != nil {
t.Fatalf("can't make EtherState: %s", err)
}
ipv4State, err := newIPv4State(outgoingIPv4, incomingIPv4)
if err != nil {
t.Fatalf("can't make IPv4State: %s", err)
}
injector, err := NewInjector(t)
if err != nil {
t.Fatalf("can't make injector: %s", err)
}
sniffer, err := NewSniffer(t)
if err != nil {
t.Fatalf("can't make sniffer: %s", err)
}
return IPv4Conn{
layerStates: []layerState{etherState, ipv4State},
injector: injector,
sniffer: sniffer,
}
}
// Send sends a frame with ipv4 overriding the IPv4 layer defaults and
// additionalLayers added after it.
func (c *IPv4Conn) Send(t *testing.T, ipv4 IPv4, additionalLayers ...Layer) {
t.Helper()
(*Connection)(c).send(t, Layers{&ipv4}, additionalLayers...)
}
// Close cleans up any resources held.
func (c *IPv4Conn) Close(t *testing.T) {
t.Helper()
(*Connection)(c).Close(t)
}
// ExpectFrame expects a frame that matches the provided Layers within the
// timeout specified. If it doesn't arrive in time, an error is returned.
func (c *IPv4Conn) ExpectFrame(t *testing.T, frame Layers, timeout time.Duration) (Layers, error) {
t.Helper()
return (*Connection)(c).ExpectFrame(t, frame, timeout)
}
// IPv6Conn maintains the state for all the layers in a IPv6 connection.
type IPv6Conn Connection