ACL: Defining new ACL tables 57/65157/8
authorSomashekar Byrappa <somashekar.b@altencalsoftlabs.com>
Mon, 6 Nov 2017 10:11:08 +0000 (15:41 +0530)
committerFaseela K <faseela.k@ericsson.com>
Mon, 22 Jan 2018 06:42:31 +0000 (06:42 +0000)
+ Defining new ACL tables as per the spec "Support for protocols that are not
supported by conntrack".
+ Includes metadata changes for ACL.

Change-Id: I95df598428f6351e2abb0b173a4318253c9e20bc
Signed-off-by: Somashekar Byrappa <somashekar.b@altencalsoftlabs.com>
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MetaDataUtil.java
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java

index 1c1218c5fc5662624bebafaf6f38d587beb955ec..c68fabf23ca0009830799a18c2071f90a9aa3caf 100644 (file)
@@ -15,6 +15,7 @@ public final class MetaDataUtil {
     public static final BigInteger METADATA_MASK_SERVICE_INDEX = new BigInteger("F000000000000000", 16);
     public static final BigInteger METADATA_MASK_VRFID =         new BigInteger("0000000000FFFFFE", 16);
     public static final BigInteger METADATA_MASK_REMOTE_ACL_ID = new BigInteger("0000000000FFFFFE", 16);
+    public static final BigInteger METADATA_MASK_REMOTE_ACL_TAG = new BigInteger("0000000000FFFFF0", 16);
     public static final BigInteger METADATA_MASK_POLICY_CLASSIFER_ID = new BigInteger("0000000000FFFFFE", 16);
     public static final BigInteger METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID
         = new BigInteger("08000000FFFFFF00", 16);
@@ -25,6 +26,7 @@ public final class MetaDataUtil {
     public static final BigInteger METADATA_MASK_SH_FLAG = new BigInteger("0000000000000001", 16);
     public static final BigInteger METADATA_MASK_ELAN_SUBNET_ROUTE =    new BigInteger("000000FFFF000000", 16);
     public static final BigInteger METADATA_MASK_SUBNET_ROUTE =         new BigInteger("000000FFFFFFFFFE", 16);
+    public static final BigInteger METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE = new BigInteger("0000000000000002", 16);
 
     private MetaDataUtil() { }
 
@@ -107,6 +109,23 @@ public final class MetaDataUtil {
         return getVpnIdFromMetadata(metadata);
     }
 
+    /**
+     * Gets the ACL conntrack classifier type from meta data.<br>
+     * Second bit in metadata is used for this purpose.<br>
+     *
+     * <p>
+     * Conntrack supported traffic is identified by value 0 (0000 in binary)
+     * i.e., 0x0/0x2<br>
+     * Non-conntrack supported traffic is identified by value 2 (0010 in binary)
+     * i.e., 0x2/0x2
+     *
+     * @param conntrackClassifierType the conntrack classifier flag
+     * @return the acl conntrack classifier flag from meta data
+     */
+    public static BigInteger getAclConntrackClassifierTypeFromMetaData(BigInteger conntrackClassifierType) {
+        return METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE.and(conntrackClassifierType.shiftLeft(1));
+    }
+
     public static BigInteger getVpnIdMetadata(long vrfId) {
         return METADATA_MASK_VRFID.and(BigInteger.valueOf(vrfId).shiftLeft(1));
     }
index 1f71aa9106195e67ef9aafb0a0b3150e6294cf91..4c1ca7124784b24e3f3c2a2fb9c1e8408ab2a6e3 100644 (file)
@@ -157,6 +157,15 @@ public interface NwConstants {
     short QOS_DSCP_TABLE = 90;
     short INGRESS_SFC_CLASSIFIER_FILTER_TABLE = 100;
     short INGRESS_SFC_CLASSIFIER_ACL_TABLE = 101;
+    short INGRESS_ACL_ANTI_SPOOFING_TABLE = 210;
+    short INGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 211;
+    short INGRESS_ACL_CONNTRACK_SENDER_TABLE = 212;
+    short INGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 213;
+    short INGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 214;
+    short INGRESS_ACL_RULE_BASED_FILTER_TABLE = 215;
+    short INGRESS_REMOTE_ACL_TABLE = 216;
+    short INGRESS_ACL_COMMITTER_TABLE = 217;
+    // TODO: Remove below unused old ACL constants.
     short INGRESS_ACL_TABLE = 211;
     short INGRESS_ACL_REMOTE_ACL_TABLE = 212;
     short INGRESS_ACL_FILTER_TABLE = 213;
@@ -170,6 +179,16 @@ public interface NwConstants {
     short EGRESS_SFC_CLASSIFIER_EGRESS_TABLE = 223;
     short EGRESS_POLICY_CLASSIFIER_TABLE = 230;
     short EGRESS_POLICY_ROUTING_TABLE = 231;
+    short EGRESS_ACL_DUMMY_TABLE = 239;
+    short EGRESS_ACL_ANTI_SPOOFING_TABLE = 240;
+    short EGRESS_ACL_CONNTRACK_CLASSIFIER_TABLE = 241;
+    short EGRESS_ACL_CONNTRACK_SENDER_TABLE = 242;
+    short EGRESS_ACL_FOR_EXISTING_TRAFFIC_TABLE = 243;
+    short EGRESS_ACL_FILTER_CUM_DISPATCHER_TABLE = 244;
+    short EGRESS_ACL_RULE_BASED_FILTER_TABLE = 245;
+    short EGRESS_REMOTE_ACL_TABLE = 246;
+    short EGRESS_ACL_COMMITTER_TABLE = 247;
+    // TODO: Remove below unused old ACL constants.
     short EGRESS_ACL_TABLE = 241;
     short EGRESS_ACL_REMOTE_ACL_TABLE = 242;
     short EGRESS_ACL_FILTER_TABLE = 243;