blob: 86a4a11125956241b93c21337400382a5b30d7b7 [file] [log] [blame]
Yi Tsengbe342052017-11-03 10:21:23 -07001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17package org.onosproject.pipelines.fabric;
18
19import org.onosproject.net.pi.model.PiActionId;
20import org.onosproject.net.pi.model.PiActionParamId;
21import org.onosproject.net.pi.model.PiActionProfileId;
22import org.onosproject.net.pi.model.PiControlMetadataId;
23import org.onosproject.net.pi.model.PiCounterId;
24import org.onosproject.net.pi.model.PiMatchFieldId;
25import org.onosproject.net.pi.model.PiTableId;
26/**
27 * Constants for fabric pipeline.
28 */
29public final class FabricConstants {
30
31 // hide default constructor
32 private FabricConstants() {
33 }
34
Yi Tsengbe342052017-11-03 10:21:23 -070035 // Header field IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +080036 public static final PiMatchFieldId FABRIC_METADATA_L4_SRC_PORT =
37 PiMatchFieldId.of("fabric_metadata.l4_src_port");
38 public static final PiMatchFieldId HDR_IPV4_SRC_ADDR =
39 PiMatchFieldId.of("hdr.ipv4.src_addr");
40 public static final PiMatchFieldId HDR_VLAN_TAG_VLAN_ID =
41 PiMatchFieldId.of("hdr.vlan_tag.vlan_id");
42 public static final PiMatchFieldId HDR_MPLS_LABEL =
43 PiMatchFieldId.of("hdr.mpls.label");
44 public static final PiMatchFieldId HDR_IPV6_DST_ADDR =
45 PiMatchFieldId.of("hdr.ipv6.dst_addr");
46 public static final PiMatchFieldId HDR_ETHERNET_SRC_ADDR =
47 PiMatchFieldId.of("hdr.ethernet.src_addr");
48 public static final PiMatchFieldId HDR_ICMP_ICMP_TYPE =
49 PiMatchFieldId.of("hdr.icmp.icmp_type");
50 public static final PiMatchFieldId STANDARD_METADATA_EGRESS_PORT =
51 PiMatchFieldId.of("standard_metadata.egress_port");
52 public static final PiMatchFieldId FABRIC_METADATA_NEXT_ID =
53 PiMatchFieldId.of("fabric_metadata.next_id");
54 public static final PiMatchFieldId FABRIC_METADATA_L4_DST_PORT =
55 PiMatchFieldId.of("fabric_metadata.l4_dst_port");
56 public static final PiMatchFieldId STANDARD_METADATA_INGRESS_PORT =
57 PiMatchFieldId.of("standard_metadata.ingress_port");
58 public static final PiMatchFieldId FABRIC_METADATA_ORIGINAL_ETHER_TYPE =
59 PiMatchFieldId.of("fabric_metadata.original_ether_type");
60 public static final PiMatchFieldId HDR_IPV4_DST_ADDR =
61 PiMatchFieldId.of("hdr.ipv4.dst_addr");
62 public static final PiMatchFieldId HDR_VLAN_TAG_IS_VALID =
63 PiMatchFieldId.of("hdr.vlan_tag.is_valid");
64 public static final PiMatchFieldId FABRIC_METADATA_IP_PROTO =
65 PiMatchFieldId.of("fabric_metadata.ip_proto");
66 public static final PiMatchFieldId HDR_ETHERNET_DST_ADDR =
67 PiMatchFieldId.of("hdr.ethernet.dst_addr");
68 public static final PiMatchFieldId HDR_ICMP_ICMP_CODE =
69 PiMatchFieldId.of("hdr.icmp.icmp_code");
Yi Tsengbe342052017-11-03 10:21:23 -070070 // Table IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +080071 public static final PiTableId FABRIC_INGRESS_FORWARDING_ACL =
Yi Tseng27b9bc02018-04-12 14:52:40 +080072 PiTableId.of("FabricIngress.forwarding.acl");
Yi Tseng43ee7e82018-04-12 16:37:34 +080073 public static final PiTableId FABRIC_INGRESS_NEXT_HASHED =
Yi Tseng27b9bc02018-04-12 14:52:40 +080074 PiTableId.of("FabricIngress.next.hashed");
Yi Tseng43ee7e82018-04-12 16:37:34 +080075 public static final PiTableId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080076 PiTableId.of("FabricEgress.egress_next.egress_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +080077 public static final PiTableId FABRIC_INGRESS_FORWARDING_MPLS =
Yi Tseng27b9bc02018-04-12 14:52:40 +080078 PiTableId.of("FabricIngress.forwarding.mpls");
Yi Tseng43ee7e82018-04-12 16:37:34 +080079 public static final PiTableId FABRIC_INGRESS_NEXT_MULTICAST =
Yi Tseng27b9bc02018-04-12 14:52:40 +080080 PiTableId.of("FabricIngress.next.multicast");
Yi Tseng43ee7e82018-04-12 16:37:34 +080081 public static final PiTableId FABRIC_INGRESS_FORWARDING_MULTICAST_V4 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080082 PiTableId.of("FabricIngress.forwarding.multicast_v4");
Yi Tseng43ee7e82018-04-12 16:37:34 +080083 public static final PiTableId FABRIC_INGRESS_FORWARDING_MULTICAST_V6 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080084 PiTableId.of("FabricIngress.forwarding.multicast_v6");
Yi Tseng43ee7e82018-04-12 16:37:34 +080085 public static final PiTableId FABRIC_INGRESS_FORWARDING_UNICAST_V4 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080086 PiTableId.of("FabricIngress.forwarding.unicast_v4");
Yi Tseng43ee7e82018-04-12 16:37:34 +080087 public static final PiTableId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER =
Yi Tseng27b9bc02018-04-12 14:52:40 +080088 PiTableId.of("FabricIngress.filtering.fwd_classifier");
Yi Tseng43ee7e82018-04-12 16:37:34 +080089 public static final PiTableId FABRIC_INGRESS_FORWARDING_BRIDGING =
Yi Tseng27b9bc02018-04-12 14:52:40 +080090 PiTableId.of("FabricIngress.forwarding.bridging");
Yi Tseng43ee7e82018-04-12 16:37:34 +080091 public static final PiTableId FABRIC_INGRESS_NEXT_SIMPLE =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080092 PiTableId.of("FabricIngress.next.simple");
Yi Tseng43ee7e82018-04-12 16:37:34 +080093 public static final PiTableId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN =
Yi Tseng27b9bc02018-04-12 14:52:40 +080094 PiTableId.of("FabricIngress.filtering.ingress_port_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +080095 public static final PiTableId FABRIC_INGRESS_FORWARDING_UNICAST_V6 =
Yi Tseng27b9bc02018-04-12 14:52:40 +080096 PiTableId.of("FabricIngress.forwarding.unicast_v6");
Yi Tseng43ee7e82018-04-12 16:37:34 +080097 public static final PiTableId FABRIC_INGRESS_NEXT_VLAN_META =
Yi Tseng20f9e7b2018-05-24 23:27:39 +080098 PiTableId.of("FabricIngress.next.vlan_meta");
Yi Tsengbe342052017-11-03 10:21:23 -070099 // Indirect Counter IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800100 public static final PiCounterId FABRIC_INGRESS_PORT_COUNTERS_CONTROL_EGRESS_PORT_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800101 PiCounterId.of("FabricIngress.port_counters_control.egress_port_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800102 public static final PiCounterId FABRIC_INGRESS_PORT_COUNTERS_CONTROL_INGRESS_PORT_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800103 PiCounterId.of("FabricIngress.port_counters_control.ingress_port_counter");
Yi Tsengbe342052017-11-03 10:21:23 -0700104 // Direct Counter IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800105 public static final PiCounterId FABRIC_INGRESS_FORWARDING_ACL_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800106 PiCounterId.of("FabricIngress.forwarding.acl_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800107 public static final PiCounterId FABRIC_INGRESS_NEXT_MULTICAST_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800108 PiCounterId.of("FabricIngress.next.multicast_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800109 public static final PiCounterId FABRIC_INGRESS_NEXT_VLAN_META_COUNTER =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800110 PiCounterId.of("FabricIngress.next.vlan_meta_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800111 public static final PiCounterId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800112 PiCounterId.of("FabricIngress.filtering.fwd_classifier_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800113 public static final PiCounterId FABRIC_INGRESS_FORWARDING_BRIDGING_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800114 PiCounterId.of("FabricIngress.forwarding.bridging_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800115 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MULTICAST_V6_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800116 PiCounterId.of("FabricIngress.forwarding.multicast_v6_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800117 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MULTICAST_V4_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800118 PiCounterId.of("FabricIngress.forwarding.multicast_v4_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800119 public static final PiCounterId FABRIC_INGRESS_FORWARDING_UNICAST_V6_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800120 PiCounterId.of("FabricIngress.forwarding.unicast_v6_counter");
Yi Tseng47eac892018-07-11 02:17:04 +0800121 public static final PiCounterId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN_COUNTER =
122 PiCounterId.of("FabricEgress.egress_next.egress_vlan_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800123 public static final PiCounterId FABRIC_INGRESS_FORWARDING_UNICAST_V4_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800124 PiCounterId.of("FabricIngress.forwarding.unicast_v4_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800125 public static final PiCounterId FABRIC_INGRESS_NEXT_SIMPLE_COUNTER =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800126 PiCounterId.of("FabricIngress.next.simple_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800127 public static final PiCounterId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800128 PiCounterId.of("FabricIngress.filtering.ingress_port_vlan_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800129 public static final PiCounterId FABRIC_INGRESS_FORWARDING_MPLS_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800130 PiCounterId.of("FabricIngress.forwarding.mpls_counter");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800131 public static final PiCounterId FABRIC_INGRESS_NEXT_HASHED_COUNTER =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800132 PiCounterId.of("FabricIngress.next.hashed_counter");
Yi Tsengbe342052017-11-03 10:21:23 -0700133 // Action IDs
Yi Tseng47eac892018-07-11 02:17:04 +0800134 public static final PiActionId FABRIC_INGRESS_FORWARDING_SEND_TO_CONTROLLER =
135 PiActionId.of("FabricIngress.forwarding.send_to_controller");
136 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V6_SIMPLE =
137 PiActionId.of("FabricIngress.next.mpls_routing_v6_simple");
138 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_BRIDGING =
139 PiActionId.of("FabricIngress.forwarding.set_next_id_bridging");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800140 public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800141 PiActionId.of("FabricIngress.next.set_vlan");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800142 public static final PiActionId FABRIC_EGRESS_PKT_IO_EGRESS_POP_VLAN =
Yi Tseng20f9e7b2018-05-24 23:27:39 +0800143 PiActionId.of("FabricEgress.pkt_io_egress.pop_vlan");
Yi Tseng47eac892018-07-11 02:17:04 +0800144 public static final PiActionId FABRIC_INGRESS_FILTERING_SET_VLAN =
145 PiActionId.of("FabricIngress.filtering.set_vlan");
146 public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_SIMPLE =
147 PiActionId.of("FabricIngress.next.l3_routing_simple");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800148 public static final PiActionId FABRIC_INGRESS_NEXT_SET_MCAST_GROUP =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800149 PiActionId.of("FabricIngress.next.set_mcast_group");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800150 public static final PiActionId FABRIC_INGRESS_FILTERING_PUSH_INTERNAL_VLAN =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800151 PiActionId.of("FabricIngress.filtering.push_internal_vlan");
Yi Tseng47eac892018-07-11 02:17:04 +0800152 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V6_HASHED =
153 PiActionId.of("FabricIngress.next.mpls_routing_v6_hashed");
154 public static final PiActionId FABRIC_INGRESS_FORWARDING_POP_MPLS_AND_NEXT =
155 PiActionId.of("FabricIngress.forwarding.pop_mpls_and_next");
156 public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_HASHED =
157 PiActionId.of("FabricIngress.next.l3_routing_hashed");
158 public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_POP_VLAN =
159 PiActionId.of("FabricEgress.egress_next.pop_vlan");
160 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V4_HASHED =
161 PiActionId.of("FabricIngress.next.mpls_routing_v4_hashed");
162 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_UNICAST_V6 =
163 PiActionId.of("FabricIngress.forwarding.set_next_id_unicast_v6");
164 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_UNICAST_V4 =
165 PiActionId.of("FabricIngress.forwarding.set_next_id_unicast_v4");
166 public static final PiActionId NOP = PiActionId.of("nop");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800167 public static final PiActionId FABRIC_INGRESS_FORWARDING_DROP =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800168 PiActionId.of("FabricIngress.forwarding.drop");
Yi Tseng47eac892018-07-11 02:17:04 +0800169 public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT_SIMPLE =
170 PiActionId.of("FabricIngress.next.output_simple");
171 public static final PiActionId FABRIC_INGRESS_FILTERING_DROP =
172 PiActionId.of("FabricIngress.filtering.drop");
173 public static final PiActionId FABRIC_INGRESS_FILTERING_SET_FORWARDING_TYPE =
174 PiActionId.of("FabricIngress.filtering.set_forwarding_type");
175 public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN_OUTPUT =
176 PiActionId.of("FabricIngress.next.set_vlan_output");
177 public static final PiActionId NO_ACTION = PiActionId.of("NoAction");
178 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_MULTICAST_V6 =
179 PiActionId.of("FabricIngress.forwarding.set_next_id_multicast_v6");
180 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_MULTICAST_V4 =
181 PiActionId.of("FabricIngress.forwarding.set_next_id_multicast_v4");
182 public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V4_SIMPLE =
183 PiActionId.of("FabricIngress.next.mpls_routing_v4_simple");
184 public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_VLAN =
185 PiActionId.of("FabricIngress.next.l3_routing_vlan");
186 public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_ACL =
187 PiActionId.of("FabricIngress.forwarding.set_next_id_acl");
Yi Tsengbe342052017-11-03 10:21:23 -0700188 // Action Param IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800189 public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
190 public static final PiActionParamId PORT_NUM =
Yi Tsengc6844f52017-12-19 11:58:25 -0800191 PiActionParamId.of("port_num");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800192 public static final PiActionParamId LABEL = PiActionParamId.of("label");
193 public static final PiActionParamId SMAC = PiActionParamId.of("smac");
194 public static final PiActionParamId GID = PiActionParamId.of("gid");
195 public static final PiActionParamId NEW_VLAN_ID =
Yi Tsengc6844f52017-12-19 11:58:25 -0800196 PiActionParamId.of("new_vlan_id");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800197 public static final PiActionParamId FWD_TYPE =
Yi Tsengc6844f52017-12-19 11:58:25 -0800198 PiActionParamId.of("fwd_type");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800199 public static final PiActionParamId NEXT_ID = PiActionParamId.of("next_id");
Yi Tsengbe342052017-11-03 10:21:23 -0700200 // Action Profile IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800201 public static final PiActionProfileId FABRIC_INGRESS_NEXT_ECMP_SELECTOR =
Yi Tseng27b9bc02018-04-12 14:52:40 +0800202 PiActionProfileId.of("FabricIngress.next.ecmp_selector");
Yi Tsengbe342052017-11-03 10:21:23 -0700203 // Packet Metadata IDs
Yi Tseng43ee7e82018-04-12 16:37:34 +0800204 public static final PiControlMetadataId INGRESS_PORT =
Yi Tsengc6844f52017-12-19 11:58:25 -0800205 PiControlMetadataId.of("ingress_port");
Yi Tseng43ee7e82018-04-12 16:37:34 +0800206 public static final PiControlMetadataId EGRESS_PORT =
Yi Tsengc6844f52017-12-19 11:58:25 -0800207 PiControlMetadataId.of("egress_port");
Yi Tsengfa4a1c72017-11-03 10:22:38 -0700208 public static final int PORT_BITWIDTH = 9;
Yi Tseng43ee7e82018-04-12 16:37:34 +0800209}