Exemple #1
0
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));
}
Exemple #2
0
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;
}
Exemple #3
0
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));
}
Exemple #4
0
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));
}
Exemple #5
0
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));
}
Exemple #6
0
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;
}
Exemple #7
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;
}
Exemple #8
0
static void test_ipv6_nc_get_next__empty(void)
{
    TEST_ASSERT_NULL(gnrc_ipv6_nc_get_next(NULL));
}