diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-06-07 20:41:19 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-06-07 20:41:19 +0000 |
commit | 4c47990e36edf3652ce59162da7d9bdf8923c565 (patch) | |
tree | e6f133a79dbfe3c905f99650cff1bd17566249de /pkg/tcpip/stack/registration.go | |
parent | 37406613763aac18ca4b995f3e4339a562c0e656 (diff) | |
parent | 32b823fcdb00a7d6eb5ddcd378f19a659edc3da3 (diff) |
Merge release-20200522.0-94-g32b823fc (automated)
Diffstat (limited to 'pkg/tcpip/stack/registration.go')
-rw-r--r-- | pkg/tcpip/stack/registration.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/pkg/tcpip/stack/registration.go b/pkg/tcpip/stack/registration.go index 94f177841..5cbc946b6 100644 --- a/pkg/tcpip/stack/registration.go +++ b/pkg/tcpip/stack/registration.go @@ -168,6 +168,11 @@ type TransportProtocol interface { // Wait waits for any worker goroutines owned by the protocol to stop. Wait() + + // Parse sets pkt.TransportHeader and trims pkt.Data appropriately. It does + // neither and returns false if pkt.Data is too small, i.e. pkt.Data.Size() < + // MinimumPacketSize() + Parse(pkt *PacketBuffer) (ok bool) } // TransportDispatcher contains the methods used by the network stack to deliver @@ -313,6 +318,14 @@ type NetworkProtocol interface { // Wait waits for any worker goroutines owned by the protocol to stop. Wait() + + // Parse sets pkt.NetworkHeader and trims pkt.Data appropriately. It + // returns: + // - The encapsulated protocol, if present. + // - Whether there is an encapsulated transport protocol payload (e.g. ARP + // does not encapsulate anything). + // - Whether pkt.Data was large enough to parse and set pkt.NetworkHeader. + Parse(pkt *PacketBuffer) (proto tcpip.TransportProtocolNumber, hasTransportHdr bool, ok bool) } // NetworkDispatcher contains the methods used by the network stack to deliver |