Don't wait for physical connection on WiFi interfaces

This commit is contained in:
Joseph C. Lehner 2021-06-06 13:32:05 +02:00
parent 440362fa71
commit b70de725ca
3 changed files with 21 additions and 0 deletions

View file

@ -546,6 +546,21 @@ inline uint8_t *ethsock_get_hwaddr(struct ethsock *sock)
return sock->hwaddr;
}
bool ethsock_is_wifi(struct ethsock *sock)
{
#if defined(NMRPFLASH_WINDOWS)
MIB_IF_ROW2 row;
if (intf_get_if_row(sock->index, &row)) {
return row.Type == IF_TYPE_IEEE80211;
}
return false;
#else
return false;
#endif
}
bool ethsock_is_unplugged(struct ethsock *sock)
{
#if defined(NMRPFLASH_LINUX)

5
nmrp.c
View file

@ -448,6 +448,11 @@ int nmrp_do(struct nmrpd_args *args)
sigh_orig = signal(SIGINT, sigh);
if (ethsock_is_unplugged(sock)) {
if (ethsock_is_wifi(sock)) {
fprintf(stderr, "Error: WiFi not connected.\n");
goto out;
}
printf("Waiting for Ethernet connection.\n");
bool unplugged = true;

View file

@ -126,6 +126,7 @@ struct ethsock_ip_undo;
struct ethsock *ethsock_create(const char *intf, uint16_t protocol);
bool ethsock_is_unplugged(struct ethsock *sock);
bool ethsock_is_wifi(struct ethsock *sock);
int ethsock_close(struct ethsock *sock);
int ethsock_send(struct ethsock *sock, void *buf, size_t len);
ssize_t ethsock_recv(struct ethsock *sock, void *buf, size_t len);