1From 670f888704c7bbb1121e63bc380ca34b83c43464 Mon Sep 17 00:00:00 2001 2From: jiangheng <jiangheng12@huawei.com> 3Date: Thu, 3 Mar 2022 17:06:03 +0800 4Subject: [PATCH] support REUSEPOR option fix rpc msg too much 5 fix recurring events 6 7--- 8 src/api/sockets.c | 4 ++++ 9 src/include/lwipsock.h | 10 ++++++++-- 10 2 files changed, 12 insertions(+), 2 deletions(-) 11 12diff --git a/src/api/sockets.c b/src/api/sockets.c 13index b032ce9..4b682f3 100644 14--- a/src/api/sockets.c 15+++ b/src/api/sockets.c 16@@ -3029,6 +3029,10 @@ lwip_sockopt_to_ipopt(int optname) 17 return SOF_KEEPALIVE; 18 case SO_REUSEADDR: 19 return SOF_REUSEADDR; 20+#if USE_LIBOS 21+ case SO_REUSEPORT: 22+ return SO_REUSEPORT; 23+#endif 24 default: 25 LWIP_ASSERT("Unknown socket option", 0); 26 return 0; 27diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h 28index 069cdcb..e2519ff 100644 29--- a/src/include/lwipsock.h 30+++ b/src/include/lwipsock.h 31@@ -94,7 +94,8 @@ struct lwip_sock { 32 #if USE_LIBOS 33 uint32_t epoll_events; /* registered events */ 34 uint32_t events; /* available events */ 35- int32_t in_event; /* avoid recurring events */ 36+ volatile bool have_event; /* avoid recurring events */ 37+ volatile bool have_rpc_send; /* avoid recurring rpc_send */ 38 epoll_data_t ep_data; 39 struct weakup_poll *weakup; 40 struct protocol_stack *stack; 41@@ -103,8 +104,13 @@ struct lwip_sock { 42 struct pbuf *send_lastdata; /* unread data in one pbuf */ 43 void *send_ring; 44 int32_t recv_flags; 45- int32_t nextfd; /* listenfd list */ 46+ bool wait_close; 47+ int32_t attach_fd; 48+ struct lwip_sock *shadowed_sock; 49+ struct list_node attach_list; 50+ struct list_node listen_list; 51 struct list_node recv_list; 52+ int32_t nextfd; /* listenfd list */ 53 #endif 54 }; 55 56-- 571.8.3.1 58 59