46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package v3_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/cloudflare/cloudflared/ingress"
|
|
"github.com/cloudflare/cloudflared/packet"
|
|
)
|
|
|
|
type noopICMPRouter struct{}
|
|
|
|
func (noopICMPRouter) Request(ctx context.Context, pk *packet.ICMP, responder ingress.ICMPResponder) error {
|
|
return nil
|
|
}
|
|
func (noopICMPRouter) ConvertToTTLExceeded(pk *packet.ICMP, rawPacket packet.RawPacket) *packet.ICMP {
|
|
return nil
|
|
}
|
|
|
|
type mockICMPRouter struct {
|
|
recv chan *packet.ICMP
|
|
}
|
|
|
|
func newMockICMPRouter() *mockICMPRouter {
|
|
return &mockICMPRouter{
|
|
recv: make(chan *packet.ICMP, 1),
|
|
}
|
|
}
|
|
|
|
func (m *mockICMPRouter) Request(ctx context.Context, pk *packet.ICMP, responder ingress.ICMPResponder) error {
|
|
m.recv <- pk
|
|
return nil
|
|
}
|
|
func (mockICMPRouter) ConvertToTTLExceeded(pk *packet.ICMP, rawPacket packet.RawPacket) *packet.ICMP {
|
|
return packet.NewICMPTTLExceedPacket(pk.IP, rawPacket, testLocalAddr.AddrPort().Addr())
|
|
}
|
|
|
|
func assertICMPEqual(t *testing.T, expected *packet.ICMP, actual *packet.ICMP) {
|
|
if expected.Src != actual.Src {
|
|
t.Fatalf("Src address not equal: %+v\t%+v", expected, actual)
|
|
}
|
|
if expected.Dst != actual.Dst {
|
|
t.Fatalf("Dst address not equal: %+v\t%+v", expected, actual)
|
|
}
|
|
}
|