@@ -507,143 +507,6 @@ void CloseIOCTLSocket()
507
507
}
508
508
}
509
509
510
- #if __ANDROID__ && __ANDROID_API__ < 24
511
-
512
- static struct if_nameindex * backport_if_nameindex (void );
513
- static void backport_if_freenameindex (struct if_nameindex *);
514
-
515
- static void backport_if_freenameindex (struct if_nameindex * inArray)
516
- {
517
- if (inArray == NULL )
518
- {
519
- return ;
520
- }
521
-
522
- for (size_t i = 0 ; inArray[i].if_index != 0 ; i++)
523
- {
524
- if (inArray[i].if_name != NULL )
525
- {
526
- Platform::MemoryFree (inArray[i].if_name );
527
- }
528
- }
529
-
530
- Platform::MemoryFree (inArray);
531
- }
532
-
533
- static struct if_nameindex * backport_if_nameindex (void )
534
- {
535
- int err;
536
- unsigned index ;
537
- size_t intfIter = 0 ;
538
- size_t maxIntfNum = 0 ;
539
- size_t numIntf = 0 ;
540
- size_t numAddrs = 0 ;
541
- struct if_nameindex * retval = NULL ;
542
- struct if_nameindex * tmpval = NULL ;
543
- struct ifaddrs * addrList = NULL ;
544
- struct ifaddrs * addrIter = NULL ;
545
- const char * lastIntfName = " " ;
546
-
547
- err = getifaddrs (&addrList);
548
- VerifyOrExit (err >= 0 , );
549
-
550
- // coalesce on consecutive interface names
551
- for (addrIter = addrList; addrIter != NULL ; addrIter = addrIter->ifa_next )
552
- {
553
- numAddrs++;
554
- if (strcmp (addrIter->ifa_name , lastIntfName) == 0 )
555
- {
556
- continue ;
557
- }
558
- numIntf++;
559
- lastIntfName = addrIter->ifa_name ;
560
- }
561
-
562
- tmpval = (struct if_nameindex *) Platform::MemoryAlloc ((numIntf + 1 ) * sizeof (struct if_nameindex ));
563
- VerifyOrExit (tmpval != NULL , );
564
- memset (tmpval, 0 , (numIntf + 1 ) * sizeof (struct if_nameindex ));
565
-
566
- lastIntfName = " " ;
567
- for (addrIter = addrList; addrIter != NULL ; addrIter = addrIter->ifa_next )
568
- {
569
- if (strcmp (addrIter->ifa_name , lastIntfName) == 0 )
570
- {
571
- continue ;
572
- }
573
-
574
- index = if_nametoindex (addrIter->ifa_name );
575
- if (index != 0 )
576
- {
577
- tmpval[intfIter].if_index = index ;
578
- tmpval[intfIter].if_name = strdup (addrIter->ifa_name );
579
- intfIter++;
580
- }
581
- lastIntfName = addrIter->ifa_name ;
582
- }
583
-
584
- // coalesce on interface index
585
- maxIntfNum = 0 ;
586
- for (size_t i = 0 ; tmpval[i].if_index != 0 ; i++)
587
- {
588
- if (maxIntfNum < tmpval[i].if_index )
589
- {
590
- maxIntfNum = tmpval[i].if_index ;
591
- }
592
- }
593
-
594
- retval = (struct if_nameindex *) Platform::MemoryAlloc ((maxIntfNum + 1 ) * sizeof (struct if_nameindex ));
595
- VerifyOrExit (retval != NULL , );
596
- memset (retval, 0 , (maxIntfNum + 1 ) * sizeof (struct if_nameindex ));
597
-
598
- for (size_t i = 0 ; tmpval[i].if_index != 0 ; i++)
599
- {
600
- struct if_nameindex * intf = &tmpval[i];
601
- if (retval[intf->if_index - 1 ].if_index == 0 )
602
- {
603
- retval[intf->if_index - 1 ] = *intf;
604
- }
605
- else
606
- {
607
- free (intf->if_name );
608
- intf->if_index = 0 ;
609
- intf->if_name = 0 ;
610
- }
611
- }
612
-
613
- intfIter = 0 ;
614
-
615
- // coalesce potential gaps between indeces
616
- for (size_t i = 0 ; i < maxIntfNum; i++)
617
- {
618
- if (retval[i].if_index != 0 )
619
- {
620
- retval[intfIter] = retval[i];
621
- intfIter++;
622
- }
623
- }
624
-
625
- for (size_t i = intfIter; i < maxIntfNum; i++)
626
- {
627
- retval[i].if_index = 0 ;
628
- retval[i].if_name = NULL ;
629
- }
630
-
631
- exit :
632
- if (tmpval != NULL )
633
- {
634
- Platform::MemoryFree (tmpval);
635
- }
636
-
637
- if (addrList != NULL )
638
- {
639
- freeifaddrs (addrList);
640
- }
641
-
642
- return retval;
643
- }
644
-
645
- #endif // __ANDROID__ && __ANDROID_API__ < 24
646
-
647
510
InterfaceIterator::InterfaceIterator ()
648
511
{
649
512
mIntfArray = nullptr ;
@@ -656,11 +519,7 @@ InterfaceIterator::~InterfaceIterator()
656
519
{
657
520
if (mIntfArray != nullptr )
658
521
{
659
- #if __ANDROID__ && __ANDROID_API__ < 24
660
- backport_if_freenameindex (mIntfArray );
661
- #else
662
522
if_freenameindex (mIntfArray );
663
- #endif
664
523
mIntfArray = nullptr ;
665
524
}
666
525
}
@@ -674,11 +533,7 @@ bool InterfaceIterator::Next()
674
533
{
675
534
if (mIntfArray == nullptr )
676
535
{
677
- #if __ANDROID__ && __ANDROID_API__ < 24
678
- mIntfArray = backport_if_nameindex ();
679
- #else
680
536
mIntfArray = if_nameindex ();
681
- #endif
682
537
}
683
538
else if (mIntfArray [mCurIntf ].if_index != 0 )
684
539
{
0 commit comments