View difference between Paste ID: DzcK73kr and 4sdau6L0
SHOW: | | - or go back to the newest paste.
1
diff --git a/libnetutil/netutil.cc b/libnetutil/netutil.cc
2-
index 28c624c..ce7d92b 100644
2+
index 28c624c..e19f6c1 100644
3
--- a/libnetutil/netutil.cc
4
+++ b/libnetutil/netutil.cc
5-
@@ -1298,6 +1298,9 @@ static int canonicalize_address(const struct sockaddr_storage *ss,
5+
@@ -1327,7 +1327,11 @@ static int collect_dnet_interfaces(const struct intf_entry *entry, void *arg) {
6-
   hints.ai_flags |= AI_NUMERICHOST;
6+
     /* The first time through the loop we add the primary interface record.
7-
 
7+
8-
   rc = getaddrinfo(canonical_ip_string, NULL, &hints, &ai);
8+
9-
+  if (rc != 0) {
9+
-      if (addr_ntos(&entry->intf_addr, (struct sockaddr *) &tmpss) == -1) {
10-
+      fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rc));
10+
+      if ( (addr_ntos(&entry->intf_addr, (struct sockaddr *) &tmpss) == -1)
11-
+  }
11+
12-
   if (rc != 0 || ai == NULL)
12+
+              || (tmpss.ss_family == AF_LINK)
13-
     return -1;
13+
14-
   assert(ai->ai_addrlen > 0 && ai->ai_addrlen <= (int) sizeof(*output));
14+
+         ) {
15-
@@ -1328,8 +1331,15 @@ static int collect_dnet_interfaces(const struct intf_entry *entry, void *arg) {
15+
16
       } else {
17
         rc = canonicalize_address(&tmpss, &dcrn->ifaces[dcrn->numifaces].addr);
18-
       if (addr_ntos(&entry->intf_addr, (struct sockaddr *) &tmpss) == -1) {
18+
@@ -1336,7 +1340,11 @@ static int collect_dnet_interfaces(const struct intf_entry *entry, void *arg) {
19-
+        fprintf(stderr,"primary - trying %s, type %d, addr_type %d\n", entry->intf_name, entry->intf_type, entry->intf_addr.addr_type);
19+
       dcrn->ifaces[dcrn->numifaces].netmask_bits = entry->intf_addr.addr_bits;
20
       primary_done = true;
21
     } else if (num_aliases_done < entry->intf_alias_num) {
22-
+        fprintf(stderr,"primary - Canonicalizing %s, type %d, addr_type %d\n", entry->intf_name, entry->intf_type, entry->intf_addr.addr_type);
22+
-      if (addr_ntos(&entry->intf_alias_addrs[num_aliases_done], (struct sockaddr *) &tmpss) == -1) {
23-
+        fprintf(stderr," ai_family = %d, address %s\n", tmpss.ss_family, addr_ntoa(&entry->intf_addr));
23+
+      if ( (addr_ntos(&entry->intf_alias_addrs[num_aliases_done], (struct sockaddr *) &tmpss) == -1)
24
+#ifdef AF_LINK
25-
+        if (tmpss.ss_family == AF_LINK)
25+
+              || (tmpss.ss_family == AF_LINK)
26-
+            tmpss.ss_familiy = AF_UNSPEC;
26+
27
+         ) {
28
         dcrn->ifaces[dcrn->numifaces].addr.ss_family = 0;
29-
         assert(rc == 0);
29+
30-
       }
30+
         rc = canonicalize_address(&tmpss, &dcrn->ifaces[dcrn->numifaces].addr);