]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
net: If if_learnaddrs fails unexpectedly, log address and interface
authorRoy Marples <roy@marples.name>
Fri, 14 Feb 2020 06:47:40 +0000 (06:47 +0000)
committerRoy Marples <roy@marples.name>
Fri, 14 Feb 2020 06:47:40 +0000 (06:47 +0000)
This will greatly aid debugging.

src/if.c

index 4455933732e8c7542c7d854d274057ced5eace3f..bc0241afdab5981ef7ba8c4d2961bba9f11c029e 100644 (file)
--- a/src/if.c
+++ b/src/if.c
@@ -283,8 +283,15 @@ if_learnaddrs(struct dhcpcd_ctx *ctx, struct if_head *ifs,
                        addrflags = if_addrflags(ifp, &addr->sin_addr,
                            ifa->ifa_name);
                        if (addrflags == -1) {
-                               if (errno != EEXIST && errno != EADDRNOTAVAIL)
-                                       logerr("%s: if_addrflags", __func__);
+                               if (errno != EEXIST && errno != EADDRNOTAVAIL) {
+                                       char dbuf[INET_ADDRSTRLEN];
+                                       const char *dbp;
+
+                                       dbp = inet_ntop(AF_INET, &addr->sin_addr,
+                                           dbuf, sizeof(dbuf));
+                                       logerr("%s: if_addrflags: %s%%%s",
+                                           __func__, dbp, ifp->name);
+                               }
                                continue;
                        }
 #endif
@@ -308,8 +315,15 @@ if_learnaddrs(struct dhcpcd_ctx *ctx, struct if_head *ifs,
                        addrflags = if_addrflags6(ifp, &sin6->sin6_addr,
                            ifa->ifa_name);
                        if (addrflags == -1) {
-                               if (errno != EEXIST && errno != EADDRNOTAVAIL)
-                                       logerr("%s: if_addrflags6", __func__);
+                               if (errno != EEXIST && errno != EADDRNOTAVAIL) {
+                                       char dbuf[INET6_ADDRSTRLEN];
+                                       const char *dbp;
+
+                                       dbp = inet_ntop(AF_INET6, &sin6->sin6_addr,
+                                           dbuf, sizeof(dbuf));
+                                       logerr("%s: if_addrflags6: %s%%%s",
+                                           __func__, dbp, ifp->name);
+                               }
                                continue;
                        }
 #endif