static inline int init_app(void) { #if defined(CONFIG_NET_APP_MY_IPV6_ADDR) if (net_addr_pton(AF_INET6, CONFIG_NET_APP_MY_IPV6_ADDR, &server_addr) < 0) { mbedtls_printf("Invalid IPv6 address %s", CONFIG_NET_APP_MY_IPV6_ADDR); } #endif if (!net_if_ipv6_addr_add(net_if_get_default(), &server_addr, NET_ADDR_MANUAL, 0)) { return -EIO; } net_if_ipv6_maddr_add(net_if_get_default(), &mcast_addr); return 0; }
static void setup_ipv6(struct net_if *iface) { char hr_addr[NET_IPV6_ADDR_LEN]; struct in6_addr addr; if (net_addr_pton(AF_INET6, CONFIG_NET_APP_MY_IPV6_ADDR, &addr)) { NET_ERR("Invalid address: %s", CONFIG_NET_APP_MY_IPV6_ADDR); return; } net_if_ipv6_addr_add(iface, &addr, NET_ADDR_MANUAL, 0); NET_INFO("IPv6 address: %s", net_addr_ntop(AF_INET6, &addr, hr_addr, NET_IPV6_ADDR_LEN)); if (net_addr_pton(AF_INET6, MCAST_IP6ADDR, &addr)) { NET_ERR("Invalid address: %s", MCAST_IP6ADDR); return; } net_if_ipv6_maddr_add(iface, &addr); }
static inline void init_app(void) { printk("Run IPSP sample"); k_sem_init(&quit_lock, 0, UINT_MAX); if (net_addr_pton(AF_INET6, CONFIG_NET_APP_MY_IPV6_ADDR, &in6addr_my) < 0) { printk("Invalid IPv6 address %s", CONFIG_NET_APP_MY_IPV6_ADDR); } do { struct net_if_addr *ifaddr; ifaddr = net_if_ipv6_addr_add(net_if_get_default(), &in6addr_my, NET_ADDR_MANUAL, 0); } while (0); net_if_ipv6_maddr_add(net_if_get_default(), &in6addr_mcast); }
static void iface_setup(void) { struct net_if_mcast_addr *maddr; struct net_if_addr *ifaddr; int idx; /* The semaphore is there to wait the data to be received. */ k_sem_init(&wait_data, 0, UINT_MAX); iface1 = net_if_get_by_index(0); iface2 = net_if_get_by_index(1); iface3 = net_if_get_by_index(2); ((struct net_if_test *)iface1->dev->driver_data)->idx = 0; ((struct net_if_test *)iface2->dev->driver_data)->idx = 1; ((struct net_if_test *)iface3->dev->driver_data)->idx = 2; idx = net_if_get_by_iface(iface1); zassert_equal(idx, 0, "Invalid index iface1"); idx = net_if_get_by_iface(iface2); zassert_equal(idx, 1, "Invalid index iface2"); idx = net_if_get_by_iface(iface3); zassert_equal(idx, 2, "Invalid index iface3"); DBG("Interfaces: [%d] iface1 %p, [%d] iface2 %p, [%d] iface3 %p\n", net_if_get_by_iface(iface1), iface1, net_if_get_by_iface(iface2), iface2, net_if_get_by_iface(iface3), iface3); zassert_not_null(iface1, "Interface 1"); zassert_not_null(iface2, "Interface 2"); zassert_not_null(iface3, "Interface 3"); ifaddr = net_if_ipv6_addr_add(iface1, &my_addr1, NET_ADDR_MANUAL, 0); if (!ifaddr) { DBG("Cannot add IPv6 address %s\n", net_sprint_ipv6_addr(&my_addr1)); zassert_not_null(ifaddr, "addr1"); } /* For testing purposes we need to set the adddresses preferred */ ifaddr->addr_state = NET_ADDR_PREFERRED; ifaddr = net_if_ipv6_addr_add(iface1, &ll_addr, NET_ADDR_MANUAL, 0); if (!ifaddr) { DBG("Cannot add IPv6 address %s\n", net_sprint_ipv6_addr(&ll_addr)); zassert_not_null(ifaddr, "ll_addr"); } ifaddr->addr_state = NET_ADDR_PREFERRED; ifaddr = net_if_ipv6_addr_add(iface2, &my_addr2, NET_ADDR_MANUAL, 0); if (!ifaddr) { DBG("Cannot add IPv6 address %s\n", net_sprint_ipv6_addr(&my_addr2)); zassert_not_null(ifaddr, "addr2"); } ifaddr->addr_state = NET_ADDR_PREFERRED; ifaddr = net_if_ipv6_addr_add(iface2, &my_addr3, NET_ADDR_MANUAL, 0); if (!ifaddr) { DBG("Cannot add IPv6 address %s\n", net_sprint_ipv6_addr(&my_addr3)); zassert_not_null(ifaddr, "addr3"); } ifaddr->addr_state = NET_ADDR_PREFERRED; net_ipv6_addr_create(&in6addr_mcast, 0xff02, 0, 0, 0, 0, 0, 0, 0x0001); maddr = net_if_ipv6_maddr_add(iface1, &in6addr_mcast); if (!maddr) { DBG("Cannot add multicast IPv6 address %s\n", net_sprint_ipv6_addr(&in6addr_mcast)); zassert_not_null(maddr, "mcast"); } net_if_up(iface1); net_if_up(iface2); net_if_up(iface3); /* The interface might receive data which might fail the checks * in the iface sending function, so we need to reset the failure * flag. */ test_failed = false; test_started = true; }