summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pkg/tcpip/stack/conntrack.go4
-rw-r--r--pkg/tcpip/transport/tcpconntrack/tcp_conntrack.go175
-rw-r--r--pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go66
3 files changed, 123 insertions, 122 deletions
diff --git a/pkg/tcpip/stack/conntrack.go b/pkg/tcpip/stack/conntrack.go
index 4a28be585..f5e990f03 100644
--- a/pkg/tcpip/stack/conntrack.go
+++ b/pkg/tcpip/stack/conntrack.go
@@ -164,9 +164,9 @@ func (cn *conn) updateLocked(pkt *PacketBuffer, reply bool) {
}
if reply {
- cn.tcb.UpdateStateInbound(tcpHeader)
+ cn.tcb.UpdateStateReply(tcpHeader)
} else {
- cn.tcb.UpdateStateOutbound(tcpHeader)
+ cn.tcb.UpdateStateOriginal(tcpHeader)
}
}
diff --git a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack.go b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack.go
index 558b06df0..a3ea9e197 100644
--- a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack.go
+++ b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack.go
@@ -22,8 +22,8 @@ import (
"gvisor.dev/gvisor/pkg/tcpip/seqnum"
)
-// Result is returned when the state of a TCB is updated in response to an
-// inbound or outbound segment.
+// Result is returned when the state of a TCB is updated in response to a
+// segment.
type Result int
const (
@@ -40,24 +40,24 @@ const (
// ResultReset indicates that the connection was reset.
ResultReset
- // ResultClosedByPeer indicates that the connection was gracefully
- // closed, and the inbound stream was closed first.
- ResultClosedByPeer
+ // ResultClosedByResponder indicates that the connection was gracefully
+ // closed, and the reply stream was closed first.
+ ResultClosedByResponder
- // ResultClosedBySelf indicates that the connection was gracefully
- // closed, and the outbound stream was closed first.
- ResultClosedBySelf
+ // ResultClosedByOriginator indicates that the connection was gracefully
+ // closed, and the original stream was closed first.
+ ResultClosedByOriginator
)
// TCB is a TCP Control Block. It holds state necessary to keep track of a TCP
// connection and inform the caller when the connection has been closed.
type TCB struct {
- inbound stream
- outbound stream
+ reply stream
+ original stream
// State handlers.
- handlerInbound func(*TCB, header.TCP) Result
- handlerOutbound func(*TCB, header.TCP) Result
+ handlerReply func(*TCB, header.TCP) Result
+ handlerOriginal func(*TCB, header.TCP) Result
// firstFin holds a pointer to the first stream to send a FIN.
firstFin *stream
@@ -68,38 +68,38 @@ type TCB struct {
// Init initializes the state of the TCB according to the initial SYN.
func (t *TCB) Init(initialSyn header.TCP) Result {
- t.handlerInbound = synSentStateInbound
- t.handlerOutbound = synSentStateOutbound
+ t.handlerReply = synSentStateReply
+ t.handlerOriginal = synSentStateOriginal
iss := seqnum.Value(initialSyn.SequenceNumber())
- t.outbound.una = iss
- t.outbound.nxt = iss.Add(logicalLen(initialSyn))
- t.outbound.end = t.outbound.nxt
+ t.original.una = iss
+ t.original.nxt = iss.Add(logicalLen(initialSyn))
+ t.original.end = t.original.nxt
// Even though "end" is a sequence number, we don't know the initial
// receive sequence number yet, so we store the window size until we get
- // a SYN from the peer.
- t.inbound.una = 0
- t.inbound.nxt = 0
- t.inbound.end = seqnum.Value(initialSyn.WindowSize())
+ // a SYN from the server.
+ t.reply.una = 0
+ t.reply.nxt = 0
+ t.reply.end = seqnum.Value(initialSyn.WindowSize())
t.state = ResultConnecting
return t.state
}
-// UpdateStateInbound updates the state of the TCB based on the supplied inbound
+// UpdateStateReply updates the state of the TCB based on the supplied reply
// segment.
-func (t *TCB) UpdateStateInbound(tcp header.TCP) Result {
- st := t.handlerInbound(t, tcp)
+func (t *TCB) UpdateStateReply(tcp header.TCP) Result {
+ st := t.handlerReply(t, tcp)
if st != ResultDrop {
t.state = st
}
return st
}
-// UpdateStateOutbound updates the state of the TCB based on the supplied
-// outbound segment.
-func (t *TCB) UpdateStateOutbound(tcp header.TCP) Result {
- st := t.handlerOutbound(t, tcp)
+// UpdateStateOriginal updates the state of the TCB based on the supplied
+// original segment.
+func (t *TCB) UpdateStateOriginal(tcp header.TCP) Result {
+ st := t.handlerOriginal(t, tcp)
if st != ResultDrop {
t.state = st
}
@@ -114,46 +114,47 @@ func (t *TCB) State() Result {
// IsAlive returns true as long as the connection is established(Alive)
// or connecting state.
func (t *TCB) IsAlive() bool {
- return !t.inbound.rstSeen && !t.outbound.rstSeen && (!t.inbound.closed() || !t.outbound.closed())
+ return !t.reply.rstSeen && !t.original.rstSeen && (!t.reply.closed() || !t.original.closed())
}
-// OutboundSendSequenceNumber returns the snd.NXT for the outbound stream.
-func (t *TCB) OutboundSendSequenceNumber() seqnum.Value {
- return t.outbound.nxt
+// OriginalSendSequenceNumber returns the snd.NXT for the original stream.
+func (t *TCB) OriginalSendSequenceNumber() seqnum.Value {
+ return t.original.nxt
}
-// InboundSendSequenceNumber returns the snd.NXT for the inbound stream.
-func (t *TCB) InboundSendSequenceNumber() seqnum.Value {
- return t.inbound.nxt
+// ReplySendSequenceNumber returns the snd.NXT for the reply stream.
+func (t *TCB) ReplySendSequenceNumber() seqnum.Value {
+ return t.reply.nxt
}
// adapResult modifies the supplied "Result" according to the state of the TCB;
// if r is anything other than "Alive", or if one of the streams isn't closed
// yet, it is returned unmodified. Otherwise it's converted to either
-// ClosedBySelf or ClosedByPeer depending on which stream was closed first.
+// ClosedByOriginator or ClosedByResponder depending on which stream was closed
+// first.
func (t *TCB) adaptResult(r Result) Result {
// Check the unmodified case.
- if r != ResultAlive || !t.inbound.closed() || !t.outbound.closed() {
+ if r != ResultAlive || !t.reply.closed() || !t.original.closed() {
return r
}
// Find out which was closed first.
- if t.firstFin == &t.outbound {
- return ResultClosedBySelf
+ if t.firstFin == &t.original {
+ return ResultClosedByOriginator
}
- return ResultClosedByPeer
+ return ResultClosedByResponder
}
-// synSentStateInbound is the state handler for inbound segments when the
+// synSentStateReply is the state handler for reply segments when the
// connection is in SYN-SENT state.
-func synSentStateInbound(t *TCB, tcp header.TCP) Result {
+func synSentStateReply(t *TCB, tcp header.TCP) Result {
flags := tcp.Flags()
ackPresent := flags&header.TCPFlagAck != 0
ack := seqnum.Value(tcp.AckNumber())
// Ignore segment if ack is present but not acceptable.
- if ackPresent && !(ack-1).InRange(t.outbound.una, t.outbound.nxt) {
+ if ackPresent && !(ack-1).InRange(t.original.una, t.original.nxt) {
return ResultConnecting
}
@@ -162,7 +163,7 @@ func synSentStateInbound(t *TCB, tcp header.TCP) Result {
// implicitly acceptable).
if flags&header.TCPFlagRst != 0 {
if ackPresent {
- t.inbound.rstSeen = true
+ t.reply.rstSeen = true
return ResultReset
}
return ResultConnecting
@@ -175,62 +176,62 @@ func synSentStateInbound(t *TCB, tcp header.TCP) Result {
// Update state informed by this SYN.
irs := seqnum.Value(tcp.SequenceNumber())
- t.inbound.una = irs
- t.inbound.nxt = irs.Add(logicalLen(tcp))
- t.inbound.end += irs
+ t.reply.una = irs
+ t.reply.nxt = irs.Add(logicalLen(tcp))
+ t.reply.end += irs
- t.outbound.end = t.outbound.una.Add(seqnum.Size(tcp.WindowSize()))
+ t.original.end = t.original.una.Add(seqnum.Size(tcp.WindowSize()))
// If the ACK was set (it is acceptable), update our unacknowledgement
// tracking.
if ackPresent {
- // Advance the "una" and "end" indices of the outbound stream.
- if t.outbound.una.LessThan(ack) {
- t.outbound.una = ack
+ // Advance the "una" and "end" indices of the original stream.
+ if t.original.una.LessThan(ack) {
+ t.original.una = ack
}
- if end := ack.Add(seqnum.Size(tcp.WindowSize())); t.outbound.end.LessThan(end) {
- t.outbound.end = end
+ if end := ack.Add(seqnum.Size(tcp.WindowSize())); t.original.end.LessThan(end) {
+ t.original.end = end
}
}
// Update handlers so that new calls will be handled by new state.
- t.handlerInbound = allOtherInbound
- t.handlerOutbound = allOtherOutbound
+ t.handlerReply = allOtherReply
+ t.handlerOriginal = allOtherOriginal
return ResultAlive
}
-// synSentStateOutbound is the state handler for outbound segments when the
+// synSentStateOriginal is the state handler for original segments when the
// connection is in SYN-SENT state.
-func synSentStateOutbound(t *TCB, tcp header.TCP) Result {
- // Drop outbound segments that aren't retransmits of the original one.
+func synSentStateOriginal(t *TCB, tcp header.TCP) Result {
+ // Drop original segments that aren't retransmits of the original one.
if tcp.Flags() != header.TCPFlagSyn ||
- tcp.SequenceNumber() != uint32(t.outbound.una) {
+ tcp.SequenceNumber() != uint32(t.original.una) {
return ResultDrop
}
// Update the receive window. We only remember the largest value seen.
- if wnd := seqnum.Value(tcp.WindowSize()); wnd > t.inbound.end {
- t.inbound.end = wnd
+ if wnd := seqnum.Value(tcp.WindowSize()); wnd > t.reply.end {
+ t.reply.end = wnd
}
return ResultConnecting
}
-// update updates the state of inbound and outbound streams, given the supplied
-// inbound segment. For outbound segments, this same function can be called with
-// swapped inbound/outbound streams.
-func update(tcp header.TCP, inbound, outbound *stream, firstFin **stream) Result {
+// update updates the state of reply and original streams, given the supplied
+// reply segment. For original segments, this same function can be called with
+// swapped reply/original streams.
+func update(tcp header.TCP, reply, original *stream, firstFin **stream) Result {
// Ignore segments out of the window.
s := seqnum.Value(tcp.SequenceNumber())
- if !inbound.acceptable(s, dataLen(tcp)) {
+ if !reply.acceptable(s, dataLen(tcp)) {
return ResultAlive
}
flags := tcp.Flags()
if flags&header.TCPFlagRst != 0 {
- inbound.rstSeen = true
+ reply.rstSeen = true
return ResultReset
}
@@ -242,49 +243,49 @@ func update(tcp header.TCP, inbound, outbound *stream, firstFin **stream) Result
// Ignore segments that acknowledge not yet sent data.
ack := seqnum.Value(tcp.AckNumber())
- if outbound.nxt.LessThan(ack) {
+ if original.nxt.LessThan(ack) {
return ResultAlive
}
- // Advance the "una" and "end" indices of the outbound stream.
- if outbound.una.LessThan(ack) {
- outbound.una = ack
+ // Advance the "una" and "end" indices of the original stream.
+ if original.una.LessThan(ack) {
+ original.una = ack
}
- if end := ack.Add(seqnum.Size(tcp.WindowSize())); outbound.end.LessThan(end) {
- outbound.end = end
+ if end := ack.Add(seqnum.Size(tcp.WindowSize())); original.end.LessThan(end) {
+ original.end = end
}
- // Advance the "nxt" index of the inbound stream.
+ // Advance the "nxt" index of the reply stream.
end := s.Add(logicalLen(tcp))
- if inbound.nxt.LessThan(end) {
- inbound.nxt = end
+ if reply.nxt.LessThan(end) {
+ reply.nxt = end
}
// Note the index of the FIN segment. And stash away a pointer to the
// first stream to see a FIN.
- if flags&header.TCPFlagFin != 0 && !inbound.finSeen {
- inbound.finSeen = true
- inbound.fin = end - 1
+ if flags&header.TCPFlagFin != 0 && !reply.finSeen {
+ reply.finSeen = true
+ reply.fin = end - 1
if *firstFin == nil {
- *firstFin = inbound
+ *firstFin = reply
}
}
return ResultAlive
}
-// allOtherInbound is the state handler for inbound segments in all states
+// allOtherReply is the state handler for reply segments in all states
// except SYN-SENT.
-func allOtherInbound(t *TCB, tcp header.TCP) Result {
- return t.adaptResult(update(tcp, &t.inbound, &t.outbound, &t.firstFin))
+func allOtherReply(t *TCB, tcp header.TCP) Result {
+ return t.adaptResult(update(tcp, &t.reply, &t.original, &t.firstFin))
}
-// allOtherOutbound is the state handler for outbound segments in all states
+// allOtherOriginal is the state handler for original segments in all states
// except SYN-SENT.
-func allOtherOutbound(t *TCB, tcp header.TCP) Result {
- return t.adaptResult(update(tcp, &t.outbound, &t.inbound, &t.firstFin))
+func allOtherOriginal(t *TCB, tcp header.TCP) Result {
+ return t.adaptResult(update(tcp, &t.original, &t.reply, &t.firstFin))
}
// streams holds the state of a TCP unidirectional stream.
@@ -345,7 +346,7 @@ func logicalLen(tcp header.TCP) seqnum.Size {
// IsEmpty returns true if tcb is not initialized.
func (t *TCB) IsEmpty() bool {
- if t.inbound != (stream{}) || t.outbound != (stream{}) {
+ if t.reply != (stream{}) || t.original != (stream{}) {
return false
}
diff --git a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go
index 6c5ddc3c7..30732b73d 100644
--- a/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go
+++ b/pkg/tcpip/transport/tcpconntrack/tcp_conntrack_test.go
@@ -46,7 +46,7 @@ func connected(t *testing.T, iss, irs uint32, isw, irw uint16) *tcpconntrack.TCB
WindowSize: isw,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -59,7 +59,7 @@ func connected(t *testing.T, iss, irs uint32, isw, irw uint16) *tcpconntrack.TCB
WindowSize: irw,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -89,7 +89,7 @@ func TestConnectionRefused(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultReset {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultReset {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultReset)
}
}
@@ -117,7 +117,7 @@ func TestConnectionRefusedInSynRcvd(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -130,7 +130,7 @@ func TestConnectionRefusedInSynRcvd(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultReset {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultReset {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultReset)
}
}
@@ -158,7 +158,7 @@ func TestConnectionResetInSynRcvd(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -170,7 +170,7 @@ func TestConnectionResetInSynRcvd(t *testing.T) {
Flags: header.TCPFlagRst,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultReset {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultReset {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultReset)
}
}
@@ -190,7 +190,7 @@ func TestRetransmitOnSynSent(t *testing.T) {
tcb.Init(tcp)
// Retransmit the same SYN.
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultConnecting {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultConnecting {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultConnecting)
}
}
@@ -218,7 +218,7 @@ func TestRetransmitOnSynRcvd(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -231,7 +231,7 @@ func TestRetransmitOnSynRcvd(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -244,12 +244,12 @@ func TestRetransmitOnSynRcvd(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
}
-func TestClosedBySelf(t *testing.T) {
+func TestClosedByOriginator(t *testing.T) {
tcb := connected(t, 1234, 789, 30000, 50000)
// Send FIN.
@@ -262,7 +262,7 @@ func TestClosedBySelf(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -275,7 +275,7 @@ func TestClosedBySelf(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -288,12 +288,12 @@ func TestClosedBySelf(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultClosedBySelf {
- t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedBySelf)
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultClosedByOriginator {
+ t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedByOriginator)
}
}
-func TestClosedByPeer(t *testing.T) {
+func TestClosedByResponder(t *testing.T) {
tcb := connected(t, 1234, 789, 30000, 50000)
// Receive FIN.
@@ -306,7 +306,7 @@ func TestClosedByPeer(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -319,7 +319,7 @@ func TestClosedByPeer(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -332,12 +332,12 @@ func TestClosedByPeer(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultClosedByPeer {
- t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedByPeer)
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultClosedByResponder {
+ t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedByResponder)
}
}
-func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
+func TestSendAndReceiveDataClosedByOriginator(t *testing.T) {
sseq := uint32(1234)
rseq := uint32(789)
tcb := connected(t, sseq, rseq, 30000, 50000)
@@ -358,7 +358,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
})
sseq += uint32(len(tcp)) - header.TCPMinimumSize
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -371,7 +371,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp[:header.TCPMinimumSize]); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp[:header.TCPMinimumSize]); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
}
@@ -387,7 +387,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
})
rseq += uint32(len(tcp)) - header.TCPMinimumSize
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -400,7 +400,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp[:header.TCPMinimumSize]); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp[:header.TCPMinimumSize]); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
}
@@ -416,7 +416,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
})
sseq++
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -430,7 +430,7 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
})
rseq++
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -443,8 +443,8 @@ func TestSendAndReceiveDataClosedBySelf(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultClosedBySelf {
- t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedBySelf)
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultClosedByOriginator {
+ t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultClosedByOriginator)
}
}
@@ -476,7 +476,7 @@ func TestIgnoreBadResetOnSynSent(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultConnecting {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultConnecting {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
}
@@ -492,7 +492,7 @@ func TestIgnoreBadResetOnSynSent(t *testing.T) {
WindowSize: 50000,
})
- if r := tcb.UpdateStateInbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateReply(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
@@ -505,7 +505,7 @@ func TestIgnoreBadResetOnSynSent(t *testing.T) {
WindowSize: 30000,
})
- if r := tcb.UpdateStateOutbound(tcp); r != tcpconntrack.ResultAlive {
+ if r := tcb.UpdateStateOriginal(tcp); r != tcpconntrack.ResultAlive {
t.Fatalf("Bad result: got %v, want %v", r, tcpconntrack.ResultAlive)
}
}