From 7c3d307dbdd9fb477dcff4088cfa0c4f8ed9be44 Mon Sep 17 00:00:00 2001 From: Lemmy Huang Date: Wed, 17 Jul 2024 16:56:43 +0800 Subject: [PATCH] cleancode: refactor posix type and get_socket Changed: get_socket_by_fd -> lwip_get_socket get_socket SET_CONN_TYPE_LIBOS_OR_HOST -> POSIX_SET_TYPE SET_CONN_TYPE_LIBOS SET_CONN_TYPE_HOST CONN_TYPE_IS_LIBOS -> POSIX_IS_TYPE CONN_TYPE_IS_HOST CONN_TYPE_HAS_LIBOS_AND_HOST -> POSIX_HAS_TYPE CONN_TYPE_HAS_LIBOS CONN_TYPE_HAS_HOST Signed-off-by: Lemmy Huang (cherry picked from commit 722d58e4b17d5bc7f4bd4b9cfa8b59ee94eb92ff) --- ...e-refactor-posix-type-and-get_socket.patch | 185 ++++++++++++++++++ lwip.spec | 6 +- 2 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 0149-cleancode-refactor-posix-type-and-get_socket.patch diff --git a/0149-cleancode-refactor-posix-type-and-get_socket.patch b/0149-cleancode-refactor-posix-type-and-get_socket.patch new file mode 100644 index 0000000..af06346 --- /dev/null +++ b/0149-cleancode-refactor-posix-type-and-get_socket.patch @@ -0,0 +1,185 @@ +From bc2b6b2163b3bc2ef6754d13f362c23f720994dd Mon Sep 17 00:00:00 2001 +From: Lemmy Huang +Date: Wed, 10 Jul 2024 16:08:46 +0800 +Subject: [PATCH] cleancode: refactor posix type and get_socket + + Changed: + get_socket_by_fd -> lwip_get_socket + get_socket + + SET_CONN_TYPE_LIBOS_OR_HOST -> POSIX_SET_TYPE + SET_CONN_TYPE_LIBOS + SET_CONN_TYPE_HOST + + CONN_TYPE_IS_LIBOS -> POSIX_IS_TYPE + CONN_TYPE_IS_HOST + + CONN_TYPE_HAS_LIBOS_AND_HOST -> POSIX_HAS_TYPE + CONN_TYPE_HAS_LIBOS + CONN_TYPE_HAS_HOST + +Signed-off-by: Lemmy Huang +--- + src/api/lwipgz_sock.c | 2 +- + src/api/sockets.c | 13 +++---------- + src/core/tcp.c | 2 +- + src/include/lwip/api.h | 35 ----------------------------------- + src/include/lwipgz_sock.h | 22 ++++++++++++++++++++-- + 5 files changed, 25 insertions(+), 49 deletions(-) + +diff --git a/src/api/lwipgz_sock.c b/src/api/lwipgz_sock.c +index 4c1ecd0..5a5a5fd 100644 +--- a/src/api/lwipgz_sock.c ++++ b/src/api/lwipgz_sock.c +@@ -86,7 +86,7 @@ int gazelle_alloc_socket(struct netconn *newconn, int accepted, int flags) + fd = socket_new_sysfd(newconn, flags); + if (fd < 0) + return -1; +- sock = get_socket_by_fd(fd); ++ sock = lwip_get_socket(fd); + if (sock == NULL) + goto out; + +diff --git a/src/api/sockets.c b/src/api/sockets.c +index c52f286..3c0c982 100644 +--- a/src/api/sockets.c ++++ b/src/api/sockets.c +@@ -523,7 +523,7 @@ tryget_socket(int fd) + * @param fd externally used socket index + * @return struct lwip_sock for the socket or NULL if not found + */ +-struct lwip_sock * ++static struct lwip_sock * + get_socket(int fd) + { + struct lwip_sock *sock = tryget_socket(fd); +@@ -538,15 +538,8 @@ get_socket(int fd) + } + + #if GAZELLE_ENABLE +-/** +- * Map a externally used socket index to the internal socket representation. +- * +- * @param s externally used socket index +- * @return struct lwip_sock for the socket or NULL if not found without +- * checking. +- */ + struct lwip_sock * +-get_socket_by_fd(int fd) ++lwip_get_socket(int fd) + { + return tryget_socket_unconn_nouse(fd); + } +@@ -4115,7 +4108,7 @@ lwip_ioctl(int s, long cmd, ...) + if (!sock) { + return posix_api->ioctl_fn(s, cmd, argp); + } +- if (CONN_TYPE_HAS_HOST(sock->conn)) { ++ if (POSIX_HAS_TYPE(sock, POSIX_KERNEL)) { + if ((ret = posix_api->ioctl_fn(s, cmd, argp)) == -1) + return ret; + } +diff --git a/src/core/tcp.c b/src/core/tcp.c +index 5c7d317..2f29f1f 100644 +--- a/src/core/tcp.c ++++ b/src/core/tcp.c +@@ -258,7 +258,7 @@ tcp_free(struct tcp_pcb *pcb) + rte_ring_free(pcb->client_rx_ring); + rte_ring_free(pcb->client_tx_ring); + netconn = (struct netconn *)pcb->callback_arg; +- sock = get_socket(netconn->callback_arg.socket); ++ sock = lwip_get_socket(netconn->callback_arg.socket); + rte_memzone_free(sock->same_node_rx_ring->mz); + rte_memzone_free(sock->same_node_rx_ring_mz); + rte_memzone_free(sock->same_node_tx_ring->mz); +diff --git a/src/include/lwip/api.h b/src/include/lwip/api.h +index 319ee09..0322a04 100644 +--- a/src/include/lwip/api.h ++++ b/src/include/lwip/api.h +@@ -143,43 +143,8 @@ enum netconn_type { + /** Raw connection IPv6 (dual-stack by default, unless you call @ref netconn_set_ipv6only) */ + , NETCONN_RAW_IPV6 = NETCONN_RAW | NETCONN_TYPE_IPV6 /* 0x48 */ + #endif /* LWIP_IPV6 */ +- +-#if GAZELLE_ENABLE +- /*here must bigger than 0xff, because (type & 0xff) is for lwip inner use*/ +- , NETCONN_LIBOS = 0x100 +- , NETCONN_HOST = 0x200 +- , NETCONN_INPRG = 0x400 +- , NETCONN_STACK = NETCONN_LIBOS | NETCONN_HOST | NETCONN_INPRG +-#endif /* GAZELLE_ENABLE */ + }; + +-#ifdef GAZELLE_ENABLE +-#define SET_CONN_TYPE_LIBOS_OR_HOST(conn) do { \ +- conn->type &= ~(NETCONN_STACK); \ +- conn->type |= (NETCONN_LIBOS | NETCONN_HOST); } while (0) +-#define SET_CONN_TYPE_LIBOS(conn) do { \ +- conn->type &= ~(NETCONN_STACK); \ +- conn->type |= NETCONN_LIBOS; } while (0) +-#define SET_CONN_TYPE_HOST(conn) do { \ +- conn->type &= ~(NETCONN_STACK); \ +- conn->type |= NETCONN_HOST; } while (0) +-#define ADD_CONN_TYPE_INPRG(conn) do { \ +- conn->type |= NETCONN_INPRG; } while(0) +-#define CONN_TYPE_HAS_LIBOS_AND_HOST(conn) ((conn->type & (NETCONN_LIBOS | NETCONN_HOST)) == (NETCONN_LIBOS | NETCONN_HOST)) +-#define CONN_TYPE_HAS_LIBOS(conn) (conn->type & NETCONN_LIBOS) +-#define CONN_TYPE_HAS_HOST(conn) (conn->type & NETCONN_HOST) +-#define CONN_TYPE_HAS_INPRG(conn) (!!(conn->type & NETCONN_INPRG)) +-#define CONN_TYPE_IS_LIBOS(conn) (!!(NETCONN_LIBOS == (conn->type & NETCONN_STACK))) +-#define CONN_TYPE_IS_HOST(conn) (!!(NETCONN_HOST == (conn->type & NETCONN_STACK))) +-#else +-#define SET_CONN_TYPE_LIBOS_OR_HOST(conn) do {} while (0) +-#define SET_CONN_TYPE_LIBOS(conn) do {} while (0) +-#define SET_CONN_TYPE_HOST(conn) do {} while (0) +-#define CONN_TYPE_HAS_LIBOS_AND_HOST(conn) (0) +-#define CONN_TYPE_HAS_LIBOS(conn) (0) +-#define CONN_TYPE_HAS_HOST(conn) (0) +-#endif /* GAZELLE_ENABLE */ +- + /** Current state of the netconn. Non-TCP netconns are always + * in state NETCONN_NONE! */ + enum netconn_state { +diff --git a/src/include/lwipgz_sock.h b/src/include/lwipgz_sock.h +index f5581cb..2fa9d7a 100644 +--- a/src/include/lwipgz_sock.h ++++ b/src/include/lwipgz_sock.h +@@ -44,8 +44,25 @@ + + #define set_errno(err) do { errno = (err); } while(0) + +-struct lwip_sock *get_socket(int fd); +-struct lwip_sock *get_socket_by_fd(int fd); ++enum posix_type { ++ POSIX_KERNEL = 0x100, ++ POSIX_LWIP = 0x200, ++ POSIX_EPOLL = 0x400, ++ POSIX_ALL = POSIX_KERNEL | POSIX_LWIP | POSIX_EPOLL, ++ POSIX_LWIP_OR_KERNEL = POSIX_LWIP | POSIX_KERNEL, ++}; ++ ++#define POSIX_SET_TYPE(sock, posix_type) do { \ ++ (sock)->type &= ~(POSIX_ALL); \ ++ (sock)->type |= (posix_type); } while (0) ++ ++#define POSIX_HAS_TYPE(sock, posix_type) \ ++ ((sock)->type & (posix_type)) ++ ++#define POSIX_IS_TYPE(sock, posix_type) \ ++ (((sock)->type & POSIX_ALL) == (posix_type)) ++ ++struct lwip_sock *lwip_get_socket(int fd); + int gazelle_alloc_socket(struct netconn *newconn, int accepted, int flags); + void gazelle_free_socket(struct lwip_sock *sock, int fd); + void lwip_sock_init(void); +@@ -156,6 +173,7 @@ struct lwip_sock { + + char pad3 __rte_cache_aligned; + /* nerver change */ ++ enum posix_type type; + struct lwip_sock *listen_next; /* listenfd list */ + struct protocol_stack *stack; + struct wakeup_poll *wakeup; +-- +2.33.0 + diff --git a/lwip.spec b/lwip.spec index a5fe670..4c2c088 100644 --- a/lwip.spec +++ b/lwip.spec @@ -4,7 +4,7 @@ Summary: lwip is a small independent implementation of the TCP/IP protocol suite Name: lwip Version: 2.2.0 -Release: 40 +Release: 41 License: BSD URL: http://savannah.nongnu.org/projects/lwip/ Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip @@ -160,6 +160,7 @@ Patch9144: 0145-cleancode-improving-makefile-readability.patch Patch9145: 0146-cleancode-remove-perf.patch Patch9146: 0147-cleancode-rename-gazelle-files-in-lwip.patch Patch9147: 0148-cleancode-refactor-lwipsock.h.patch +Patch9148: 0149-cleancode-refactor-posix-type-and-get_socket.patch BuildRequires: gcc-c++ dos2unix dpdk-devel @@ -189,6 +190,9 @@ cd %{_builddir}/%{name}-%{version}/src %{_libdir}/liblwip.a %changelog +* Wed Jul 17 2024 LemmyHuang - 2.2.0-41 +- cleancode: refactor posix type and get_socket + * Tue Jul 16 2024 LemmyHuang - 2.2.0-40 - cleancode: refactor lwipsock.h