From d02dbb8ba4ffaa31243949c240a9e7ef67f1d3a9 Mon Sep 17 00:00:00 2001 From: mikoto2000 Date: Wed, 16 Jun 2021 16:21:02 +0000 Subject: [PATCH] =?UTF-8?q?ROS=E3=82=B5=E3=83=BC=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=88=E3=82=92=E3=82=AA=E3=83=BC=E3=83=97?= =?UTF-8?q?=E3=83=B3=E3=81=99=E3=82=8B=E9=9A=9B=E3=81=AB=E3=80=81=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=9F=E3=83=B3=E3=82=B0=E3=81=AB=E3=82=88=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=AF=E3=82=AA=E3=83=BC=E3=83=97=E3=83=B3=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=81=AB=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mros-dev/mros-athrill/target/lwip/lwip_linux.c | 3 +-- .../mros-src/comm/cimpl/mros_comm_tcp_server_cimpl.c | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/device/peripheral/mros-dev/mros-athrill/target/lwip/lwip_linux.c b/src/device/peripheral/mros-dev/mros-athrill/target/lwip/lwip_linux.c index ee0fdeb5..7cf4490a 100644 --- a/src/device/peripheral/mros-dev/mros-athrill/target/lwip/lwip_linux.c +++ b/src/device/peripheral/mros-dev/mros-athrill/target/lwip/lwip_linux.c @@ -45,8 +45,7 @@ int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *opt int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen) { - //TODO - return 0; + return setsockopt(s, level, optname, optval, optlen); } int lwip_close(int s) diff --git a/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_server_cimpl.c b/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_server_cimpl.c index 4d019d5b..a23ea443 100644 --- a/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_server_cimpl.c +++ b/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_server_cimpl.c @@ -28,6 +28,14 @@ mRosReturnType mros_comm_tcp_server_bind(mRosCommTcpServerType *server, mros_int mRosSockAddrInType addr; mros_comm_inet_local_sockaddr_init(&addr, port); + + int yes = 1; + ret = mros_comm_setsockopt(server->socket.sock_fd, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(yes)); + if (ret != MROS_E_OK) { + ROS_ERROR("%s %s() %u ret=%d", __FILE__, __FUNCTION__, __LINE__, ret); + return MROS_E_SYSERR; + } + ret = mros_comm_bind(server->socket.sock_fd, (mRosSockAddrType*)&addr, sizeof(mRosSockAddrInType)); if (ret != MROS_E_OK) { ROS_ERROR("%s %s() %u ret=%d", __FILE__, __FUNCTION__, __LINE__, ret);