2 * Copyright (c) 2016 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package io.fd.vpp.jvpp.acl.examples;
20 import io.fd.vpp.jvpp.acl.types.AclRule;
21 import io.fd.vpp.jvpp.acl.types.MacipAclRule;
25 static final byte[] FIRST_RULE_ADDRESS_AS_ARRAY = {-64, -88, 2, 1};
26 static final byte[] FIRST_RULE_ADDRESS_2_AS_ARRAY = {-64, -88, 2, 3};
27 static final byte[] SECOND_RULE_ADDRESS_AS_ARRAY =
28 {32, 1, 13, -72, 10, 11, 18, -16, 0, 0, 0, 0, 0, 0, 0, 1};
29 static final byte[] SECOND_RULE_ADDRESS_2_AS_ARRAY =
30 {32, 1, 13, -72, 10, 11, 18, -16, 0, 0, 0, 0, 0, 0, 0, 1};
31 static final byte[] FIRST_RULE_MAC = {11, 11, 11, 11, 11, 11};
32 static final byte[] FIRST_RULE_MAC_MASK = {0, 0, 0, 0, 0, 0};
33 static final byte[] SECOND_RULE_MAC = {11, 12, 11, 11, 12, 11};
34 static final byte[] SECOND_RULE_MAC_MASK = {(byte) 170, 0, 0, 0, 0, 0};
35 static final int FIRST_RULE_PREFIX = 32;
36 static final int FIRST_RULE_PREFIX_2 = 24;
37 static final int SECOND_RULE_PREFIX = 64;
38 static final int SECOND_RULE_PREFIX_2 = 62;
39 static final int FIRST_RULE_DST_ICMP_TYPE_START = 0;
40 static final int FIRST_RULE_DST_ICMP_TYPE_END = 8;
41 static final int FIRST_RULE_SRC_ICMP_TYPE_START = 1;
42 static final int FIRST_RULE_SRC_ICMP_TYPE_END = 7;
43 static final int ICMP_PROTOCOL = 1;
44 static final int SECOND_RULE_DST_PORT_RANGE_START = 2000;
45 static final int SECOND_RULE_DST_PORT_RANGE_END = 6000;
46 static final int SECOND_RULE_SRC_PORT_RANGE_START = 400;
47 static final int SECOND_RULE_SRC_PORT_RANGE_END = 2047;
48 static final int UDP_PROTOCOL = 17;
51 static MacipAclRule[] createMacipRules() {
52 MacipAclRule ruleOne = new MacipAclRule();
55 ruleOne.srcIpAddr = FIRST_RULE_ADDRESS_AS_ARRAY;
56 ruleOne.srcIpPrefixLen = FIRST_RULE_PREFIX;
57 ruleOne.srcMac = FIRST_RULE_MAC;
58 ruleOne.srcMacMask = FIRST_RULE_MAC_MASK;// no mask
60 MacipAclRule ruleTwo = new MacipAclRule();
63 ruleTwo.srcIpAddr = SECOND_RULE_ADDRESS_AS_ARRAY;
64 ruleTwo.srcIpPrefixLen = SECOND_RULE_PREFIX;
65 ruleTwo.srcMac = SECOND_RULE_MAC;
66 ruleTwo.srcMacMask = SECOND_RULE_MAC_MASK;
68 return new MacipAclRule[]{ruleOne, ruleTwo};
71 static AclRule[] createAclRules() {
72 AclRule ruleOne = new AclRule();
76 ruleOne.srcIpAddr = FIRST_RULE_ADDRESS_AS_ARRAY;
77 ruleOne.srcIpPrefixLen = FIRST_RULE_PREFIX;
78 ruleOne.dstIpAddr = FIRST_RULE_ADDRESS_2_AS_ARRAY;
79 ruleOne.dstIpPrefixLen = FIRST_RULE_PREFIX_2;
80 ruleOne.dstportOrIcmpcodeFirst = FIRST_RULE_DST_ICMP_TYPE_START;
81 ruleOne.dstportOrIcmpcodeLast = FIRST_RULE_DST_ICMP_TYPE_END;
82 ruleOne.srcportOrIcmptypeFirst = FIRST_RULE_SRC_ICMP_TYPE_START;
83 ruleOne.srcportOrIcmptypeLast = FIRST_RULE_SRC_ICMP_TYPE_END;
84 ruleOne.proto = ICMP_PROTOCOL; //ICMP
86 AclRule ruleTwo = new AclRule();
89 ruleTwo.srcIpAddr = SECOND_RULE_ADDRESS_AS_ARRAY;
90 ruleTwo.srcIpPrefixLen = SECOND_RULE_PREFIX;
91 ruleTwo.dstIpAddr = SECOND_RULE_ADDRESS_2_AS_ARRAY;
92 ruleTwo.dstIpPrefixLen = SECOND_RULE_PREFIX_2;
93 ruleTwo.dstportOrIcmpcodeFirst = SECOND_RULE_DST_PORT_RANGE_START;
94 ruleTwo.dstportOrIcmpcodeLast = SECOND_RULE_DST_PORT_RANGE_END;
95 ruleTwo.srcportOrIcmptypeFirst = SECOND_RULE_SRC_PORT_RANGE_START;
96 ruleTwo.srcportOrIcmptypeLast = SECOND_RULE_SRC_PORT_RANGE_END;
97 ruleTwo.proto = UDP_PROTOCOL; //UDP
99 return new AclRule[]{ruleOne, ruleTwo};