From 991c71cf274e13c7cb4305b32129102c261677d7 Mon Sep 17 00:00:00 2001
From: Oleg Hahm <oleg@hobbykeller.org>
Date: Mon, 21 Mar 2016 16:24:40 +0100
Subject: [PATCH] gnrc ipv6: use ipv6_addr_t ptr for hdr_build

---
 examples/gnrc_networking/udp.c                              | 2 +-
 sys/include/net/gnrc/ipv6/hdr.h                             | 4 ++--
 sys/net/gnrc/application_layer/tftp/gnrc_tftp.c             | 2 +-
 sys/net/gnrc/application_layer/zep/gnrc_zep.c               | 2 +-
 sys/net/gnrc/conn/ip/gnrc_conn_ip.c                         | 2 +-
 sys/net/gnrc/conn/udp/gnrc_conn_udp.c                       | 2 +-
 sys/net/gnrc/netreg/gnrc_netreg.c                           | 2 +-
 sys/net/gnrc/network_layer/icmpv6/echo/gnrc_icmpv6_echo.c   | 5 ++---
 sys/net/gnrc/network_layer/ipv6/hdr/gnrc_ipv6_hdr.c         | 4 ++--
 sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c | 3 +--
 sys/net/gnrc/routing/rpl/gnrc_rpl_control_messages.c        | 2 +-
 sys/shell/commands/sc_icmpv6_echo.c                         | 2 +-
 tests/unittests/tests-gnrc_ipv6_hdr/tests-gnrc_ipv6_hdr.c   | 6 +++---
 13 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/examples/gnrc_networking/udp.c b/examples/gnrc_networking/udp.c
index 7d8153465d..9fe7004a66 100644
--- a/examples/gnrc_networking/udp.c
+++ b/examples/gnrc_networking/udp.c
@@ -65,7 +65,7 @@ static void send(char *addr_str, char *port_str, char *data, unsigned int num,
             return;
         }
         /* allocate IPv6 header */
-        ip = gnrc_ipv6_hdr_build(udp, NULL, (uint8_t *)&addr);
+        ip = gnrc_ipv6_hdr_build(udp, NULL, &addr);
         if (ip == NULL) {
             puts("Error: unable to allocate IPv6 header");
             gnrc_pktbuf_release(udp);
diff --git a/sys/include/net/gnrc/ipv6/hdr.h b/sys/include/net/gnrc/ipv6/hdr.h
index d7af9574c2..638c1fc5bf 100644
--- a/sys/include/net/gnrc/ipv6/hdr.h
+++ b/sys/include/net/gnrc/ipv6/hdr.h
@@ -43,8 +43,8 @@ extern "C" {
  * @return  The an IPv6 header in packet buffer on success.
  * @return  NULL on error.
  */
-gnrc_pktsnip_t *gnrc_ipv6_hdr_build(gnrc_pktsnip_t *payload, uint8_t *src,
-                                    uint8_t *dst);
+gnrc_pktsnip_t *gnrc_ipv6_hdr_build(gnrc_pktsnip_t *payload, ipv6_addr_t *src,
+                                    ipv6_addr_t *dst);
 
 #ifdef __cplusplus
 }
diff --git a/sys/net/gnrc/application_layer/tftp/gnrc_tftp.c b/sys/net/gnrc/application_layer/tftp/gnrc_tftp.c
index 16b01c66a9..6feaf4b4c3 100644
--- a/sys/net/gnrc/application_layer/tftp/gnrc_tftp.c
+++ b/sys/net/gnrc/application_layer/tftp/gnrc_tftp.c
@@ -971,7 +971,7 @@ tftp_state _tftp_send(gnrc_pktsnip_t *buf, tftp_context_t *ctxt, size_t len)
     }
 
     /* allocate IPv6 header */
-    ip = gnrc_ipv6_hdr_build(udp, NULL, ctxt->peer.u8);
+    ip = gnrc_ipv6_hdr_build(udp, NULL, &(ctxt->peer));
     if (ip == NULL) {
         DEBUG("tftp: error unable to allocate IPv6 header");
         gnrc_pktbuf_release(udp);
diff --git a/sys/net/gnrc/application_layer/zep/gnrc_zep.c b/sys/net/gnrc/application_layer/zep/gnrc_zep.c
index d351811939..c6228f58a6 100644
--- a/sys/net/gnrc/application_layer/zep/gnrc_zep.c
+++ b/sys/net/gnrc/application_layer/zep/gnrc_zep.c
@@ -241,7 +241,7 @@ static int _send(gnrc_netdev_t *netdev, gnrc_pktsnip_t *pkt)
 
     new_pkt = hdr;
 
-    hdr = gnrc_ipv6_hdr_build(new_pkt, NULL, (uint8_t *) &(dev->dst));
+    hdr = gnrc_ipv6_hdr_build(new_pkt, NULL, &(dev->dst));
 
     if (hdr == NULL) {
         DEBUG("zep: could not allocate IPv6 header in pktbuf\n");
diff --git a/sys/net/gnrc/conn/ip/gnrc_conn_ip.c b/sys/net/gnrc/conn/ip/gnrc_conn_ip.c
index 66a5bd0cc7..b2311b7b2e 100644
--- a/sys/net/gnrc/conn/ip/gnrc_conn_ip.c
+++ b/sys/net/gnrc/conn/ip/gnrc_conn_ip.c
@@ -99,7 +99,7 @@ int conn_ip_sendto(const void *data, size_t len, const void *src, size_t src_len
                 return -EINVAL;
             }
             /* addr will only be copied */
-            hdr = gnrc_ipv6_hdr_build(pkt, (uint8_t *)src, (uint8_t *)dst);
+            hdr = gnrc_ipv6_hdr_build(pkt, src, dst);
             if (hdr == NULL) {
                 gnrc_pktbuf_release(pkt);
                 return -ENOMEM;
diff --git a/sys/net/gnrc/conn/udp/gnrc_conn_udp.c b/sys/net/gnrc/conn/udp/gnrc_conn_udp.c
index 2e0c3b9c73..fc18a950ce 100644
--- a/sys/net/gnrc/conn/udp/gnrc_conn_udp.c
+++ b/sys/net/gnrc/conn/udp/gnrc_conn_udp.c
@@ -111,7 +111,7 @@ int conn_udp_sendto(const void *data, size_t len, const void *src, size_t src_le
                 return -EINVAL;
             }
             /* addr will only be copied */
-            hdr = gnrc_ipv6_hdr_build(pkt, (uint8_t *)src, (uint8_t *)dst);
+            hdr = gnrc_ipv6_hdr_build(pkt, src, dst);
             if (hdr == NULL) {
                 gnrc_pktbuf_release(pkt);
                 return -ENOMEM;
diff --git a/sys/net/gnrc/netreg/gnrc_netreg.c b/sys/net/gnrc/netreg/gnrc_netreg.c
index 11d0d6ae8a..b81de9b01f 100644
--- a/sys/net/gnrc/netreg/gnrc_netreg.c
+++ b/sys/net/gnrc/netreg/gnrc_netreg.c
@@ -146,7 +146,7 @@ gnrc_pktsnip_t *gnrc_netreg_hdr_build(gnrc_nettype_t type, gnrc_pktsnip_t *paylo
         case GNRC_NETTYPE_IPV6:
             assert(src_len == sizeof(ipv6_addr_t));
             assert(dst_len == sizeof(ipv6_addr_t));
-            return gnrc_ipv6_hdr_build(payload, src, dst);
+            return gnrc_ipv6_hdr_build(payload, (ipv6_addr_t*) src, (ipv6_addr_t*) dst);
 #endif
 #ifdef MODULE_GNRC_TCP
 
diff --git a/sys/net/gnrc/network_layer/icmpv6/echo/gnrc_icmpv6_echo.c b/sys/net/gnrc/network_layer/icmpv6/echo/gnrc_icmpv6_echo.c
index 47a5316146..3d2ecd9065 100644
--- a/sys/net/gnrc/network_layer/icmpv6/echo/gnrc_icmpv6_echo.c
+++ b/sys/net/gnrc/network_layer/icmpv6/echo/gnrc_icmpv6_echo.c
@@ -84,11 +84,10 @@ void gnrc_icmpv6_echo_req_handle(kernel_pid_t iface, ipv6_hdr_t *ipv6_hdr,
     }
 
     if (ipv6_addr_is_multicast(&ipv6_hdr->dst)) {
-        hdr = gnrc_ipv6_hdr_build(pkt, NULL, (uint8_t *)&ipv6_hdr->src);
+        hdr = gnrc_ipv6_hdr_build(pkt, NULL, &ipv6_hdr->src);
     }
     else {
-        hdr = gnrc_ipv6_hdr_build(pkt, (uint8_t *)&ipv6_hdr->dst,
-                                  (uint8_t *)&ipv6_hdr->src);
+        hdr = gnrc_ipv6_hdr_build(pkt, &ipv6_hdr->dst, &ipv6_hdr->src);
     }
 
     if (hdr == NULL) {
diff --git a/sys/net/gnrc/network_layer/ipv6/hdr/gnrc_ipv6_hdr.c b/sys/net/gnrc/network_layer/ipv6/hdr/gnrc_ipv6_hdr.c
index 53808f3921..d467937c38 100644
--- a/sys/net/gnrc/network_layer/ipv6/hdr/gnrc_ipv6_hdr.c
+++ b/sys/net/gnrc/network_layer/ipv6/hdr/gnrc_ipv6_hdr.c
@@ -32,8 +32,8 @@ static char addr_str[IPV6_ADDR_MAX_STR_LEN];
 #define HDR_NETTYPE (GNRC_NETTYPE_UNDEF)
 #endif
 
-gnrc_pktsnip_t *gnrc_ipv6_hdr_build(gnrc_pktsnip_t *payload, uint8_t *src,
-                                    uint8_t *dst)
+gnrc_pktsnip_t *gnrc_ipv6_hdr_build(gnrc_pktsnip_t *payload, ipv6_addr_t *src,
+                                    ipv6_addr_t *dst)
 {
     gnrc_pktsnip_t *ipv6;
     ipv6_hdr_t *hdr;
diff --git a/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c b/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c
index 49f2a67e79..a65ad2acd0 100644
--- a/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c
+++ b/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c
@@ -837,8 +837,7 @@ static gnrc_pktsnip_t *_build_headers(kernel_pid_t iface, gnrc_pktsnip_t *payloa
                                       ipv6_addr_t *dst, ipv6_addr_t *src)
 {
     gnrc_pktsnip_t *l2hdr;
-    gnrc_pktsnip_t *iphdr = gnrc_ipv6_hdr_build(payload, (uint8_t *)src,
-                                                (uint8_t *)dst);
+    gnrc_pktsnip_t *iphdr = gnrc_ipv6_hdr_build(payload, src, dst);
     if (iphdr == NULL) {
         DEBUG("ndp internal: error allocating IPv6 header.\n");
         return NULL;
diff --git a/sys/net/gnrc/routing/rpl/gnrc_rpl_control_messages.c b/sys/net/gnrc/routing/rpl/gnrc_rpl_control_messages.c
index 9d8871c352..573b71d7fd 100644
--- a/sys/net/gnrc/routing/rpl/gnrc_rpl_control_messages.c
+++ b/sys/net/gnrc/routing/rpl/gnrc_rpl_control_messages.c
@@ -77,7 +77,7 @@ void gnrc_rpl_send(gnrc_pktsnip_t *pkt, kernel_pid_t iface, ipv6_addr_t *src, ip
         dst = (ipv6_addr_t *) &ipv6_addr_all_rpl_nodes;
     }
 
-    hdr = gnrc_ipv6_hdr_build(pkt, (uint8_t *)src, (uint8_t *)dst);
+    hdr = gnrc_ipv6_hdr_build(pkt, src, dst);
 
     if (hdr == NULL) {
         DEBUG("RPL: Send - no space left in packet buffer\n");
diff --git a/sys/shell/commands/sc_icmpv6_echo.c b/sys/shell/commands/sc_icmpv6_echo.c
index e8d67483f2..0aab0113dc 100644
--- a/sys/shell/commands/sc_icmpv6_echo.c
+++ b/sys/shell/commands/sc_icmpv6_echo.c
@@ -254,7 +254,7 @@ int _icmpv6_ping(int argc, char **argv)
 
         _set_payload(pkt->data, payload_len);
 
-        pkt = gnrc_ipv6_hdr_build(pkt, NULL, addr.u8);
+        pkt = gnrc_ipv6_hdr_build(pkt, NULL, &addr);
 
         if (pkt == NULL) {
             puts("error: packet buffer full");
diff --git a/tests/unittests/tests-gnrc_ipv6_hdr/tests-gnrc_ipv6_hdr.c b/tests/unittests/tests-gnrc_ipv6_hdr/tests-gnrc_ipv6_hdr.c
index 485579095a..5440ac1925 100644
--- a/tests/unittests/tests-gnrc_ipv6_hdr/tests-gnrc_ipv6_hdr.c
+++ b/tests/unittests/tests-gnrc_ipv6_hdr/tests-gnrc_ipv6_hdr.c
@@ -42,7 +42,7 @@ static void test_gnrc_ipv6_hdr_build__src_NULL(void)
     ipv6_hdr_t *hdr;
 
     gnrc_pktbuf_init();
-    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, NULL, (uint8_t *)&dst));
+    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, NULL, &dst));
     hdr = pkt->data;
     TEST_ASSERT_NOT_NULL(hdr);
     TEST_ASSERT(ipv6_hdr_is(hdr));
@@ -61,7 +61,7 @@ static void test_gnrc_ipv6_hdr_build__dst_NULL(void)
     ipv6_hdr_t *hdr;
 
     gnrc_pktbuf_init();
-    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, (uint8_t *)&src, NULL));
+    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, &src, NULL));
     hdr = pkt->data;
     TEST_ASSERT_NOT_NULL(hdr);
     TEST_ASSERT(ipv6_hdr_is(hdr));
@@ -81,7 +81,7 @@ static void test_gnrc_ipv6_hdr_build__complete(void)
     ipv6_hdr_t *hdr;
 
     gnrc_pktbuf_init();
-    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, (uint8_t *)&src, (uint8_t *)&dst));
+    TEST_ASSERT_NOT_NULL(pkt = gnrc_ipv6_hdr_build(NULL, &src, &dst));
     hdr = pkt->data;
     TEST_ASSERT_NOT_NULL(hdr);
     TEST_ASSERT(ipv6_hdr_is(hdr));
-- 
GitLab