summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/header/gre.go
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2021-01-23 01:14:51 +0100
committerMikael Magnusson <mikma@users.sourceforge.net>2021-01-23 21:43:01 +0100
commit2ce080f581556f9512a481e7fcddecaed0ae7be7 (patch)
tree13e32a386e0fbddd21aa22f07fd1b841a51e2099 /pkg/tcpip/header/gre.go
parent0627e26831c8c58a5fab619d127587dc1ad8a19b (diff)
WIP GRE tunnel
Diffstat (limited to 'pkg/tcpip/header/gre.go')
-rw-r--r--pkg/tcpip/header/gre.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/pkg/tcpip/header/gre.go b/pkg/tcpip/header/gre.go
new file mode 100644
index 000000000..3d1cc97d9
--- /dev/null
+++ b/pkg/tcpip/header/gre.go
@@ -0,0 +1,19 @@
+package header
+
+import (
+ "encoding/binary"
+
+ "gvisor.dev/gvisor/pkg/tcpip"
+)
+
+const (
+ greProtocolType = 2
+)
+
+// GRE represents a GRE header stored in a byte array.
+type GRE []byte
+
+// SetLength sets the "length" field of the udp header.
+func (b GRE) SetProtocolType(protocol tcpip.NetworkProtocolNumber) {
+ binary.BigEndian.PutUint16(b[greProtocolType:], uint16(protocol))
+}