net/packet: implement Geneve header serialization (#15301)

Updates tailscale/corp#27100

Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
Jordan Whited
2025-03-13 13:33:26 -07:00
committed by GitHub
parent f0b395d851
commit 8b1e7f646e
2 changed files with 136 additions and 0 deletions

32
net/packet/geneve_test.go Normal file
View File

@@ -0,0 +1,32 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package packet
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestGeneveHeader(t *testing.T) {
in := GeneveHeader{
Version: 3,
Protocol: GeneveProtocolDisco,
VNI: 1<<24 - 1,
Control: true,
}
b := make([]byte, GeneveFixedHeaderLength)
err := in.Encode(b)
if err != nil {
t.Fatal(err)
}
out := GeneveHeader{}
err = out.Decode(b)
if err != nil {
t.Fatal(err)
}
if diff := cmp.Diff(out, in); diff != "" {
t.Fatalf("wrong results (-got +want)\n%s", diff)
}
}