]> git.meshlink.io Git - meshlink/commitdiff
Debugging for getifaddrs(). debug/getifaddrs
authorGuus Sliepen <guus@meshlink.io>
Thu, 28 Jan 2021 21:26:00 +0000 (22:26 +0100)
committerGuus Sliepen <guus@meshlink.io>
Thu, 28 Jan 2021 21:26:00 +0000 (22:26 +0100)
This logs which interfaces and addresses are returned by getifaddrs() that
are usable for MeshLink. It also adds the /scan command to the chat example
to force rescanning the network interfaces.

examples/chat.c
src/discovery.c

index 88fe127a1df25368512078c89868a0dddc2336c6..2dc13be1fdb54ce4f5a90a8cfd76b3eb33ccbbc7 100644 (file)
@@ -86,6 +86,8 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) {
                        fprintf(stderr, "Could not restart MeshLink: %s\n", meshlink_strerror(meshlink_errno));
                        exit(1);
                }
+       } else if(!strcasecmp(buf, "scan")) {
+               meshlink_hint_network_change(mesh);
        } else if(!strcasecmp(buf, "kick")) {
                if(!arg) {
                        fprintf(stderr, "/kick requires an argument!\n");
index 18919745c2e01d783bf452e5f638c56cf6779e0a..8fc6895e671c8ec32a39d825e0bd25e6de8457c5 100644 (file)
@@ -434,6 +434,7 @@ static void addr_del(meshlink_handle_t *mesh, const discovery_address_t *addr) {
 
 void scan_ifaddrs(meshlink_handle_t *mesh) {
 #ifdef HAVE_GETIFADDRS
+       logger(mesh, MESHLINK_WARNING, "Calling getifaddrs()");
        struct ifaddrs *ifa = NULL;
 
        if(getifaddrs(&ifa) == -1) {
@@ -525,6 +526,13 @@ void scan_ifaddrs(meshlink_handle_t *mesh) {
                        addr.address.sa.sa_family = AF_UNKNOWN;
                }
 
+               if(addr.address.sa.sa_family != AF_UNKNOWN) {
+                       char *host = NULL;
+                       sockaddr2str(sa, &host, NULL);
+                       logger(mesh, MESHLINK_WARNING, "iface %d (%s) address %s", index, ifap->ifa_name, host);
+                       free(host);
+               }
+
                if(addr.address.sa.sa_family != AF_UNKNOWN) {
                        addr_add(mesh, &addr);
                }
@@ -532,7 +540,7 @@ void scan_ifaddrs(meshlink_handle_t *mesh) {
 
        freeifaddrs(ifa);
 #else
-       (void)mesh;
+       logger(mesh, MESHLINK_ERROR, "getifaddrs() not supported");
 #endif
 }