changeset 4333:8f4984b4f93e

6560567 6453732 breaks IPv6 configurations with multiple default routes
author nordmark
date Sun, 27 May 2007 19:37:24 -0700
parents ba42ba9a9eac
children 3ca0f844fae0
files usr/src/uts/common/inet/ip/ip6_ire.c
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/ip6_ire.c	Sun May 27 19:16:54 2007 -0700
+++ b/usr/src/uts/common/inet/ip/ip6_ire.c	Sun May 27 19:37:24 2007 -0700
@@ -1881,7 +1881,7 @@
 					ire_refrele(rire);
 				} else if (ipst->
 				    ips_ipv6_ire_default_count > 1 &&
-				    zoneid != ALL_ZONES) {
+				    zoneid != GLOBAL_ZONEID) {
 					/*
 					 * When we're in a local zone, we're
 					 * only interested in default routers
@@ -1891,11 +1891,17 @@
 					 * ire_route_lookup_v6() is avoided when
 					 * we have only one default route.
 					 */
-					match_flags |= MATCH_IRE_TYPE;
+					int ire_match_flags = MATCH_IRE_TYPE |
+					    MATCH_IRE_SECATTR;
+
+					if (ire->ire_ipif != NULL) {
+						ire_match_flags |=
+						    MATCH_IRE_ILL_GROUP;
+					}
 					rire = ire_route_lookup_v6(&gw_addr_v6,
 					    NULL, NULL, IRE_INTERFACE,
 					    ire->ire_ipif, NULL,
-					    zoneid, tsl, match_flags, ipst);
+					    zoneid, tsl, ire_match_flags, ipst);
 					if (rire != NULL) {
 						ire_refrele(rire);
 						saved_ire = ire;