Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions examples/dtls-echo/dtls-client.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,21 +119,20 @@ static int dtls_handle_read(dtls_context_t *ctx)
return 0;
}

/* session requires the remote socket (IPv6:UDP) address and netif */
session.size = sizeof(uint8_t) * 16 + sizeof(unsigned short);
session.port = remote.port;
dtls_session_init(&session);
session.addr.port = remote.port;
if (remote.netif == SOCK_ADDR_ANY_NETIF) {
session.ifindex = SOCK_ADDR_ANY_NETIF;
}
else {
session.ifindex = remote.netif;
}

memcpy(&session.addr, &remote.addr.ipv6, sizeof(session.addr));
memcpy(&session.addr.addr, &remote.addr.ipv6, sizeof(session.addr.addr));

if (IS_ACTIVE(ENABLE_DEBUG)) {
DEBUG("DBG-Client: Msg received from \n\t Addr Src: [");
ipv6_addr_print(&session.addr);
ipv6_addr_print(&session.addr.addr);
DEBUG("]:%u\n", remote.port);
}

Expand Down Expand Up @@ -325,6 +324,8 @@ dtls_context_t *_init_dtls(sock_udp_t *sock, sock_udp_ep_t *local,
dtls_set_log_level(TINYDTLS_LOG_LVL);
#endif

dtls_session_init(dst);

/* First, we prepare the UDP Sock */
local->port = (unsigned short) CLIENT_PORT;
remote->port = (unsigned short) DTLS_DEFAULT_PORT;
Expand Down Expand Up @@ -358,11 +359,10 @@ dtls_context_t *_init_dtls(sock_udp_t *sock, sock_udp_ep_t *local,
}

/* Second: We prepare the DTLS Session by means of ctx->app */
dst->size = sizeof(uint8_t) * 16 + sizeof(unsigned short);
dst->port = remote->port;
dst->addr.port = remote->port;

/* NOTE: remote.addr.ipv6 and dst->addr are different structures. */
if (ipv6_addr_from_str(&dst->addr, addr_str) == NULL) {
/* NOTE: remote.addr.ipv6 and dst->addr.addr are different structures. */
if (ipv6_addr_from_str(&dst->addr.addr, addr_str) == NULL) {
puts("ERROR: init_dtls was unable to load the IPv6 addresses!");
return new_context;
}
Expand Down
6 changes: 3 additions & 3 deletions examples/dtls-echo/dtls-server.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,16 @@ static int dtls_handle_read(dtls_context_t *ctx)
DEBUG("DBG-Server: Record Rcvd\n");

/* (DTLS) session requires the remote peer address (IPv6:Port) and netif */
session.size = sizeof(uint8_t) * 16 + sizeof(unsigned short);
session.port = remote_peer->remote->port;
dtls_session_init(&session);
session.addr.port = remote_peer->remote->port;
if (remote_peer->remote->netif == SOCK_ADDR_ANY_NETIF) {
session.ifindex = SOCK_ADDR_ANY_NETIF;
}
else {
session.ifindex = remote_peer->remote->netif;
}

memcpy(&session.addr, &remote_peer->remote->addr.ipv6, sizeof(session.addr));
memcpy(&session.addr.addr, &remote_peer->remote->addr.ipv6, sizeof(session.addr.addr));
return dtls_handle_message(ctx, &session, packet_rcvd, res);
}

Expand Down
12 changes: 6 additions & 6 deletions pkg/tinydtls/contrib/sock_dtls.c
Original file line number Diff line number Diff line change
Expand Up @@ -817,25 +817,25 @@ void sock_dtls_init(void)

static void _ep_to_session(const sock_udp_ep_t *ep, session_t *session)
{
session->port = ep->port;
session->size = sizeof(ipv6_addr_t) + /* addr */
sizeof(unsigned short); /* port */
dtls_session_init(session);
session->addr.port = ep->port;

if (ipv6_addr_is_link_local((ipv6_addr_t *)ep->addr.ipv6)) {
/* set ifindex for link-local addresses */
session->ifindex = ep->netif;
}
else {
session->ifindex = SOCK_ADDR_ANY_NETIF;
}
memcpy(&session->addr, &ep->addr.ipv6, sizeof(ipv6_addr_t));
memcpy(&session->addr.addr, &ep->addr.ipv6, sizeof(session->addr.addr));
}

static void _session_to_ep(const session_t *session, sock_udp_ep_t *ep)
{
ep->port = session->port;
ep->port = session->addr.port;
ep->netif = session->ifindex;
ep->family = AF_INET6;
memcpy(&ep->addr.ipv6, &session->addr, sizeof(ipv6_addr_t));
memcpy(&ep->addr.ipv6, &session->addr.addr, sizeof(ep->addr.ipv6));
}

static inline uint32_t _update_timeout(uint32_t start, uint32_t timeout)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
From 6fbe634900e15b006edf3d6c9a6b79f19d286840 Mon Sep 17 00:00:00 2001
From: Leandro Lanzieri <leandro.lanzieri@haw-hamburg.de>
Date: Thu, 24 Mar 2022 12:00:27 +0100
Subject: [PATCH] session.h: Modify session_t for RIOT

Now the addr member of session_t includes both the IPv6 address and the
port.
---
session.c | 4 ++--
session.h | 6 ++++--
2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/session.c b/session.c
index 300224e..020ab5b 100644
--- a/session.c
+++ b/session.c
@@ -34,8 +34,8 @@
#elif defined(WITH_RIOT_GNRC)
#define _dtls_address_equals_impl(A,B) \
((A)->size == (B)->size \
- && (A)->port == (B)->port \
- && ipv6_addr_equal(&((A)->addr),&((B)->addr)) \
+ && (A)->addr.port == (B)->addr.port \
+ && ipv6_addr_equal(&((A)->addr.addr),&((B)->addr.addr)) \
&& (A)->ifindex == (B)->ifindex)
#else /* WITH_CONTIKI */

diff --git a/session.h b/session.h
index a8ac8f3..2ab600a 100644
--- a/session.h
+++ b/session.h
@@ -35,8 +35,10 @@ typedef struct {
#include "net/ipv6/addr.h"
typedef struct {
unsigned char size;
- ipv6_addr_t addr;
- unsigned short port;
+ struct {
+ ipv6_addr_t addr;
+ unsigned short port;
+ } addr;
int ifindex;
} session_t;
#else /* ! WITH_CONTIKI && ! WITH_RIOT_GNRC */
--
2.35.1