+ /** Utility to fetch the register value for lport dispatcher table.
+ * Register6 used for service binding will have first 4 bits of service-index, next 20 bits for lportTag,
+ * and next 4 bits for interface-type
+ */
+ public static long getReg6ValueForLPortDispatcher(int lportTag, short serviceIndex, short interfaceType) {
+ return getServiceIndexForReg6(serviceIndex).or(getLportTagForReg6(lportTag)
+ .or(getInterfaceTypeForReg6(interfaceType))).longValue();
+ }
+
+ public static long getLportTagMaskForReg6() {
+ return METADATA_MASK_LPORT_TAG.shiftRight(32).longValue();
+ }
+
+ public static long getElanMaskForReg() {
+ return METADATA_MASK_SERVICE.shiftRight(24).longValue();
+ }
+
+ public static long getVpnIdMaskForReg() {
+ return METADATA_MASK_VRFID.shiftRight(1).longValue();
+ }
+
+ public static BigInteger mergeMetadataValues(BigInteger metadata, BigInteger metadata2) {
+ return metadata.or(metadata2);
+ }
+
+ public static BigInteger mergeMetadataMask(BigInteger mask, BigInteger mask2) {
+ return mask.or(mask2);
+ }