53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
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
|
|
}
|