MCPcopy
hub / github.com/cloudflare/cloudflared / nextPacket

Method nextPacket

ingress/packet_router.go:55–77  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

53}
54
55func (r *PacketRouter) nextPacket(ctx context.Context) (packet.RawPacket, ICMPResponder, error) {
56 pk, err := r.muxer.ReceivePacket(ctx)
57 if err != nil {
58 return packet.RawPacket{}, nil, err
59 }
60 responder := newPacketResponder(r.muxer, r.connIndex, packet.NewEncoder())
61
62 switch pk.Type() {
63 case quicpogs.DatagramTypeIP:
64 return packet.RawPacket{Data: pk.Payload()}, responder, nil
65 case quicpogs.DatagramTypeIPWithTrace:
66 var identity tracing.Identity
67 if err := identity.UnmarshalBinary(pk.Metadata()); err != nil {
68 r.logger.Err(err).Bytes("tracingIdentity", pk.Metadata()).Msg("Failed to unmarshal tracing identity")
69 } else {
70 tracedCtx := tracing.NewTracedContext(ctx, identity.String(), r.logger)
71 responder.AddTraceContext(tracedCtx, pk.Metadata())
72 }
73 return packet.RawPacket{Data: pk.Payload()}, responder, nil
74 default:
75 return packet.RawPacket{}, nil, fmt.Errorf("unexpected datagram type %d", pk.Type())
76 }
77}
78
79func (r *PacketRouter) handlePacket(ctx context.Context, rawPacket packet.RawPacket, responder ICMPResponder) {
80 // ICMP Proxy feature is disabled, drop packets

Callers 1

ServeMethod · 0.95

Calls 13

UnmarshalBinaryMethod · 0.95
StringMethod · 0.95
NewEncoderFunction · 0.92
NewTracedContextFunction · 0.92
BytesMethod · 0.80
ErrorfMethod · 0.80
newPacketResponderFunction · 0.70
ReceivePacketMethod · 0.65
TypeMethod · 0.65
PayloadMethod · 0.65
MetadataMethod · 0.65
AddTraceContextMethod · 0.65

Tested by

no test coverage detected