22#include <setjmp.h>
33#include <stddef.h>
44#include <cmocka.h>
5+ #include <stdint.h>
56#include <string.h>
67#include <errno.h>
8+ #include <sys/types.h>
79#include <unistd.h>
810
911/* load api */
1012#include "plugin/api/interfaces/load.h"
1113
1214/* interfaces hash table state */
15+ #include "plugin/data/interfaces/interface/ipv4/address.h"
16+ #include "plugin/data/interfaces/interface/ipv6/address.h"
1317#include "plugin/data/interfaces/interface_state.h"
1418
1519/* interfaces interface linked list */
1620#include "plugin/data/interfaces/interface/linked_list.h"
21+ #include "plugin/types.h"
1722
1823/* init functionality */
1924static int setup (void * * state );
@@ -43,12 +48,22 @@ static void test_interface_list_element_new_ipv4_neighbor_correct(void **state);
4348static void test_interface_ipv4_address_netmask2prefix_correct (void * * state );
4449static void test_interface_ipv4_address_netmask2prefix_incorrect (void * * state );
4550
51+ static void test_interface_ipv4_address_set_ip_correct (void * * state );
52+ static void test_interface_ipv4_address_set_prefix_length_correct (void * * state );
53+ static void test_interface_ipv4_address_set_netmask_correct (void * * state );
54+
4655/*** ipv6 ***/
4756static void test_interface_list_new_ipv6_address_correct (void * * state );
4857static void test_interface_list_new_ipv6_neighbor_correct (void * * state );
4958static void test_interface_list_element_new_ipv6_address_correct (void * * state );
5059static void test_interface_list_element_new_ipv6_neighbor_correct (void * * state );
5160
61+ static void test_interface_ipv6_address_set_ip_correct (void * * state );
62+ static void test_interface_ipv6_address_set_prefix_length_correct (void * * state );
63+ static void test_interface_ipv6_address_element_set_correct (void * * state );
64+
65+
66+
5267/** load **/
5368static void test_correct_load_interface (void * * state );
5469
@@ -75,11 +90,17 @@ int main(void)
7590 cmocka_unit_test (test_interface_list_element_new_ipv4_neighbor_correct ),
7691 cmocka_unit_test (test_interface_ipv4_address_netmask2prefix_correct ),
7792 cmocka_unit_test (test_interface_ipv4_address_netmask2prefix_incorrect ),
93+ cmocka_unit_test (test_interface_ipv4_address_set_ip_correct ),
94+ cmocka_unit_test (test_interface_ipv4_address_set_prefix_length_correct ),
95+ cmocka_unit_test (test_interface_ipv4_address_set_netmask_correct ),
7896 /*** ipv6 ***/
7997 cmocka_unit_test (test_interface_list_new_ipv6_address_correct ),
8098 cmocka_unit_test (test_interface_list_new_ipv6_neighbor_correct ),
8199 cmocka_unit_test (test_interface_list_element_new_ipv6_address_correct ),
82100 cmocka_unit_test (test_interface_list_element_new_ipv6_neighbor_correct ),
101+ cmocka_unit_test (test_interface_ipv6_address_set_ip_correct ),
102+ cmocka_unit_test (test_interface_ipv6_address_set_prefix_length_correct ),
103+ cmocka_unit_test (test_interface_ipv6_address_element_set_correct )
83104 };
84105
85106 return cmocka_run_group_tests (tests , setup , teardown );
@@ -436,6 +457,63 @@ static void test_interface_ipv4_address_netmask2prefix_incorrect(void **state)
436457 assert_int_not_equal (rc , 0 );
437458}
438459
460+ static void test_interface_ipv4_address_set_ip_correct (void * * state )
461+ {
462+ (void ) state ;
463+ const char * ip = "127.0.0.1" ;
464+
465+ interfaces_interface_ipv4_address_element_t * address ;
466+
467+ address = interfaces_interface_ipv4_address_new ();
468+ assert_null (address );
469+
470+ address = interfaces_interface_ipv4_address_element_new ();
471+ assert_non_null (address );
472+
473+ interfaces_interface_ipv4_address_element_set_ip (& address , ip );
474+ assert_string_equal (address -> address .ip , ip );
475+ }
476+
477+ static void test_interface_ipv4_address_set_prefix_length_correct (void * * state )
478+ {
479+ (void ) state ;
480+ uint8_t prefix_length = 16 ;
481+
482+ interfaces_interface_ipv4_address_element_t * address ;
483+
484+ address = interfaces_interface_ipv4_address_new ();
485+ assert_null (address );
486+
487+ address = interfaces_interface_ipv4_address_element_new ();
488+ assert_non_null (address );
489+
490+ interfaces_interface_ipv4_address_element_set_prefix_length (& address , prefix_length );
491+ assert_int_equal (address -> address .subnet .prefix_length , prefix_length );
492+ assert_int_equal (address -> address .subnet_type , interfaces_interface_ipv4_address_subnet_prefix_length );
493+
494+ }
495+
496+ static void test_interface_ipv4_address_set_netmask_correct (void * * state )
497+ {
498+ (void ) state ;
499+ int rc = 0 ;
500+ const char * netmask = "255.255.0.0" ;
501+
502+ interfaces_interface_ipv4_address_element_t * address ;
503+
504+ address = interfaces_interface_ipv4_address_new ();
505+ assert_null (address );
506+
507+ address = interfaces_interface_ipv4_address_element_new ();
508+ assert_non_null (address );
509+
510+ rc = interfaces_interface_ipv4_address_element_set_netmask (& address , netmask );
511+ assert_int_equal (rc , 0 );
512+ assert_string_equal (address -> address .subnet .netmask , netmask );
513+ assert_int_equal (address -> address .subnet_type , interfaces_interface_ipv4_address_subnet_netmask );
514+ }
515+
516+
439517static void test_interface_list_new_ipv6_address_correct (void * * state )
440518{
441519 (void ) state ;
@@ -487,3 +565,60 @@ static void test_interface_list_element_new_ipv6_neighbor_correct(void **state)
487565 interfaces_interface_ipv6_neighbor_element_free (& neighbor );
488566 assert_null (neighbor );
489567}
568+
569+ static void test_interface_ipv6_address_set_ip_correct (void * * state )
570+ {
571+ (void ) state ;
572+ const char * ip = "0:0:0:0:0:0:0:1" ;
573+
574+ interfaces_interface_ipv6_address_element_t * address ;
575+
576+ address = interfaces_interface_ipv6_address_new ();
577+ assert_null (address );
578+
579+ address = interfaces_interface_ipv6_address_element_new ();
580+ assert_non_null (address );
581+
582+ interfaces_interface_ipv6_address_element_set_ip (& address , ip );
583+ assert_string_equal (address -> address .ip , ip );
584+ }
585+
586+ static void test_interface_ipv6_address_set_prefix_length_correct (void * * state )
587+ {
588+ (void ) state ;
589+ uint8_t prefix_length = 64 ;
590+
591+ interfaces_interface_ipv6_address_element_t * address ;
592+
593+ address = interfaces_interface_ipv6_address_new ();
594+ assert_null (address );
595+
596+ address = interfaces_interface_ipv6_address_element_new ();
597+ assert_non_null (address );
598+
599+ interfaces_interface_ipv6_address_element_set_prefix_length (& address , prefix_length );
600+ assert_int_equal (address -> address .prefix_length , prefix_length );
601+ }
602+
603+ static void test_interface_ipv6_address_element_set_correct (void * * state )
604+ {
605+ (void ) state ;
606+ int rc = 0 ;
607+
608+ interfaces_interface_ipv6_address_element_t * address_src ;
609+ interfaces_interface_ipv6_address_element_t * address_dst ;
610+
611+ address_src = interfaces_interface_ipv6_address_new ();
612+ assert_null (address_src );
613+ address_dst = interfaces_interface_ipv6_address_new ();
614+ assert_null (address_dst );
615+
616+
617+ address_src = interfaces_interface_ipv6_address_element_new ();
618+ assert_non_null (address_src );
619+ address_dst = interfaces_interface_ipv6_address_element_new ();
620+ assert_non_null (address_dst );
621+
622+ rc = interfaces_interface_ipv6_address_element_set (& address_src , & address_dst );
623+ assert_int_equal (rc , 0 );
624+ }
0 commit comments