static void test_ipv6_nc_get_next__1_entry(void) { gnrc_ipv6_nc_t *entry = NULL; test_ipv6_nc_add__success(); /* adds DEFAULT_TEST_IPV6_ADDR to DEFAULT_TEST_NETIF */ TEST_ASSERT_NOT_NULL((entry = gnrc_ipv6_nc_get_next(NULL))); TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next(entry)); }
gnrc_ipv6_nc_t *gnrc_ipv6_nc_get_next_router(gnrc_ipv6_nc_t *prev) { for (gnrc_ipv6_nc_t *router = gnrc_ipv6_nc_get_next(prev); router != NULL; router = gnrc_ipv6_nc_get_next(router)) { if (router->flags & GNRC_IPV6_NC_IS_ROUTER) { return router; } } return NULL; }
static void test_ipv6_nc_get_next__2_entries(void) { ipv6_addr_t addr = OTHER_TEST_IPV6_ADDR; gnrc_ipv6_nc_t *entry = NULL; test_ipv6_nc_add__success(); /* adds DEFAULT_TEST_IPV6_ADDR to DEFAULT_TEST_NETIF */ TEST_ASSERT_NOT_NULL(gnrc_ipv6_nc_add(DEFAULT_TEST_NETIF, &addr, TEST_STRING8, sizeof(TEST_STRING8) - 1, 0)); TEST_ASSERT_NOT_NULL((entry = gnrc_ipv6_nc_get_next(NULL))); TEST_ASSERT_NOT_NULL((entry = gnrc_ipv6_nc_get_next(entry))); TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next(entry)); }
static void test_ipv6_nc_get_next_router__second_entry(void) { gnrc_ipv6_nc_t *entry1 = NULL, *entry2 = NULL; /* adds DEFAULT_TEST_IPV6_ADDR and OTHER_TEST_IPV6_ADDR to DEFAULT_TEST_NETIF */ test_ipv6_nc_get_next__2_entries(); TEST_ASSERT_NOT_NULL((entry1 = gnrc_ipv6_nc_get_next(NULL))); TEST_ASSERT_NOT_NULL((entry2 = gnrc_ipv6_nc_get_next(entry1))); entry2->flags = (GNRC_IPV6_NC_STATE_REACHABLE << GNRC_IPV6_NC_STATE_POS); entry2->flags |= GNRC_IPV6_NC_IS_ROUTER; TEST_ASSERT_NOT_NULL((entry1 = gnrc_ipv6_nc_get_next_router(NULL))); TEST_ASSERT(entry2 == entry1); TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next_router(entry1)); }
static void test_ipv6_nc_get_next__holey(void) { ipv6_addr_t addr1 = OTHER_TEST_IPV6_ADDR; ipv6_addr_t addr2 = THIRD_TEST_IPV6_ADDR; gnrc_ipv6_nc_t *entry = NULL, *exp_entry = NULL; /* adds DEFAULT_TEST_IPV6_ADDR and OTHER_TEST_IPV6_ADDR to DEFAULT_TEST_NETIF */ test_ipv6_nc_get_next__2_entries(); TEST_ASSERT_NOT_NULL(gnrc_ipv6_nc_add(DEFAULT_TEST_NETIF, &addr2, TEST_STRING8, sizeof(TEST_STRING8) - 2, 0)); TEST_ASSERT_NOT_NULL((exp_entry = gnrc_ipv6_nc_get(DEFAULT_TEST_NETIF, &addr2))); gnrc_ipv6_nc_remove(DEFAULT_TEST_NETIF, &addr1); TEST_ASSERT_NOT_NULL((entry = gnrc_ipv6_nc_get_next(NULL))); TEST_ASSERT_NOT_NULL((entry = gnrc_ipv6_nc_get_next(entry))); TEST_ASSERT(exp_entry == entry); TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next(entry)); }
static int _ipv6_nc_reset(void) { gnrc_ipv6_nc_t *tmp = NULL; for (gnrc_ipv6_nc_t *entry = gnrc_ipv6_nc_get_next(NULL); entry != NULL; tmp = entry, entry = gnrc_ipv6_nc_get_next(entry)) { if (tmp) { gnrc_ipv6_nc_remove(tmp->iface, &tmp->ipv6_addr); } } /* remove last entry */ if (tmp) { gnrc_ipv6_nc_remove(tmp->iface, &tmp->ipv6_addr); } printf("success: reset neighbor cache\n"); return 0; }
static int _ipv6_nc_list(void) { char ipv6_str[IPV6_ADDR_MAX_STR_LEN]; char l2addr_str[3 * MAX_L2_ADDR_LEN]; puts("IPv6 address if L2 address state type"); puts("------------------------------------------------------------------------------"); for (gnrc_ipv6_nc_t *entry = gnrc_ipv6_nc_get_next(NULL); entry != NULL; entry = gnrc_ipv6_nc_get_next(entry)) { printf("%-30s %2" PRIkernel_pid " %-24s ", ipv6_addr_to_str(ipv6_str, &entry->ipv6_addr, sizeof(ipv6_str)), entry->iface, gnrc_netif_addr_to_str(l2addr_str, sizeof(l2addr_str), entry->l2_addr, entry->l2_addr_len)); _print_nc_state(entry); _print_nc_type(entry); puts(""); } return 0; }
static void test_ipv6_nc_get_next__empty(void) { TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next(NULL)); }