|
|
@@ -124,7 +124,11 @@ static void socket_recv(int recv_socket, struct sockaddr_storage listen_addr, ui
|
|
|
uint8_t *buffer;
|
|
|
int want_recv = 0;
|
|
|
int actual_recv = 0;
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
socklen_t socklen = (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in);
|
|
|
+#else
|
|
|
+ socklen_t socklen = sizeof(struct sockaddr_in);
|
|
|
+#endif
|
|
|
const char *error_log = (type == IPERF_TRANS_TYPE_TCP) ? "tcp server recv" : "udp server recv";
|
|
|
|
|
|
buffer = s_iperf_ctrl.buffer;
|
|
|
@@ -157,7 +161,11 @@ static void socket_send(int send_socket, struct sockaddr_storage dest_addr, uint
|
|
|
int64_t prev_time = 0;
|
|
|
int64_t send_time = 0;
|
|
|
int err = 0;
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
const socklen_t socklen = (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in);
|
|
|
+#else
|
|
|
+ const socklen_t socklen = sizeof(struct sockaddr_in);
|
|
|
+#endif
|
|
|
const char *error_log = (type == IPERF_TRANS_TYPE_TCP) ? "tcp client send" : "udp client send";
|
|
|
|
|
|
buffer = s_iperf_ctrl.buffer;
|
|
|
@@ -225,11 +233,15 @@ static esp_err_t IRAM_ATTR iperf_run_tcp_server(void)
|
|
|
struct timeval timeout = { 0 };
|
|
|
socklen_t addr_len = sizeof(struct sockaddr);
|
|
|
struct sockaddr_storage listen_addr = { 0 };
|
|
|
- struct sockaddr_in6 listen_addr6 = { 0 };
|
|
|
- struct sockaddr_in listen_addr4 = { 0 };
|
|
|
|
|
|
+ struct sockaddr_in listen_addr4 = { 0 };
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
+ struct sockaddr_in6 listen_addr6 = { 0 };
|
|
|
ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6 || s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
-
|
|
|
+#else
|
|
|
+ ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Invalid AF types");
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) {
|
|
|
// The TCP server listen at the address "::", which means all addresses can be listened to.
|
|
|
inet6_aton("::", &listen_addr6.sin6_addr);
|
|
|
@@ -250,7 +262,9 @@ static esp_err_t IRAM_ATTR iperf_run_tcp_server(void)
|
|
|
ESP_GOTO_ON_FALSE((err == 0), ESP_FAIL, exit, TAG, "Error occurred during listen: errno %d", errno);
|
|
|
|
|
|
memcpy(&listen_addr, &listen_addr6, sizeof(listen_addr6));
|
|
|
- } else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
+ } else
|
|
|
+#endif
|
|
|
+ if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
listen_addr4.sin_family = AF_INET;
|
|
|
listen_addr4.sin_port = htons(s_iperf_ctrl.cfg.sport);
|
|
|
listen_addr4.sin_addr.s_addr = s_iperf_ctrl.cfg.source_ip4;
|
|
|
@@ -313,12 +327,15 @@ static esp_err_t iperf_run_tcp_client(void)
|
|
|
int err = 0;
|
|
|
esp_err_t ret = ESP_OK;
|
|
|
struct sockaddr_storage dest_addr = { 0 };
|
|
|
- struct sockaddr_in6 dest_addr6 = { 0 };
|
|
|
struct sockaddr_in dest_addr4 = { 0 };
|
|
|
struct timeval timeout = { 0 };
|
|
|
-
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
+ struct sockaddr_in6 dest_addr6 = { 0 };
|
|
|
ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6 || s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
-
|
|
|
+#else
|
|
|
+ ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Invalid AF types");
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) {
|
|
|
client_socket = socket(AF_INET6, SOCK_STREAM, IPPROTO_IPV6);
|
|
|
ESP_GOTO_ON_FALSE((client_socket >= 0), ESP_FAIL, exit, TAG, "Unable to create socket: errno %d", errno);
|
|
|
@@ -331,7 +348,9 @@ static esp_err_t iperf_run_tcp_client(void)
|
|
|
ESP_GOTO_ON_FALSE((err == 0), ESP_FAIL, exit, TAG, "Socket unable to connect: errno %d", errno);
|
|
|
ESP_LOGI(TAG, "Successfully connected");
|
|
|
memcpy(&dest_addr, &dest_addr6, sizeof(dest_addr6));
|
|
|
- } else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
+ } else
|
|
|
+#endif
|
|
|
+ if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
|
ESP_GOTO_ON_FALSE((client_socket >= 0), ESP_FAIL, exit, TAG, "Unable to create socket: errno %d", errno);
|
|
|
|
|
|
@@ -378,11 +397,14 @@ static esp_err_t IRAM_ATTR iperf_run_udp_server(void)
|
|
|
esp_err_t ret = ESP_OK;
|
|
|
struct timeval timeout = { 0 };
|
|
|
struct sockaddr_storage listen_addr = { 0 };
|
|
|
- struct sockaddr_in6 listen_addr6 = { 0 };
|
|
|
struct sockaddr_in listen_addr4 = { 0 };
|
|
|
-
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
+ struct sockaddr_in6 listen_addr6 = { 0 };
|
|
|
ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6 || s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
-
|
|
|
+#else
|
|
|
+ ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) {
|
|
|
// The UDP server listen at the address "::", which means all addresses can be listened to.
|
|
|
inet6_aton("::", &listen_addr6.sin6_addr);
|
|
|
@@ -400,7 +422,9 @@ static esp_err_t IRAM_ATTR iperf_run_udp_server(void)
|
|
|
ESP_LOGI(TAG, "Socket bound, port %" PRIu16, listen_addr6.sin6_port);
|
|
|
|
|
|
memcpy(&listen_addr, &listen_addr6, sizeof(listen_addr6));
|
|
|
- } else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
+ } else
|
|
|
+#endif
|
|
|
+ if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
listen_addr4.sin_family = AF_INET;
|
|
|
listen_addr4.sin_port = htons(s_iperf_ctrl.cfg.sport);
|
|
|
listen_addr4.sin_addr.s_addr = s_iperf_ctrl.cfg.source_ip4;
|
|
|
@@ -442,11 +466,14 @@ static esp_err_t iperf_run_udp_client(void)
|
|
|
int opt = 1;
|
|
|
esp_err_t ret = ESP_OK;
|
|
|
struct sockaddr_storage dest_addr = { 0 };
|
|
|
- struct sockaddr_in6 dest_addr6 = { 0 };
|
|
|
struct sockaddr_in dest_addr4 = { 0 };
|
|
|
-
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
+ struct sockaddr_in6 dest_addr6 = { 0 };
|
|
|
ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6 || s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
-
|
|
|
+#else
|
|
|
+ ESP_GOTO_ON_FALSE((s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4), ESP_FAIL, exit, TAG, "Ivalid AF types");
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_LWIP_IPV6
|
|
|
if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV6) {
|
|
|
inet6_aton(s_iperf_ctrl.cfg.destination_ip6, &dest_addr6.sin6_addr);
|
|
|
dest_addr6.sin6_family = AF_INET6;
|
|
|
@@ -458,7 +485,9 @@ static esp_err_t iperf_run_udp_client(void)
|
|
|
|
|
|
setsockopt(client_socket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
|
|
|
memcpy(&dest_addr, &dest_addr6, sizeof(dest_addr6));
|
|
|
- } else if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
+ } else
|
|
|
+#endif
|
|
|
+ if (s_iperf_ctrl.cfg.type == IPERF_IP_TYPE_IPV4) {
|
|
|
dest_addr4.sin_family = AF_INET;
|
|
|
dest_addr4.sin_port = htons(s_iperf_ctrl.cfg.dport);
|
|
|
dest_addr4.sin_addr.s_addr = s_iperf_ctrl.cfg.destination_ip4;
|