ume> Please try this patch.
ume> Index: sendmail-8.11.0/sendmail/conf.c
ume> diff -u sendmail-8.11.0/sendmail/conf.c.orig sendmail-8.11.0/sendmail/conf.c
Oops, previous patch is insufficient. I forgot to open INET6 socket.
Index: sendmail-8.11.0/sendmail/conf.c
diff -u sendmail-8.11.0/sendmail/conf.c.orig sendmail-8.11.0/sendmail/conf.c
--- sendmail-8.11.0/sendmail/conf.c.orig Sun Jul 16 02:35:18 2000
+++ sendmail-8.11.0/sendmail/conf.c Mon Aug 14 06:52:16 2000
@@ -4771,6 +4771,11 @@
# undef __P
# endif /* (_AIX4 >= 40300) && !defined(_NET_IF_H) */
# include <net/if.h>
+#if NETINET6 && !defined(SIOCGLIFCONF)
+# include <net/if.h>
+# include <net/if_var.h>
+# include <netinet/in_var.h>
+#endif /* NETINET6 && !SIOCGLIFCONF */
#endif /* defined(SIOCGIFCONF) && !SIOCGIFCONF_IS_BROKEN */
void
@@ -4958,6 +4963,9 @@
#else /* NETINET6 && defined(SIOCGLIFCONF) */
# if defined(SIOCGIFCONF) && !SIOCGIFCONF_IS_BROKEN
int s;
+#if NETINET6 && defined(SIOCGIFAFLAG_IN6)
+ int s6;
+#endif /* NETINET6 && SIOCGIFAFLAG_IN6 */
int i;
struct ifconf ifc;
int numifs;
@@ -4996,6 +5004,10 @@
return;
}
+#if NETINET6 && defined(SIOCGIFAFLAG_IN6)
+ s6 = socket(AF_INET6, SOCK_DGRAM, 0);
+#endif /* NETINET6 && SIOCGIFAFLAG_IN6 */
+
/* scan the list of IP address */
if (tTd(0, 40))
dprintf("scanning for interface specific names, ifc_len=%d\n",
@@ -5009,6 +5021,9 @@
# if NETINET6
char *addr;
struct in6_addr ia6;
+# ifdef SIOCGIFAFLAG_IN6
+ struct in6_ifreq ifr6;
+# endif /* SIOCGIFAFLAG_IN6 */
# endif /* NETINET6 */
struct in_addr ia;
# ifdef SIOCGIFFLAGS
@@ -5094,6 +5109,22 @@
continue;
}
+# ifdef SIOCGIFAFLAG_IN6
+ memset(&ifr6, '\0', sizeof(struct in6_ifreq));
+ strncpy(ifr6.ifr_name, ifr->ifr_name,
+ sizeof(ifr->ifr_name));
+ ifr6.ifr_addr = sa->sin6;
+ if (s6 < 0 || ioctl(s6, SIOCGIFAFLAG_IN6, &ifr6) < 0)
+ {
+ if (tTd(0, 4))
+ dprintf("SIOCGIFAFLAG_IN6 failed: %s\n",
+ errstring(errno));
+ continue;
+ }
+ if (ifr6.ifr_ifru.ifru_flags6 & IN6_IFF_ANYCAST)
+ continue;
+# endif /* SIOCGIFAFLAG_IN6 */
+
/* save IP address in text from */
addr = anynet_ntop(&ia6, buf6, sizeof buf6);
if (addr != NULL)
@@ -5123,6 +5154,10 @@
}
free(ifc.ifc_buf);
(void) close(s);
+# if NETINET6 && defined(SIOCGIFAFLAG_IN6)
+ if (s6 >= 0)
+ (void) close(s6);
+# endif /* NETINET6 && SIOCGIFAFLAG_IN6 */
# undef IFRFREF
# endif /* defined(SIOCGIFCONF) && !SIOCGIFCONF_IS_BROKEN */
#endif /* NETINET6 && defined(SIOCGLIFCONF) */
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
[EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED]
http://www.imasy.org/~ume/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message