mirror of
https://github.com/cloudflare/cloudflared.git
synced 2025-07-27 19:59:58 +00:00
TUN-8640: Add ICMP support for datagram V3
Closes TUN-8640
This commit is contained in:

committed by
Gonçalo Garcia

parent
dfbccd917c
commit
588ab7ebaa
52
quic/v3/icmp.go
Normal file
52
quic/v3/icmp.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package v3
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/cloudflare/cloudflared/ingress"
|
||||
"github.com/cloudflare/cloudflared/packet"
|
||||
"github.com/cloudflare/cloudflared/tracing"
|
||||
)
|
||||
|
||||
// packetResponder is an implementation of the [ingress.ICMPResponder] which provides the ICMP Flow manager the
|
||||
// return path to return and ICMP Echo response back to the QUIC muxer.
|
||||
type packetResponder struct {
|
||||
datagramMuxer DatagramICMPWriter
|
||||
connID uint8
|
||||
}
|
||||
|
||||
func newPacketResponder(datagramMuxer DatagramICMPWriter, connID uint8) ingress.ICMPResponder {
|
||||
return &packetResponder{
|
||||
datagramMuxer,
|
||||
connID,
|
||||
}
|
||||
}
|
||||
|
||||
func (pr *packetResponder) ConnectionIndex() uint8 {
|
||||
return pr.connID
|
||||
}
|
||||
|
||||
func (pr *packetResponder) ReturnPacket(pk *packet.ICMP) error {
|
||||
return pr.datagramMuxer.SendICMPPacket(pk)
|
||||
}
|
||||
|
||||
func (pr *packetResponder) AddTraceContext(tracedCtx *tracing.TracedContext, serializedIdentity []byte) {
|
||||
// datagram v3 does not support tracing ICMP packets
|
||||
}
|
||||
|
||||
func (pr *packetResponder) RequestSpan(ctx context.Context, pk *packet.ICMP) (context.Context, trace.Span) {
|
||||
// datagram v3 does not support tracing ICMP packets
|
||||
return ctx, tracing.NewNoopSpan()
|
||||
}
|
||||
|
||||
func (pr *packetResponder) ReplySpan(ctx context.Context, logger *zerolog.Logger) (context.Context, trace.Span) {
|
||||
// datagram v3 does not support tracing ICMP packets
|
||||
return ctx, tracing.NewNoopSpan()
|
||||
}
|
||||
|
||||
func (pr *packetResponder) ExportSpan() {
|
||||
// datagram v3 does not support tracing ICMP packets
|
||||
}
|
Reference in New Issue
Block a user