Quellcode durchsuchen

update:加快硬件协议的网卡本地端口的分配

alienwalker vor 3 Jahren
Ursprung
Commit
a147ad7ccc
1 geänderte Dateien mit 23 neuen und 1 gelöschten Zeilen
  1. 23 1
      components/network/adapter/luat_network_adapter.c

+ 23 - 1
components/network/adapter/luat_network_adapter.c

@@ -1426,6 +1426,8 @@ int network_set_local_port(network_ctrl_t *ctrl, uint16_t local_port)
 	}
 	else
 	{
+		ctrl->local_port = 0;
+#if 0
 		if (ctrl->adapter_index < NW_ADAPTER_INDEX_LWIP_NETIF_QTY)
 		{
 			ctrl->local_port = 0;
@@ -1439,6 +1441,7 @@ int network_set_local_port(network_ctrl_t *ctrl, uint16_t local_port)
 		}
 		ctrl->local_port = adapter->port;
 		OS_UNLOCK;
+#endif
 		return 0;
 	}
 }
@@ -1460,7 +1463,26 @@ int network_socket_connect(network_ctrl_t *ctrl, luat_ip_addr_t *remote_ip)
 	network_adapter_t *adapter = &prv_adapter_table[ctrl->adapter_index];
 	ctrl->is_server_mode = 0;
 	ctrl->online_ip = remote_ip;
-	return adapter->opt->socket_connect(ctrl->socket_id, ctrl->tag, ctrl->local_port, remote_ip, ctrl->remote_port, adapter->user_data);
+	uint16_t local_port = ctrl->local_port;
+	if (!local_port)
+	{
+		if (ctrl->adapter_index >= NW_ADAPTER_INDEX_HW_PS_DEVICE)
+		{
+			adapter->port += 100;
+			local_port = adapter->port;
+			if (adapter->port < 60000)
+			{
+				adapter->port = 60000;
+			}
+			if (local_port < 60000)
+			{
+				local_port = 60000;
+			}
+			local_port += ctrl->socket_id;
+			DBG("%d,%d,%d", ctrl->socket_id, local_port, adapter->port);
+		}
+	}
+	return adapter->opt->socket_connect(ctrl->socket_id, ctrl->tag, local_port, remote_ip, ctrl->remote_port, adapter->user_data);
 }
 
 int network_socket_listen(network_ctrl_t *ctrl)