changeset 3694:e4b684010e8d

6512188 IPMP creates broadcast routes with Maximum Fragment Size of 1536
author rk129064
date Thu, 22 Feb 2007 05:34:11 -0800
parents 0500530f987d
children bb3dfeb272c9
files usr/src/uts/common/inet/ip/ip_if.c
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/ip_if.c	Wed Feb 21 17:37:15 2007 -0800
+++ b/usr/src/uts/common/inet/ip/ip_if.c	Thu Feb 22 05:34:11 2007 -0800
@@ -15399,6 +15399,7 @@
 	uint64_t match_flags;
 	uint64_t phyi_flags;
 	boolean_t fallback = B_FALSE;
+	uint_t	max_frag;
 
 	ire = ire_ctable_lookup(addr, 0, IRE_BROADCAST, NULL, ALL_ZONES,
 	    NULL, MATCH_IRE_TYPE, ipst);
@@ -15620,6 +15621,11 @@
 		 * etc. Need to dup them. ditto in ill_bcast_delete_and_add
 		 */
 
+		/* Set the max_frag before adding the ire */
+		max_frag = *new_lb_ire->ire_max_fragp;
+		new_lb_ire->ire_max_fragp = NULL;
+		new_lb_ire->ire_max_frag = max_frag;
+
 		/* Add the new ire's. Insert at *irep */
 		new_lb_ire->ire_bucket = clear_ire->ire_bucket;
 		ire1 = *irep;
@@ -15636,6 +15642,11 @@
 		new_lb_ire->ire_ipif->ipif_ire_cnt++;
 
 		if (clear_ire_stq != NULL) {
+			/* Set the max_frag before adding the ire */
+			max_frag = *new_nlb_ire->ire_max_fragp;
+			new_nlb_ire->ire_max_fragp = NULL;
+			new_nlb_ire->ire_max_frag = max_frag;
+
 			new_nlb_ire->ire_bucket = clear_ire->ire_bucket;
 			irep = &new_lb_ire->ire_next;
 			/* Add the new ire. Insert at *irep */