@@ -188,12 +188,12 @@ struct DrillSender {
188188
189189 QUIC_STATUS
190190 Send (
191- _In_ const DrillBuffer* PacketBuffer
191+ _In_ const DrillBuffer& PacketBuffer
192192 )
193193 {
194194 QUIC_STATUS Status = QUIC_STATUS_SUCCESS;
195- CXPLAT_FRE_ASSERT (PacketBuffer-> size () <= UINT16_MAX);
196- const uint16_t DatagramLength = (uint16_t ) PacketBuffer-> size ();
195+ CXPLAT_FRE_ASSERT (PacketBuffer. size () <= UINT16_MAX);
196+ const uint16_t DatagramLength = (uint16_t ) PacketBuffer. size ();
197197
198198 CXPLAT_ROUTE Route = {0 };
199199 CxPlatSocketGetLocalAddress (Binding, &Route.LocalAddress );
@@ -215,7 +215,7 @@ struct DrillSender {
215215 //
216216 // Copy test packet into SendBuffer.
217217 //
218- memcpy (SendBuffer->Buffer , PacketBuffer-> data (), DatagramLength);
218+ memcpy (SendBuffer->Buffer , PacketBuffer. data (), DatagramLength);
219219
220220 Status =
221221 CxPlatSocketSend (
@@ -306,7 +306,7 @@ QuicDrillInitialPacketFailureTest(
306306 //
307307 // Send test packet to the server.
308308 //
309- Status = Sender.Send (& PacketBuffer);
309+ Status = Sender.Send (PacketBuffer);
310310 if (QUIC_FAILED (Status)) {
311311 return false ;
312312 }
@@ -491,3 +491,43 @@ QuicDrillTestInitialToken(
491491 }
492492 }
493493}
494+
495+ void
496+ QuicDrillTestServerVNPacket (
497+ _In_ int Family
498+ )
499+ {
500+ MsQuicRegistration Registration (true );
501+ TEST_QUIC_SUCCEEDED (Registration.GetInitStatus ());
502+
503+ QUIC_ADDRESS_FAMILY QuicAddrFamily = (Family == 4 ) ? QUIC_ADDRESS_FAMILY_INET : QUIC_ADDRESS_FAMILY_INET6;
504+ QuicAddr ServerLocalAddr (QuicAddrFamily);
505+
506+ MsQuicAutoAcceptListener Listener (Registration, MsQuicConnection::NoOpCallback);
507+ TEST_QUIC_SUCCEEDED (Listener.Start (" MsQuicTest" , &ServerLocalAddr.SockAddr ));
508+ TEST_QUIC_SUCCEEDED (Listener.GetInitStatus ());
509+ TEST_QUIC_SUCCEEDED (Listener.GetLocalAddr (ServerLocalAddr));
510+
511+ DrillSender Sender;
512+ TEST_QUIC_SUCCEEDED (
513+ Sender.Initialize (
514+ QUIC_TEST_LOOPBACK_FOR_AF (QuicAddrFamily),
515+ QuicAddrFamily,
516+ (QuicAddrFamily == QUIC_ADDRESS_FAMILY_INET) ?
517+ ServerLocalAddr.SockAddr .Ipv4 .sin_port :
518+ ServerLocalAddr.SockAddr .Ipv6 .sin6_port ));
519+
520+ uint8_t SourceCidLen = 0 ;
521+ DrillInitialPacketDescriptor InitialPacketBuffer;
522+ InitialPacketBuffer.SourceCidLen = &SourceCidLen;
523+ for (uint8_t i = 0 ; i < 8 ; ++i) { InitialPacketBuffer.DestCid .push_back (i); }
524+ for (uint16_t i = 0 ; i < 1200 ; ++i) { InitialPacketBuffer.Payload .push_back (0 ); }
525+
526+ DrillVNPacketDescriptor VNPacketBuffer;
527+ for (uint8_t i = 0 ; i < 8 ; ++i) { VNPacketBuffer.DestCid .push_back (i); }
528+
529+ TEST_QUIC_SUCCEEDED (Sender.Send (InitialPacketBuffer.write ()));
530+ TEST_QUIC_SUCCEEDED (Sender.Send (VNPacketBuffer.write ()));
531+
532+ CxPlatSleep (500 );
533+ }
0 commit comments