@@ -209,13 +209,11 @@ namespace pcpp
209
209
// set all data pointers in layers to the new array address
210
210
const uint8_t * dataPtr = m_RawPacket->getRawData ();
211
211
212
- Layer* curLayer = m_FirstLayer;
213
- while (curLayer != nullptr )
212
+ for (Layer* curLayer = m_FirstLayer; curLayer != nullptr ; curLayer = curLayer->getNextLayer ())
214
213
{
215
214
PCPP_LOG_DEBUG (" Setting new data pointer to layer '" << typeid (curLayer).name () << " '" );
216
- curLayer->m_Data = ( uint8_t *) dataPtr;
215
+ curLayer->m_Data = const_cast < uint8_t *>( dataPtr) ;
217
216
dataPtr += curLayer->getHeaderLen ();
218
- curLayer = curLayer->getNextLayer ();
219
217
}
220
218
}
221
219
@@ -303,8 +301,7 @@ namespace pcpp
303
301
packetTrailerLen = m_LastLayer->getDataLen ();
304
302
305
303
// go over all layers from the first layer to the last layer and set the data ptr and data length for each one
306
- Layer* curLayer = m_FirstLayer;
307
- while (curLayer != nullptr )
304
+ for (Layer* curLayer = m_FirstLayer; curLayer != nullptr ; curLayer = curLayer->getNextLayer ())
308
305
{
309
306
// set data ptr to layer
310
307
curLayer->m_Data = const_cast <uint8_t *>(dataPtr);
@@ -321,9 +318,6 @@ namespace pcpp
321
318
// advance data ptr and data length
322
319
dataPtr += curLayer->getHeaderLen ();
323
320
dataLen -= curLayer->getHeaderLen ();
324
-
325
- // move to next layer
326
- curLayer = curLayer->getNextLayer ();
327
321
}
328
322
329
323
return true ;
@@ -509,33 +503,29 @@ namespace pcpp
509
503
510
504
Layer* Packet::getLayerOfType (ProtocolType layerType, int index) const
511
505
{
512
- Layer* curLayer = getFirstLayer ();
513
506
int curIndex = 0 ;
514
- while ( curLayer != nullptr )
507
+ for (Layer* curLayer = getFirstLayer (); curLayer != nullptr ; curLayer = curLayer-> getNextLayer () )
515
508
{
516
- if (curLayer->getProtocol () == layerType)
517
- {
518
- if (curIndex < index)
519
- curIndex++;
520
- else
521
- break ;
522
- }
523
- curLayer = curLayer->getNextLayer ();
509
+ if (curLayer->getProtocol () != layerType)
510
+ continue ;
511
+
512
+ if (curIndex == index)
513
+ return curLayer;
514
+
515
+ curIndex++;
524
516
}
525
517
526
- return curLayer ;
518
+ return nullptr ;
527
519
}
528
520
529
521
bool Packet::isPacketOfType (ProtocolType protocolType) const
530
522
{
531
- Layer* curLayer = getFirstLayer ();
532
- while (curLayer != nullptr )
523
+ for (Layer* curLayer = getFirstLayer (); curLayer != nullptr ; curLayer = curLayer->getNextLayer ())
533
524
{
534
525
if (curLayer->getProtocol () == protocolType)
535
526
{
536
527
return true ;
537
528
}
538
- curLayer = curLayer->getNextLayer ();
539
529
}
540
530
541
531
return false ;
@@ -600,9 +590,8 @@ namespace pcpp
600
590
const uint8_t * dataPtr = m_RawPacket->getRawData ();
601
591
602
592
// go over all layers from the first layer to the last layer and set the data ptr and data length for each layer
603
- Layer* curLayer = m_FirstLayer;
604
593
bool passedExtendedLayer = false ;
605
- while ( curLayer != nullptr )
594
+ for (Layer* curLayer = m_FirstLayer; curLayer != nullptr ; curLayer = curLayer-> getNextLayer () )
606
595
{
607
596
// set the data ptr
608
597
curLayer->m_Data = (uint8_t *)dataPtr;
@@ -619,7 +608,6 @@ namespace pcpp
619
608
// assuming header length of the layer that requested to be extended hasn't been enlarged yet
620
609
size_t headerLen = curLayer->getHeaderLen () + (curLayer == layer ? numOfBytesToExtend : 0 );
621
610
dataPtr += headerLen;
622
- curLayer = curLayer->getNextLayer ();
623
611
}
624
612
625
613
return true ;
@@ -680,12 +668,9 @@ namespace pcpp
680
668
void Packet::computeCalculateFields ()
681
669
{
682
670
// calculated fields should be calculated from top layer to bottom layer
683
-
684
- Layer* curLayer = m_LastLayer;
685
- while (curLayer != nullptr )
671
+ for (Layer* curLayer = m_LastLayer; curLayer != nullptr ; curLayer = curLayer->getPrevLayer ())
686
672
{
687
673
curLayer->computeCalculateFields ();
688
- curLayer = curLayer->getPrevLayer ();
689
674
}
690
675
}
691
676
@@ -834,11 +819,10 @@ namespace pcpp
834
819
{
835
820
result.clear ();
836
821
result.push_back (printPacketInfo (timeAsLocalTime));
837
- Layer* curLayer = m_FirstLayer;
838
- while ( curLayer != nullptr )
822
+
823
+ for (Layer* curLayer = m_FirstLayer; curLayer != nullptr ; curLayer = curLayer-> getNextLayer () )
839
824
{
840
825
result.push_back (curLayer->toString ());
841
- curLayer = curLayer->getNextLayer ();
842
826
}
843
827
}
844
828
0 commit comments