summaryrefslogtreecommitdiffstats
path: root/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java
diff options
context:
space:
mode:
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java')
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java24
1 files changed, 12 insertions, 12 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java
index 911b5379f..f1cccba92 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfaces/acl/ingress/AceIp6Writer.java
@@ -46,9 +46,10 @@ final class AceIp6Writer extends AbstractAceWriter<AceIp> {
private static final int ETHER_TYPE_OFFSET = 12; // first 14 bytes represent L2 header (2x6)
private static final int IP_VERSION_OFFSET = ETHER_TYPE_OFFSET+2;
- private static final int IP_VERSION_MASK = 0xf0;
private static final int DSCP_MASK1 = 0x0f;
private static final int DSCP_MASK2 = 0xc0;
+ private static final int IP_PROTOCOL_OFFSET = IP_VERSION_OFFSET+6;
+ private static final int IP_PROTOCOL_MASK = 0xff;
private static final int IP6_LEN = 16;
private static final int SRC_IP_OFFSET = IP_VERSION_OFFSET + 8;
private static final int DST_IP_OFFSET = SRC_IP_OFFSET + IP6_LEN;
@@ -114,11 +115,6 @@ final class AceIp6Writer extends AbstractAceWriter<AceIp> {
request.mask[baseOffset + ETHER_TYPE_OFFSET + 1] = (byte) 0xff;
}
- if (aceIp.getProtocol() != null) {
- aceIsEmpty = false;
- request.mask[baseOffset + IP_VERSION_OFFSET] |= IP_VERSION_MASK;
- }
-
if (aceIp.getDscp() != null) {
aceIsEmpty = false;
// DCSP (bits 4-9 of IP6 header)
@@ -126,6 +122,11 @@ final class AceIp6Writer extends AbstractAceWriter<AceIp> {
request.mask[baseOffset + IP_VERSION_OFFSET + 1] |= DSCP_MASK2;
}
+ if (aceIp.getProtocol() != null) {
+ aceIsEmpty = false;
+ request.mask[baseOffset + IP_PROTOCOL_OFFSET] = (byte) IP_PROTOCOL_MASK;
+ }
+
if (aceIp.getSourcePortRange() != null) {
LOG.warn("L4 Header fields are not supported. Ignoring {}", aceIp.getSourcePortRange());
}
@@ -184,12 +185,6 @@ final class AceIp6Writer extends AbstractAceWriter<AceIp> {
request.match[baseOffset + ETHER_TYPE_OFFSET + 1] = (byte) 0xdd;
}
- if (aceIp.getProtocol() != null) {
- noMatch = false;
- request.match[baseOffset + IP_VERSION_OFFSET] |=
- (byte) (IP_VERSION_MASK & (aceIp.getProtocol().intValue() << 4));
- }
-
if (aceIp.getDscp() != null) {
noMatch = false;
final int dscp = aceIp.getDscp().getValue();
@@ -198,6 +193,11 @@ final class AceIp6Writer extends AbstractAceWriter<AceIp> {
request.match[baseOffset + IP_VERSION_OFFSET + 1] |= (byte) (DSCP_MASK2 & (dscp << 6));
}
+ if (aceIp.getProtocol() != null) {
+ noMatch = false;
+ request.match[baseOffset + IP_PROTOCOL_OFFSET] = (byte) (IP_PROTOCOL_MASK & aceIp.getProtocol());
+ }
+
if (aceIp.getSourcePortRange() != null) {
LOG.warn("L4 Header fields are not supported. Ignoring {}", aceIp.getSourcePortRange());
}