From fa28c2bf790466ab3a4cfc8fa39ed14764797e87 Mon Sep 17 00:00:00 2001
From: zhengjiebing <zhengjiebing_yewu@cmss.chinamobile.com>
Date: Tue, 2 Jan 2024 17:10:44 +0800
Subject: [PATCH] replace with gz_addr_t

---
 src/common/gazelle_opt.h               |  5 +----
 src/lstack/core/lstack_control_plane.c |  6 +++---
 src/lstack/core/lstack_lwip.c          |  3 +--
 src/lstack/netif/lstack_vdev.c         | 16 +++++++++-------
 src/ltran/ltran_forward.c              | 10 +++++-----
 src/ltran/ltran_stat.c                 |  4 ++--
 src/ltran/ltran_tcp_conn.c             |  4 ++--
 src/ltran/ltran_tcp_sock.c             |  4 ++--
 src/ltran/ltran_timer.c                |  4 ++--
 9 files changed, 27 insertions(+), 29 deletions(-)

diff --git a/src/common/gazelle_opt.h b/src/common/gazelle_opt.h
index bb540f4..36915c6 100644
--- a/src/common/gazelle_opt.h
+++ b/src/common/gazelle_opt.h
@@ -27,6 +27,7 @@
 #define KERNEL_EPOLL_MAX            512
 
 #define ETHER_ADDR_LEN              6
+#define IPV6_ADDR_LEN               16
 
 #define DEFAULT_RING_SIZE           (512)
 #define DEFAULT_RING_MASK           (511)
@@ -52,10 +53,6 @@
 #define STACK_THREAD_DEFAULT        4
 #define STACK_NIC_READ_DEFAULT      128
 
-/* same as define in lwip/ip_addr.h */
-#define GZ_ADDR_TYPE_V4             0
-#define GZ_ADDR_TYPE_V6             6
-
 #define MTU_DEFAULT_DATA_LEN        1460
 #define VLAN_HEAD_LEN               4
 #define IPV6_EXTRA_HEAD_LEN         20
diff --git a/src/lstack/core/lstack_control_plane.c b/src/lstack/core/lstack_control_plane.c
index 668ff80..2d629c8 100644
--- a/src/lstack/core/lstack_control_plane.c
+++ b/src/lstack/core/lstack_control_plane.c
@@ -361,12 +361,12 @@ static int32_t reg_conn(enum tcp_list_state table_state, enum reg_ring_type reg_
             continue;
         }
         qtuple.protocol = 0;
-        qtuple.src_ip = conn->conn_list[i].lip.u_addr.ip4.addr;
+        qtuple.src_ip = conn->conn_list[i].lip;
         qtuple.src_port = lwip_htons(conn->conn_list[i].l_port);
-        qtuple.dst_ip = conn->conn_list[i].rip.u_addr.ip4.addr;
+        qtuple.dst_ip = conn->conn_list[i].rip;
         qtuple.dst_port = lwip_htons(conn->conn_list[i].r_port);
 
-        if ((table_state == LISTEN_LIST) && (!match_host_addr(qtuple.src_ip))) {
+        if ((table_state == LISTEN_LIST) && (!match_host_addr(qtuple.src_ip.u_addr.ip4.addr))) {
             continue;
         }
 
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
index 4953f3d..87ec1f5 100644
--- a/src/lstack/core/lstack_lwip.c
+++ b/src/lstack/core/lstack_lwip.c
@@ -446,8 +446,7 @@ static inline ssize_t app_buff_write(struct lwip_sock *sock, void *buf, size_t l
         } else if (addr->sa_family == AF_INET6) {
             struct sockaddr_in6 *saddr = (struct sockaddr_in6 *)addr;
             for (int i = 0; i < write_num; i++) {
-                memcpy_s(pbufs[i]->addr.u_addr.ip6.addr, sizeof(pbufs[i]->addr.u_addr.ip6.addr),
-                    saddr->sin6_addr.s6_addr, sizeof(saddr->sin6_addr.s6_addr));
+                memcpy_s(pbufs[i]->addr.u_addr.ip6.addr, IPV6_ADDR_LEN, saddr->sin6_addr.s6_addr, IPV6_ADDR_LEN);
                 pbufs[i]->port = lwip_ntohs((saddr)->sin6_port);
                 IP_SET_TYPE(&pbufs[i]->addr, IPADDR_TYPE_V6);
             }
diff --git a/src/lstack/netif/lstack_vdev.c b/src/lstack/netif/lstack_vdev.c
index ccf664a..9a79dc3 100644
--- a/src/lstack/netif/lstack_vdev.c
+++ b/src/lstack/netif/lstack_vdev.c
@@ -185,10 +185,12 @@ int32_t vdev_reg_xmit(enum reg_ring_type type, struct gazelle_quintuple *qtuple)
                 delete_user_process_port(qtuple->src_port, PORT_CONNECT);
                 uint16_t queue_id = get_protocol_stack()->queue_id;
                 if (queue_id != 0) {
-                    transfer_delete_rule_info_to_process0(qtuple->dst_ip, qtuple->src_port, qtuple->dst_port);
+                    transfer_delete_rule_info_to_process0(qtuple->dst_ip.u_addr.ip4.addr,
+                        qtuple->src_port, qtuple->dst_port);
                 }
             } else {
-                transfer_delete_rule_info_to_process0(qtuple->dst_ip, qtuple->src_port, qtuple->dst_port);
+                transfer_delete_rule_info_to_process0(qtuple->dst_ip.u_addr.ip4.addr,
+                    qtuple->src_port, qtuple->dst_port);
             }
         }
 
@@ -197,12 +199,12 @@ int32_t vdev_reg_xmit(enum reg_ring_type type, struct gazelle_quintuple *qtuple)
             if (get_global_cfg_params()->is_primary) {
                 add_user_process_port(qtuple->src_port, get_global_cfg_params()->process_idx, PORT_CONNECT);
                 if (queue_id != 0) {
-                    transfer_create_rule_info_to_process0(queue_id, qtuple->src_ip, qtuple->dst_ip,
-                        qtuple->src_port, qtuple->dst_port);
+                    transfer_create_rule_info_to_process0(queue_id, qtuple->src_ip.u_addr.ip4.addr,
+                        qtuple->dst_ip.u_addr.ip4.addr, qtuple->src_port, qtuple->dst_port);
                 }
             } else {
-                transfer_create_rule_info_to_process0(queue_id, qtuple->src_ip, qtuple->dst_ip,
-                    qtuple->src_port, qtuple->dst_port);
+                transfer_create_rule_info_to_process0(queue_id, qtuple->src_ip.u_addr.ip4.addr,
+                    qtuple->dst_ip.u_addr.ip4.addr, qtuple->src_port, qtuple->dst_port);
             }
         }
 
@@ -228,7 +230,7 @@ int32_t vdev_reg_xmit(enum reg_ring_type type, struct gazelle_quintuple *qtuple)
     struct protocol_stack *stack = get_protocol_stack();
 
     if (type == REG_RING_TCP_LISTEN || type == REG_RING_TCP_LISTEN_CLOSE) {
-        if (!match_host_addr(qtuple->src_ip)) {
+        if (!match_host_addr(qtuple->src_ip.u_addr.ip4.addr)) {
             LSTACK_LOG(INFO, LSTACK, "lstack ip not match in conf.\n");
             return 0;
         }
diff --git a/src/ltran/ltran_forward.c b/src/ltran/ltran_forward.c
index a6f2d71..ee379b5 100644
--- a/src/ltran/ltran_forward.c
+++ b/src/ltran/ltran_forward.c
@@ -246,8 +246,8 @@ static __rte_always_inline int32_t tcp_handle(struct rte_mbuf *m, const struct r
     struct gazelle_tcp_sock *tcp_sock = NULL;
     struct gazelle_quintuple quintuple;
 
-    quintuple.dst_ip = ipv4_hdr->dst_addr;
-    quintuple.src_ip = ipv4_hdr->src_addr;
+    quintuple.dst_ip.u_addr.ip4.addr = ipv4_hdr->dst_addr;
+    quintuple.src_ip.u_addr.ip4.addr = ipv4_hdr->src_addr;
     quintuple.dst_port = tcp_hdr->dst_port;
     quintuple.src_port = tcp_hdr->src_port;
     quintuple.protocol = 0;
@@ -260,7 +260,7 @@ static __rte_always_inline int32_t tcp_handle(struct rte_mbuf *m, const struct r
     }
 
     tcp_sock = gazelle_sock_get_by_min_conn(gazelle_get_tcp_sock_htable(),
-                                                     quintuple.dst_ip, quintuple.dst_port);
+                                                    quintuple.dst_ip.u_addr.ip4.addr, quintuple.dst_port);
     if (unlikely(tcp_sock == NULL)) {
         return GAZELLE_ERR;
     }
@@ -494,7 +494,7 @@ static void tcp_hash_table_modify(struct gazelle_stack *stack, const struct reg_
         case REG_RING_TCP_LISTEN:
             /* add sock htable */
             tcp_sock = gazelle_sock_add_by_ipporttid(gazelle_get_tcp_sock_htable(),
-                transfer_qtuple.dst_ip, transfer_qtuple.dst_port, msg->tid);
+                transfer_qtuple.dst_ip.u_addr.ip4.addr, transfer_qtuple.dst_port, msg->tid);
             if (tcp_sock == NULL) {
                 LTRAN_ERR("add tcp sock htable failed\n");
                 break;
@@ -506,7 +506,7 @@ static void tcp_hash_table_modify(struct gazelle_stack *stack, const struct reg_
         case REG_RING_TCP_LISTEN_CLOSE:
             /* del sock htable */
             gazelle_sock_del_by_ipporttid(gazelle_get_tcp_sock_htable(),
-                transfer_qtuple.dst_ip, transfer_qtuple.dst_port, msg->tid);
+                transfer_qtuple.dst_ip.u_addr.ip4.addr, transfer_qtuple.dst_port, msg->tid);
             break;
         case REG_RING_TCP_CONNECT:
             /* add conn htable */
diff --git a/src/ltran/ltran_stat.c b/src/ltran/ltran_stat.c
index 2a0c03a..dfd5fc9 100644
--- a/src/ltran/ltran_stat.c
+++ b/src/ltran/ltran_stat.c
@@ -267,8 +267,8 @@ void handle_resp_ltran_conn(int32_t fd)
             if (index < GAZELLE_LSTACK_MAX_CONN) {
                 forward_table.conn_list[index].protocol = conn->quintuple.protocol;
                 forward_table.conn_list[index].tid = conn->tid;
-                forward_table.conn_list[index].dst_ip = conn->quintuple.dst_ip;
-                forward_table.conn_list[index].src_ip = conn->quintuple.src_ip;
+                forward_table.conn_list[index].dst_ip = conn->quintuple.dst_ip.u_addr.ip4.addr;
+                forward_table.conn_list[index].src_ip = conn->quintuple.src_ip.u_addr.ip4.addr;
                 forward_table.conn_list[index].dst_port = ntohs(conn->quintuple.dst_port);
                 forward_table.conn_list[index].src_port = ntohs(conn->quintuple.src_port);
             }
diff --git a/src/ltran/ltran_tcp_conn.c b/src/ltran/ltran_tcp_conn.c
index e0ad562..026d22a 100644
--- a/src/ltran/ltran_tcp_conn.c
+++ b/src/ltran/ltran_tcp_conn.c
@@ -78,8 +78,8 @@ struct gazelle_tcp_conn_hbucket *gazelle_conn_hbucket_get(struct gazelle_tcp_con
     const struct gazelle_quintuple *quintuple)
 {
     uint32_t index;
-    index = tuple_hash_fn(quintuple->src_ip, quintuple->src_port, quintuple->dst_ip, quintuple->dst_port) %
-                           GAZELLE_MAX_CONN_HTABLE_SIZE;
+    index = tuple_hash_fn(quintuple->src_ip.u_addr.ip4.addr, quintuple->src_port, quintuple->dst_ip.u_addr.ip4.addr,
+                            quintuple->dst_port) % GAZELLE_MAX_CONN_HTABLE_SIZE;
     return &conn_htable->array[index];
 }
 
diff --git a/src/ltran/ltran_tcp_sock.c b/src/ltran/ltran_tcp_sock.c
index d6a0d17..940ded8 100644
--- a/src/ltran/ltran_tcp_sock.c
+++ b/src/ltran/ltran_tcp_sock.c
@@ -104,8 +104,8 @@ static void recover_sock_info_from_conn(struct gazelle_tcp_sock *tcp_sock)
         head = &conn_htable->array[i].chain;
 
         hlist_for_each_entry(conn, node, head, conn_node) {
-            if ((conn->quintuple.dst_ip != tcp_sock->ip) || (conn->quintuple.dst_port != tcp_sock->port) ||
-                (conn->tid != tcp_sock->tid)) {
+            if ((conn->quintuple.dst_ip.u_addr.ip4.addr != tcp_sock->ip) ||
+                (conn->quintuple.dst_port != tcp_sock->port) || (conn->tid != tcp_sock->tid)) {
                 continue;
             }
             count++;
diff --git a/src/ltran/ltran_timer.c b/src/ltran/ltran_timer.c
index 85ea324..96c622e 100644
--- a/src/ltran/ltran_timer.c
+++ b/src/ltran/ltran_timer.c
@@ -103,8 +103,8 @@ void gazelle_detect_conn_logout(struct gazelle_tcp_conn_htable *conn_htable)
                 conn_htable->array[i].chain_size--;
                 LTRAN_DEBUG("delete the tcp conn htable: tid %u quintuple[%u %u %u %u %u]\n",
                     conn->tid, conn->quintuple.protocol,
-                    conn->quintuple.src_ip, (uint32_t)ntohs(conn->quintuple.src_port),
-                    conn->quintuple.dst_ip, (uint32_t)ntohs(conn->quintuple.dst_port));
+                    conn->quintuple.src_ip.u_addr.ip4.addr, (uint32_t)ntohs(conn->quintuple.src_port),
+                    conn->quintuple.dst_ip.u_addr.ip4.addr, (uint32_t)ntohs(conn->quintuple.dst_port));
                 rte_free(conn);
             }
         }
-- 
2.33.0

