加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0108-replace-with-gz_addr_t.patch 11.23 KB
一键复制 编辑 原始数据 按行查看 历史
yinbin6 提交于 2024-01-06 20:12 . sync replace with gz_addr_t
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化