Add tracked vpnruntime implementation for CI guard tests

This commit is contained in:
2026-05-12 10:02:49 +03:00
parent 60ef659084
commit 2eb4a769d0
8 changed files with 4086 additions and 28 deletions
@@ -0,0 +1,52 @@
package vpnruntime
import (
"encoding/binary"
"testing"
)
func TestNormalizeIPv4PacketChecksumsRepairsTCP(t *testing.T) {
packet := []byte{
0x45, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x40, 0x06, 0x12, 0x34, 192, 168, 200, 61, 10, 77, 0, 2,
0x46, 0xa0, 0xdd, 0x78, 0, 0, 0, 1, 0, 0, 0, 0, 0x50, 0x12, 0x72, 0x10, 0xab, 0xcd, 0, 0,
}
if !normalizeIPv4PacketChecksums(packet) {
t.Fatal("normalize returned false")
}
if got := checksum(packet[:20]); got != 0 {
t.Fatalf("ip checksum verification = %#x, want 0", got)
}
tcp := packet[20:]
pseudo := make([]byte, 12+len(tcp))
copy(pseudo[0:4], packet[12:16])
copy(pseudo[4:8], packet[16:20])
pseudo[9] = 6
binary.BigEndian.PutUint16(pseudo[10:12], uint16(len(tcp)))
copy(pseudo[12:], tcp)
if got := checksum(pseudo); got != 0 {
t.Fatalf("tcp checksum verification = %#x, want 0", got)
}
}
func TestNormalizeIPv4PacketChecksumsRepairsUDP(t *testing.T) {
packet := []byte{
0x45, 0x00, 0x00, 0x20, 0, 0, 0x40, 0, 0x40, 0x11, 0x12, 0x34, 10, 77, 0, 2, 192, 168, 200, 210,
0x30, 0x39, 0x00, 0x35, 0x00, 0x0c, 0xab, 0xcd, 0xde, 0xad, 0xbe, 0xef,
}
if !normalizeIPv4PacketChecksums(packet) {
t.Fatal("normalize returned false")
}
if got := checksum(packet[:20]); got != 0 {
t.Fatalf("ip checksum verification = %#x, want 0", got)
}
udp := packet[20:]
pseudo := make([]byte, 12+len(udp))
copy(pseudo[0:4], packet[12:16])
copy(pseudo[4:8], packet[16:20])
pseudo[9] = 17
binary.BigEndian.PutUint16(pseudo[10:12], uint16(len(udp)))
copy(pseudo[12:], udp)
if got := checksum(pseudo); got != 0 {
t.Fatalf("udp checksum verification = %#x, want 0", got)
}
}