diff --git a/Makefile.dep b/Makefile.dep index 3f6ef658a8428c28689771dc7d3cf970e63855ec..c0b8a64ff724adc359a1b2fcd7582ce495802a62 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -6,6 +6,13 @@ ifneq (,$(filter pnet,$(USEMODULE))) USEMODULE += vtimer endif +ifneq (,$(filter nhdp,$(USEMODULE))) + USEMODULE += conn_udp + USEMODULE += vtimer + USEMODULE += oonf_common + USEMODULE += oonf_rfc5444 +endif + ifneq (,$(filter gnrc_%,$(filter-out gnrc_netapi gnrc_netreg gnrc_netif% gnrc_pktbuf,$(USEMODULE)))) USEMODULE += gnrc endif @@ -294,12 +301,6 @@ ifneq (,$(filter libfixmath-unittests,$(USEMODULE))) USEPKG += libfixmath endif -ifneq (,$(filter nhdp,$(USEMODULE))) - USEMODULE += vtimer - USEMODULE += oonf_common - USEMODULE += oonf_rfc5444 -endif - ifneq (,$(filter fib,$(USEMODULE))) USEMODULE += universal_address USEMODULE += xtimer diff --git a/sys/net/routing/nhdp/nhdp.c b/sys/net/routing/nhdp/nhdp.c index fe13081402ef8b9fab0d6f8600f35fd99374ad50..35f1a48124c7dd1ea62746d2d3ad05ddfdb9541b 100644 --- a/sys/net/routing/nhdp/nhdp.c +++ b/sys/net/routing/nhdp/nhdp.c @@ -18,6 +18,7 @@ * @} */ +#include "conn/udp.h" #include "msg.h" #include "netapi.h" #include "net/gnrc/netif.h" @@ -35,6 +36,10 @@ #include "nhdp_writer.h" #include "nhdp_reader.h" +#ifndef MODULE_CONN_UDP +#error "nhdp needs a conn_udp implementation to work" +#endif + char nhdp_stack[NHDP_STACK_SIZE]; char nhdp_rcv_stack[NHDP_STACK_SIZE]; @@ -44,8 +49,7 @@ static kernel_pid_t nhdp_rcv_pid = KERNEL_PID_UNDEF; static kernel_pid_t helper_pid = KERNEL_PID_UNDEF; static nhdp_if_entry_t nhdp_if_table[GNRC_NETIF_NUMOF]; static mutex_t send_rcv_mutex = MUTEX_INIT; -static sockaddr6_t sa_bcast; -static int sock_rcv; +static conn_udp_t conn; #if (NHDP_METRIC_NEEDS_TIMER) static vtimer_t metric_timer; @@ -85,12 +89,6 @@ kernel_pid_t nhdp_start(void) { if (nhdp_pid == KERNEL_PID_UNDEF) { /* Init destination address for NHDP's packets */ - sa_bcast.sin6_family = AF_INET6; - sa_bcast.sin6_port = HTONS(MANET_PORT); - ipv6_addr_set_all_nodes_addr(&sa_bcast.sin6_addr); - - /* Configure sending/receiving UDP socket */ - sock_rcv = socket_base_socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); /* Start the NHDP thread */ nhdp_pid = thread_create(nhdp_stack, sizeof(nhdp_stack), THREAD_PRIORITY_MAIN - 1, @@ -293,20 +291,20 @@ static void *_nhdp_receiver(void *arg __attribute__((unused))) msg_init_queue(msg_q, NHDP_MSG_QUEUE_SIZE); /* Configure socket address for the manet port 269 */ - sockaddr6_t sa_rcv = {.sin6_family = AF_INET6, - .sin6_port = HTONS(MANET_PORT) - }; + ipv6_addr_t unspec = IPV6_ADDR_UNSPECIFIED; /* Bind UDP socket to socket address */ - if (socket_base_bind(sock_rcv, &sa_rcv, sizeof(sa_rcv)) == -1) { - /* Failed binding the socket */ - socket_base_close(sock_rcv); + if (conn_udp_create(&conn, &unspec, sizeof(unspec), AF_INET6, MANET_PORT) == -1) { + /* Failed creating the connection */ return 0; } while (1) { - int32_t rcv_size = socket_base_recvfrom(sock_rcv, (void *)nhdp_rcv_buf, - NHDP_MAX_RFC5444_PACKET_SZ, 0, &sa_rcv, &fromlen); + ipv6_addr_t rcv_addr; + uint16_t rcv_port; + int32_t rcv_size = conn_udp_recvfrom(&conn, (void *)nhdp_rcv_buf, + NHDP_MAX_RFC5444_PACKET_SZ, &rcv_addr, + sizeof(rcv_addr), &rcv_port); if (rcv_size > 0) { /* Packet received, let the reader handle it */ @@ -316,7 +314,7 @@ static void *_nhdp_receiver(void *arg __attribute__((unused))) } } - socket_base_close(sock_rcv); + gnrc_udp_close(&conn); return 0; } @@ -328,5 +326,8 @@ static void write_packet(struct rfc5444_writer *wr __attribute__((unused)), struct rfc5444_writer_target *iface __attribute__((unused)), void *buffer, size_t length) { - socket_base_sendto(sock_rcv, buffer, length, 0, &sa_bcast, sizeof(sa_bcast)); + ipv6_addr_t src, dst = IPV6_ADDR_ALL_NODES_LINK_LOCAL; + uint16_t sport, dport = MANET_PORT; + conn_udp_getlocaladdr(&conn, &src, &sport); + conn_udp_sendto(buffer, length, &src, sizeof(src), &dst, sizeof(dst), AF_INET, sport, dport); } diff --git a/sys/net/routing/nhdp/nhdp.h b/sys/net/routing/nhdp/nhdp.h index eeb6e276f0331f3c2adf5444162f8624b8e79373..1943dda3e95d66154ac14545126a4df3e75b242d 100644 --- a/sys/net/routing/nhdp/nhdp.h +++ b/sys/net/routing/nhdp/nhdp.h @@ -23,7 +23,6 @@ #include "timex.h" #include "kernel_types.h" -#include "socket_base/socket.h" #include "nhdp_metric.h" #include "rfc5444/rfc5444_writer.h"