From 631b77dc3c1a1123eacb20d655473cfc55ff63a0 Mon Sep 17 00:00:00 2001 From: Viktor Liu Date: Tue, 17 Jun 2025 12:44:52 +0200 Subject: [PATCH] Remove some allocations --- client/firewall/uspfilter/nat.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/client/firewall/uspfilter/nat.go b/client/firewall/uspfilter/nat.go index ad1725d13..8c9343995 100644 --- a/client/firewall/uspfilter/nat.go +++ b/client/firewall/uspfilter/nat.go @@ -170,11 +170,11 @@ func (m *Manager) rewritePacketDestination(packetData []byte, d *decoder, newIP return fmt.Errorf("only IPv4 supported") } - oldDst := make([]byte, 4) - copy(oldDst, packetData[16:20]) - newDst := newIP.AsSlice() + var oldDst [4]byte + copy(oldDst[:], packetData[16:20]) + newDst := newIP.As4() - copy(packetData[16:20], newDst) + copy(packetData[16:20], newDst[:]) ipHeaderLen := int(d.ip4.IHL) * 4 binary.BigEndian.PutUint16(packetData[10:12], 0) @@ -184,9 +184,9 @@ func (m *Manager) rewritePacketDestination(packetData []byte, d *decoder, newIP if len(d.decoded) > 1 { switch d.decoded[1] { case layers.LayerTypeTCP: - m.updateTCPChecksum(packetData, ipHeaderLen, oldDst, newDst) + m.updateTCPChecksum(packetData, ipHeaderLen, oldDst[:], newDst[:]) case layers.LayerTypeUDP: - m.updateUDPChecksum(packetData, ipHeaderLen, oldDst, newDst) + m.updateUDPChecksum(packetData, ipHeaderLen, oldDst[:], newDst[:]) case layers.LayerTypeICMPv4: m.updateICMPChecksum(packetData, ipHeaderLen) } @@ -201,11 +201,11 @@ func (m *Manager) rewritePacketSource(packetData []byte, d *decoder, newIP netip return fmt.Errorf("only IPv4 supported") } - oldSrc := make([]byte, 4) - copy(oldSrc, packetData[12:16]) - newSrc := newIP.AsSlice() + var oldSrc [4]byte + copy(oldSrc[:], packetData[12:16]) + newSrc := newIP.As4() - copy(packetData[12:16], newSrc) + copy(packetData[12:16], newSrc[:]) ipHeaderLen := int(d.ip4.IHL) * 4 binary.BigEndian.PutUint16(packetData[10:12], 0) @@ -215,9 +215,9 @@ func (m *Manager) rewritePacketSource(packetData []byte, d *decoder, newIP netip if len(d.decoded) > 1 { switch d.decoded[1] { case layers.LayerTypeTCP: - m.updateTCPChecksum(packetData, ipHeaderLen, oldSrc, newSrc) + m.updateTCPChecksum(packetData, ipHeaderLen, oldSrc[:], newSrc[:]) case layers.LayerTypeUDP: - m.updateUDPChecksum(packetData, ipHeaderLen, oldSrc, newSrc) + m.updateUDPChecksum(packetData, ipHeaderLen, oldSrc[:], newSrc[:]) case layers.LayerTypeICMPv4: m.updateICMPChecksum(packetData, ipHeaderLen) }