@@ -138,15 +138,16 @@ static void qemu_tcp_writer(void* ignore)
138138 }
139139}
140140
141- static bool is_our_netif (const char * prefix , esp_netif_t * netif )
141+ static bool is_our_netif (esp_netif_t * netif , void * ctx )
142142{
143- return strncmp (prefix , esp_netif_get_desc (netif ), strlen (prefix ) - 1 ) == 0 ;
143+ const char * prefix = (const char * )ctx ;
144+ return strncmp (prefix , esp_netif_get_desc (netif ), strlen (prefix )) == 0 ;
144145}
145146
146147static void on_got_ip (void * arg , esp_event_base_t event_base , int32_t event_id , void * event_data )
147148{
148149 ip_event_got_ip_t * event = (ip_event_got_ip_t * )event_data ;
149- if (!is_our_netif (TAG , event -> esp_netif )) {
150+ if (!is_our_netif (event -> esp_netif , ( void * ) TAG )) {
150151 JADE_LOGE ("Got IPv4 from another interface \"%s\": ignored" , esp_netif_get_desc (event -> esp_netif ));
151152 return ;
152153 }
@@ -156,22 +157,18 @@ static void on_got_ip(void* arg, esp_event_base_t event_base, int32_t event_id,
156157
157158static esp_netif_t * get_example_netif_from_desc (const char * desc )
158159{
159- esp_netif_t * netif = NULL ;
160160 char * expected_desc ;
161161 asprintf (& expected_desc , "%s: %s" , TAG , desc );
162- while ((netif = esp_netif_next (netif )) != NULL ) {
163- if (strcmp (esp_netif_get_desc (netif ), expected_desc ) == 0 ) {
164- free (expected_desc );
165- return netif ;
166- }
167- }
162+ esp_netif_t * const netif = esp_netif_find_if (is_our_netif , expected_desc );
168163 free (expected_desc );
169164 return netif ;
170165}
171166
172167static void eth_stop (void )
173168{
174- esp_netif_t * eth_netif = get_example_netif_from_desc ("eth" );
169+ esp_netif_inherent_config_t esp_netif_config = ESP_NETIF_INHERENT_DEFAULT_ETH ();
170+ esp_netif_t * eth_netif = get_example_netif_from_desc (esp_netif_config .if_desc );
171+
175172 ESP_ERROR_CHECK (esp_event_handler_instance_unregister (IP_EVENT , IP_EVENT_ETH_GOT_IP , ctx_got_ip ));
176173 ESP_ERROR_CHECK (esp_eth_stop (s_eth_handle ));
177174 ESP_ERROR_CHECK (esp_eth_del_netif_glue (s_eth_glue ));
@@ -193,7 +190,6 @@ static void eth_start(void)
193190 esp_netif_config_t netif_config = { .base = & esp_netif_config , .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH };
194191 esp_netif_t * netif = esp_netif_new (& netif_config );
195192 assert (netif );
196- free (desc );
197193
198194 ESP_ERROR_CHECK (esp_event_handler_instance_register (IP_EVENT , IP_EVENT_ETH_GOT_IP , on_got_ip , NULL , & ctx_got_ip ));
199195
@@ -213,16 +209,14 @@ static void eth_start(void)
213209 esp_eth_start (s_eth_handle );
214210 ESP_ERROR_CHECK (esp_register_shutdown_handler (& eth_stop ));
215211 JADE_LOGI ("Waiting for IP(s)" );
216- esp_netif_t * netif_ip = NULL ;
217212 esp_netif_ip_info_t ip ;
218- for (int i = 0 ; i < esp_netif_get_nr_of_ifs (); ++ i ) {
219- netif_ip = esp_netif_next (netif_ip );
220- if (is_our_netif (TAG , netif_ip )) {
221- JADE_LOGI ("Connected to %s" , esp_netif_get_desc (netif_ip ));
222- ESP_ERROR_CHECK (esp_netif_get_ip_info (netif_ip , & ip ));
223- JADE_LOGI ("- IPv4 address: " IPSTR , IP2STR (& ip .ip ));
224- }
213+ esp_netif_t * netif_ip = esp_netif_find_if (is_our_netif , desc );
214+ if (netif_ip ) {
215+ JADE_LOGI ("Connected to %s" , esp_netif_get_desc (netif_ip ));
216+ ESP_ERROR_CHECK (esp_netif_get_ip_info (netif_ip , & ip ));
217+ JADE_LOGI ("- IPv4 address: " IPSTR , IP2STR (& ip .ip ));
225218 }
219+ free (desc );
226220}
227221
228222bool qemu_tcp_init (TaskHandle_t * qemu_tcp_handle )
0 commit comments