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 <huangliming5@huawei.com>
(cherry picked from commit 722d58e4b17d5bc7f4bd4b9cfa8b59ee94eb92ff)
This commit is contained in:
Lemmy Huang 2024-07-17 16:56:43 +08:00 committed by openeuler-sync-bot
parent cc2e32e9ba
commit 7c3d307dbd
2 changed files with 190 additions and 1 deletions

View File

@ -0,0 +1,185 @@
From bc2b6b2163b3bc2ef6754d13f362c23f720994dd Mon Sep 17 00:00:00 2001
From: Lemmy Huang <huangliming5@huawei.com>
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 <huangliming5@huawei.com>
---
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

View File

@ -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 <huangliming5@huawei.com> - 2.2.0-41
- cleancode: refactor posix type and get_socket
* Tue Jul 16 2024 LemmyHuang <huangliming5@huawei.com> - 2.2.0-40
- cleancode: refactor lwipsock.h