@@ -618,6 +618,167 @@ static void set_promisc_mode_off(void)
618618 net_if_unset_promisc (iface4 );
619619}
620620
621+ static struct in_addr my_ipv4_addr_test = { { { 10 , 0 , 0 , 1 } } };
622+ static struct in_addr my_ipv4_addr_not_found = { { { 1 , 2 , 3 , 4 } } };
623+
624+ static void v4_addr_add (void )
625+ {
626+ bool ret ;
627+
628+ ret = net_if_ipv4_addr_add_by_index (1 , & my_ipv4_addr_test ,
629+ NET_ADDR_MANUAL , 0 );
630+ zassert_true (ret , "Cannot add IPv4 address" );
631+ }
632+
633+ static void v4_addr_lookup (void )
634+ {
635+ int ret ;
636+
637+ ret = net_if_ipv4_addr_lookup_by_index (& my_ipv4_addr_test );
638+ zassert_equal (ret , 1 , "IPv4 address not found" );
639+
640+ ret = net_if_ipv4_addr_lookup_by_index (& my_ipv4_addr_not_found );
641+ zassert_not_equal (ret , 1 , "IPv4 address found" );
642+ }
643+
644+ static void v4_addr_rm (void )
645+ {
646+ bool ret ;
647+
648+ ret = net_if_ipv4_addr_rm_by_index (1 , & my_ipv4_addr_test );
649+ zassert_true (ret , "Cannot remove IPv4 address" );
650+ }
651+
652+ #define MY_ADDR_V4_USER { { { 10, 0, 0, 2 } } }
653+ #define UNKNOWN_ADDR_V4_USER { { { 5, 6, 7, 8 } } }
654+
655+ static void v4_addr_add_user (void )
656+ {
657+ struct in_addr my_addr = MY_ADDR_V4_USER ;
658+ bool ret ;
659+
660+ ret = net_if_ipv4_addr_add_by_index (1 , & my_addr , NET_ADDR_MANUAL , 0 );
661+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
662+ zassert_true (ret , "Cannot add IPv4 address" );
663+ } else if (IS_ENABLED (CONFIG_USERSPACE )) {
664+ zassert_false (ret , "Could add IPv4 address" );
665+ } else {
666+ zassert_true (ret , "Cannot add IPv4 address" );
667+ }
668+ }
669+
670+ static void v4_addr_lookup_user (void )
671+ {
672+ struct in_addr my_addr = MY_ADDR_V4_USER ;
673+ struct in_addr unknown_addr = UNKNOWN_ADDR_V4_USER ;
674+ int ret ;
675+
676+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
677+ ret = net_if_ipv4_addr_lookup_by_index (& my_addr );
678+ zassert_equal (ret , 1 , "IPv4 address not found (%d)" , ret );
679+ }
680+
681+ ret = net_if_ipv4_addr_lookup_by_index (& unknown_addr );
682+ zassert_equal (ret , 0 , "IPv4 address found" );
683+ }
684+
685+ static void v4_addr_rm_user (void )
686+ {
687+ struct in_addr my_addr = MY_ADDR_V4_USER ;
688+ bool ret ;
689+
690+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
691+ ret = net_if_ipv4_addr_rm_by_index (1 , & my_addr );
692+ zassert_true (ret , "Cannot remove IPv4 address" );
693+ }
694+ }
695+
696+ static
697+ struct in6_addr my_ipv6_addr_test = { { { 0x20 , 0x01 , 0x0d , 0xb8 , 1 , 0 , 0 , 0 ,
698+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x1 } } };
699+
700+ static
701+ struct in6_addr my_ipv6_addr_not_found = { { { 0x20 , 0x01 , 0x0d , 0xb8 , 0 , 0 , 0 ,
702+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x64 } } };
703+
704+ static void v6_addr_add (void )
705+ {
706+ bool ret ;
707+
708+ ret = net_if_ipv6_addr_add_by_index (1 , & my_ipv6_addr_test ,
709+ NET_ADDR_MANUAL , 0 );
710+ zassert_true (ret , "Cannot add IPv6 address" );
711+ }
712+
713+ static void v6_addr_lookup (void )
714+ {
715+ int ret ;
716+
717+ ret = net_if_ipv6_addr_lookup_by_index (& my_ipv6_addr_test );
718+ zassert_equal (ret , 1 , "IPv6 address not found" );
719+
720+ ret = net_if_ipv6_addr_lookup_by_index (& my_ipv6_addr_not_found );
721+ zassert_not_equal (ret , 1 , "IPv6 address found" );
722+ }
723+
724+ static void v6_addr_rm (void )
725+ {
726+ bool ret ;
727+
728+ ret = net_if_ipv6_addr_rm_by_index (1 , & my_ipv6_addr_test );
729+ zassert_true (ret , "Cannot remove IPv6 address" );
730+ }
731+
732+ #define MY_ADDR_V6_USER { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, \
733+ 0, 0, 0, 0, 0, 0, 0, 0x65 } } }
734+
735+ #define UNKNOWN_ADDR_V6_USER { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, \
736+ 0, 0, 0, 0, 0, 0, 0, 0x66 } } }
737+
738+ static void v6_addr_add_user (void )
739+ {
740+ struct in6_addr my_addr = MY_ADDR_V6_USER ;
741+ bool ret ;
742+
743+ ret = net_if_ipv6_addr_add_by_index (1 , & my_addr , NET_ADDR_MANUAL , 0 );
744+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
745+ zassert_true (ret , "Cannot add IPv6 address" );
746+ } else if (IS_ENABLED (CONFIG_USERSPACE )) {
747+ zassert_false (ret , "Could add IPv6 address" );
748+ } else {
749+ zassert_true (ret , "Cannot add IPv6 address" );
750+ }
751+ }
752+
753+ static void v6_addr_lookup_user (void )
754+ {
755+ struct in6_addr my_addr = MY_ADDR_V6_USER ;
756+ struct in6_addr unknown_addr = UNKNOWN_ADDR_V6_USER ;
757+ int ret ;
758+
759+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
760+ ret = net_if_ipv6_addr_lookup_by_index (& my_addr );
761+ zassert_equal (ret , 1 , "IPv6 address not found (%d)" , ret );
762+
763+ ret = net_if_ipv6_addr_lookup_by_index (& unknown_addr );
764+ zassert_equal (ret , 0 , "IPv6 address found" );
765+ }
766+ }
767+
768+ static void v6_addr_rm_user (void )
769+ {
770+ struct in6_addr my_addr = MY_ADDR_V6_USER ;
771+ bool ret ;
772+
773+ /* Check also that add is enabled so that we can remove something
774+ * that was already added.
775+ */
776+ if (IS_ENABLED (CONFIG_NET_IF_USERSPACE_ACCESS )) {
777+ ret = net_if_ipv6_addr_rm_by_index (1 , & my_addr );
778+ zassert_true (ret , "Cannot remove IPv6 address" );
779+ }
780+ }
781+
621782void test_main (void )
622783{
623784 ztest_test_suite (net_iface_test ,
@@ -633,7 +794,20 @@ void test_main(void)
633794 ztest_unit_test (check_promisc_mode_on ),
634795 ztest_unit_test (set_promisc_mode_on_again ),
635796 ztest_unit_test (set_promisc_mode_off ),
636- ztest_unit_test (check_promisc_mode_off ));
797+ ztest_unit_test (check_promisc_mode_off ),
798+ ztest_unit_test (v4_addr_add ),
799+ ztest_unit_test (v4_addr_lookup ),
800+ ztest_unit_test (v4_addr_rm ),
801+ ztest_user_unit_test (v4_addr_add_user ),
802+ ztest_user_unit_test (v4_addr_lookup_user ),
803+ ztest_user_unit_test (v4_addr_rm_user ),
804+ ztest_unit_test (v6_addr_add ),
805+ ztest_unit_test (v6_addr_lookup ),
806+ ztest_unit_test (v6_addr_rm ),
807+ ztest_user_unit_test (v6_addr_add_user ),
808+ ztest_user_unit_test (v6_addr_lookup_user ),
809+ ztest_user_unit_test (v6_addr_rm_user )
810+ );
637811
638812 ztest_run_test_suite (net_iface_test );
639813}
0 commit comments