-import java.math.BigInteger;
-
-public class MetaDataUtil {
- public static final BigInteger METADATA_MASK_LPORT_TAG = new BigInteger("0FFFFF0000000000", 16);
- public static final BigInteger METADATA_MASK_SERVICE = new BigInteger("000000FFFF000000", 16);
- public static final BigInteger METADATA_MASK_SERVICE_INDEX = new BigInteger("F000000000000000", 16);
- public static final BigInteger METADATA_MASK_VRFID = new BigInteger("00000000FFFFFFFE", 16);
- public static final BigInteger METADATA_MASK_REMOTE_ACL_ID = new BigInteger("0000000000FFFFFE", 16);
- public static final BigInteger METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID
- = new BigInteger("08000000FFFFFF00", 16);
- public static final BigInteger METADATA_MASK_LABEL_ITM = new BigInteger("40FFFFFF000000FF", 16);
- public static final BigInteger METADA_MASK_TUNNEL_ID = new BigInteger("00000000FFFFFF00", 16);
- public static final BigInteger METADATA_MASK_SERVICE_SH_FLAG = new BigInteger("000000FFFF000001", 16);
- public static final BigInteger METADATA_MASK_LPORT_TAG_SH_FLAG = new BigInteger("0FFFFF0000000001", 16);
- public static final BigInteger METADATA_MASK_SH_FLAG = new BigInteger("0000000000000001", 16);
- public static final BigInteger METADATA_MASK_ELAN_SUBNET_ROUTE = new BigInteger("0000FFFF00000000", 16);
- public static final BigInteger METADATA_MASK_SUBNET_ROUTE = new BigInteger("0000FFFFFFFFFFFE", 16);
-
- public static BigInteger getMetaDataForLPortDispatcher(int lportTag, short serviceIndex) {
- return getServiceIndexMetaData(serviceIndex).or(getLportTagMetaData(lportTag));
- }
-
- public static BigInteger getMetaDataForLPortDispatcher(int lportTag, short serviceIndex,
- BigInteger serviceMetaData) {
+import org.opendaylight.yangtools.yang.common.Uint64;
+
+public final class MetaDataUtil {
+ public static final Uint64 METADATA_MASK_LPORT_TAG = Uint64.valueOf("0FFFFF0000000000", 16).intern();
+ public static final Uint64 METADATA_MASK_SERVICE = Uint64.valueOf("000000FFFF000000", 16).intern();
+ public static final Uint64 METADATA_MASK_SERVICE_INDEX = Uint64.valueOf("F000000000000000", 16).intern();
+ public static final Uint64 METADATA_MASK_VRFID = Uint64.valueOf("0000000000FFFFFE", 16).intern();
+ public static final Uint64 METADATA_MASK_REMOTE_ACL_TAG = Uint64.valueOf("0000000000FFFFF0", 16).intern();
+ public static final Uint64 METADATA_MASK_POLICY_CLASSIFER_ID = Uint64.valueOf("0000000000FFFFFE", 16).intern();
+ public static final Uint64 METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID = Uint64.valueOf("08000000FFFFFF00", 16)
+ .intern();
+ public static final Uint64 METADATA_MASK_LABEL_ITM = Uint64.valueOf("40FFFFFF000000FF", 16).intern();
+ public static final Uint64 METADA_MASK_TUNNEL_ID = Uint64.valueOf("00000000FFFFFF00", 16).intern();
+ public static final Uint64 METADATA_MASK_SERVICE_SH_FLAG = Uint64.valueOf("000000FFFF000001", 16).intern();
+ public static final Uint64 METADATA_MASK_LPORT_TAG_SH_FLAG = Uint64.valueOf("0FFFFF0000000001", 16).intern();
+ public static final Uint64 METADATA_MASK_SH_FLAG = Uint64.valueOf("0000000000000001", 16).intern();
+ public static final Uint64 METADATA_MASK_ELAN_SUBNET_ROUTE = Uint64.valueOf("000000FFFF000000", 16).intern();
+ public static final Uint64 METADATA_MASK_SUBNET_ROUTE = Uint64.valueOf("000000FFFFFFFFFE", 16).intern();
+ public static final Uint64 METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE = Uint64.valueOf("0000000000000002", 16)
+ .intern();
+ public static final Uint64 METADATA_MASK_ACL_DROP = Uint64.valueOf("0000000000000004", 16).intern();
+ public static final Uint64 REG6_MASK_REMOTE_DPN = Uint64.valueOf("0FFFFF0000000000", 16).intern();
+
+ public static final int METADATA_LPORT_TAG_OFFSET = 40;
+ public static final int METADATA_LPORT_TAG_BITLEN = 20;
+ public static final int METADATA_ELAN_TAG_OFFSET = 24;
+ public static final int METADATA_ELAN_TAG_BITLEN = 16;
+ public static final int METADATA_VPN_ID_OFFSET = 1;
+ public static final int METADATA_VPN_ID_BITLEN = 23;
+
+ public static final int REG6_START_INDEX = 0;
+ public static final int REG6_END_INDEX = 31;
+
+ private static final Uint64 MASK_FOR_DISPATCHER = Uint64.valueOf("FFFFFFFFFFFFFFFE", 16).intern();
+
+ private MetaDataUtil() {
+
+ }
+
+ public static Uint64 getMetaDataForLPortDispatcher(int lportTag, short serviceIndex) {
+ // FIXME: this can be done more efficiently
+ return Uint64.valueOf(getServiceIndexMetaData(serviceIndex).toJava().or(
+ getLportTagMetaData(lportTag).toJava()));
+ }
+
+ public static Uint64 getMetaDataForLPortDispatcher(int lportTag, short serviceIndex, Uint64 serviceMetaData) {