about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--sysdeps/unix/sysv/linux/check_pf.c10
2 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 8905b5d1e7..b0de021b79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-08-29  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/check_pf.c (IFA_F_OPTIMISTIC): Define to
+	zero if not defined.
+	(make_request): Recognize optimistic addresses and treat them like
+	deprecated addresses.
+	Reported by Neil Horman <nhorman@redhat.com>.
+
 2007-08-28  Ulrich Drepper  <drepper@redhat.com>
 
 	* nscd/connections.c (send_ro_fd): Also transfer file size.
diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c
index 4c222f10d9..df7cbb1897 100644
--- a/sysdeps/unix/sysv/linux/check_pf.c
+++ b/sysdeps/unix/sysv/linux/check_pf.c
@@ -41,6 +41,9 @@
 #ifndef IFA_F_HOMEADDRESS
 # define IFA_F_HOMEADDRESS 0
 #endif
+#ifndef IFA_F_OPTIMISTIC
+# define IFA_F_OPTIMISTIC 0
+#endif
 
 
 static int
@@ -203,10 +206,13 @@ make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
 
 		  if (ifam->ifa_flags & (IFA_F_DEPRECATED
 					 | IFA_F_TEMPORARY
-					 | IFA_F_HOMEADDRESS))
+					 | IFA_F_HOMEADDRESS
+					 | IFA_F_OPTIMISTIC))
 		    {
 		      struct in6ailist *newp = alloca (sizeof (*newp));
-		      newp->info.flags = (((ifam->ifa_flags & IFA_F_DEPRECATED)
+		      newp->info.flags = (((ifam->ifa_flags
+					    & (IFA_F_DEPRECATED
+					       | IFA_F_OPTIMISTIC))
 					   ? in6ai_deprecated : 0)
 					  | ((ifam->ifa_flags
 					      & IFA_F_TEMPORARY)