From de9e22177586dc4ed8169d11c33030226cde2d50 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Fri, 12 Aug 2016 18:43:42 -0500 Subject: [PATCH] [nsapi] Added support for NSAPI_REUSEADDR to the lwip interface --- .../net/FEATURE_IPV4/lwip-interface/lwip_stack.c | 13 +++++++++++++ features/net/FEATURE_IPV4/lwip-interface/lwipopts.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c b/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c index f6f7cbb8ae8..68d93682f77 100644 --- a/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c +++ b/features/net/FEATURE_IPV4/lwip-interface/lwip_stack.c @@ -28,6 +28,7 @@ #include "lwip/dhcp.h" #include "lwip/tcpip.h" #include "lwip/tcp.h" +#include "lwip/ip.h" /* Static arena of sockets */ @@ -415,6 +416,18 @@ static int lwip_setsockopt(nsapi_stack_t *stack, nsapi_socket_t handle, int leve s->conn->pcb.tcp->keep_intvl = *(int*)optval; return 0; + case NSAPI_REUSEADDR: + if (optlen != sizeof(int)) { + return NSAPI_ERROR_UNSUPPORTED; + } + + if (*(int *)optval) { + s->conn->pcb.tcp->so_options |= SOF_REUSEADDR; + } else { + s->conn->pcb.tcp->so_options &= ~SOF_REUSEADDR; + } + return 0; + default: return NSAPI_ERROR_UNSUPPORTED; } diff --git a/features/net/FEATURE_IPV4/lwip-interface/lwipopts.h b/features/net/FEATURE_IPV4/lwip-interface/lwipopts.h index 679784f586c..5e16535ba29 100644 --- a/features/net/FEATURE_IPV4/lwip-interface/lwipopts.h +++ b/features/net/FEATURE_IPV4/lwip-interface/lwipopts.h @@ -67,6 +67,8 @@ #define LWIP_DHCP 1 #define LWIP_DNS 1 +#define SO_REUSE 1 + // Support Multicast #include "stdlib.h" #define LWIP_IGMP 1