mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-10-31 16:22:03 +01:00 
			
		
		
		
	For eventual use by net/udprelay.Server. Updates tailscale/corp#31164 Signed-off-by: Jordan Whited <jordan@tailscale.com>
		
			
				
	
	
		
			85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) Tailscale Inc & AUTHORS
 | |
| // SPDX-License-Identifier: BSD-3-Clause
 | |
| 
 | |
| package packet
 | |
| 
 | |
| import (
 | |
| 	"math"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/google/go-cmp/cmp"
 | |
| 	"github.com/google/go-cmp/cmp/cmpopts"
 | |
| 	"tailscale.com/types/ptr"
 | |
| )
 | |
| 
 | |
| func TestGeneveHeader(t *testing.T) {
 | |
| 	in := GeneveHeader{
 | |
| 		Version:  3,
 | |
| 		Protocol: GeneveProtocolDisco,
 | |
| 		Control:  true,
 | |
| 	}
 | |
| 	in.VNI.Set(1<<24 - 1)
 | |
| 	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, cmpopts.EquateComparable(VirtualNetworkID{})); diff != "" {
 | |
| 		t.Fatalf("wrong results (-got +want)\n%s", diff)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestVirtualNetworkID(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name string
 | |
| 		set  *uint32
 | |
| 		want uint32
 | |
| 	}{
 | |
| 		{
 | |
| 			"don't Set",
 | |
| 			nil,
 | |
| 			0,
 | |
| 		},
 | |
| 		{
 | |
| 			"Set 0",
 | |
| 			ptr.To(uint32(0)),
 | |
| 			0,
 | |
| 		},
 | |
| 		{
 | |
| 			"Set 1",
 | |
| 			ptr.To(uint32(1)),
 | |
| 			1,
 | |
| 		},
 | |
| 		{
 | |
| 			"Set math.MaxUint32",
 | |
| 			ptr.To(uint32(math.MaxUint32)),
 | |
| 			1<<24 - 1,
 | |
| 		},
 | |
| 		{
 | |
| 			"Set max 3-byte value",
 | |
| 			ptr.To(uint32(1<<24 - 1)),
 | |
| 			1<<24 - 1,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			v := VirtualNetworkID{}
 | |
| 			if tt.set != nil {
 | |
| 				v.Set(*tt.set)
 | |
| 			}
 | |
| 			if v.IsSet() != (tt.set != nil) {
 | |
| 				t.Fatalf("IsSet: %v != wantIsSet: %v", v.IsSet(), tt.set != nil)
 | |
| 			}
 | |
| 			if v.Get() != tt.want {
 | |
| 				t.Fatalf("Get(): %v != want: %v", v.Get(), tt.want)
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 |