[ofa-general] [PATCH] OpenSM/osm_sa_mcmember_record.c: Validate some more MGID bits for IPv6 SNM

Hal Rosenstock hrosenstock at xsigo.com
Mon Jun 2 07:00:39 PDT 2008


OpenSM/osm_sa_mcmember_record.c: Include high order 24 bits of low 64
MGID bits in validation as these bits are supposed to be 0

Signed-off-by: Hal Rosenstock <hal at xsigo.com>

diff --git a/opensm/opensm/osm_sa_mcmember_record.c b/opensm/opensm/osm_sa_mcmember_record.c
index c14632d..73b3fc4 100644
--- a/opensm/opensm/osm_sa_mcmember_record.c
+++ b/opensm/opensm/osm_sa_mcmember_record.c
@@ -1088,14 +1088,15 @@ __search_mgrp_by_mgid(IN cl_map_item_t * const p_map_item, IN void *context)
 			 * YYYYYY is the last 24 bits of the port guid */
 #define PREFIX_MASK (0xff10ffff0000ffffULL)
 #define PREFIX_SIGNATURE (0xff10601b00000000ULL)
-#define INT_ID_MASK (0x00000001ff000000ULL)
+#define INT_ID_MASK (0xffffff1ff000000ULL)
+#define INT_ID_SIGNATURE (0x00000001ff000000ULL)
 			uint64_t g_prefix = cl_ntoh64(p_mgrp->mcmember_rec.mgid.unicast.prefix);
 			uint64_t g_interface_id = cl_ntoh64(p_mgrp->mcmember_rec.mgid.unicast.interface_id);
 			uint64_t rcv_prefix = cl_ntoh64(p_recvd_mgid->unicast.prefix);
 			uint64_t rcv_interface_id = cl_ntoh64(p_recvd_mgid->unicast.interface_id);
 
 			if ((rcv_prefix & PREFIX_MASK) == PREFIX_SIGNATURE &&
-			    (rcv_interface_id & INT_ID_MASK) == INT_ID_MASK &&
+			    (rcv_interface_id & INT_ID_MASK) == INT_ID_SIGNATURE &&
 			    (g_prefix & PREFIX_MASK) ==
 			     (rcv_prefix && PREFIX_MASK) &&
 			    (g_interface_id & INT_ID_MASK) ==





More information about the general mailing list