Mercurial > illumos > illumos-gate
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;