1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.mapper;
\r
3 import com.google.common.base.Preconditions;
\r
4 import com.google.common.collect.ImmutableList;
\r
5 import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition;
\r
6 import org.opendaylight.groupbasedpolicy.dto.IndexedTenant;
\r
7 import org.opendaylight.groupbasedpolicy.dto.PolicyInfo;
\r
8 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
\r
9 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter;
\r
10 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager;
\r
11 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
\r
12 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.FlowTable;
\r
13 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.FlowUtils;
\r
14 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
\r
15 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.AllowAction;
\r
16 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.Classifier;
\r
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
\r
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
\r
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
\r
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
\r
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
\r
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Instructions;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3Address;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3AddressBuilder;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Builder;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddress;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddressBuilder;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.Segmentation;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.SegmentationBuilder;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;
\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder;
\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder;
\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstancesBuilder;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceBuilder;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
\r
73 import java.util.ArrayList;
\r
74 import java.util.List;
\r
76 public abstract class MapperUtilsTest {
\r
78 protected static final MacAddress MAC_0 = new MacAddress("00:00:00:00:00:00");
\r
79 protected static final MacAddress MAC_1 = new MacAddress("00:00:00:00:00:01");
\r
80 protected static final MacAddress MAC_2 = new MacAddress("00:00:00:00:00:02");
\r
81 protected static final Ipv4Address IPV4_0 = new Ipv4Address("170.0.0.1");
\r
82 protected static final Ipv4Address IPV4_1 = new Ipv4Address("190.0.0.1");
\r
83 protected static final Ipv4Address IPV4_2 = new Ipv4Address("210.0.0.1");
\r
84 protected static final Ipv6Address IPV6_1 = new Ipv6Address("2000:db80:85a3:08ba:0947:8a2e:3a70:7334");
\r
85 protected static final Ipv6Address IPV6_2 = new Ipv6Address("0947:db80:3a70:7334:85a3:8a2e:2000:08ba");
\r
86 protected static final NodeConnectorId CONNECTOR_0 = new NodeConnectorId("0");
\r
87 protected static final NodeConnectorId CONNECTOR_1 = new NodeConnectorId("1");
\r
88 protected static final NodeConnectorId CONNECTOR_2 = new NodeConnectorId("2");
\r
89 protected static final SubnetId SUBNET_0 = new SubnetId("subnet0");
\r
90 protected static final SubnetId SUBNET_1 = new SubnetId("subnet1");
\r
91 protected static final SubnetId SUBNET_2 = new SubnetId("subnet2");
\r
92 protected static final SubnetId SUBNET_EXT = new SubnetId("externalSubnet");
\r
93 protected static final String IP_PREFIX_32 = "/32";
\r
94 protected static final String IP_PREFIX_128 = "/128";
\r
95 protected static final TenantId TENANT_ID = new TenantId("tenantId");
\r
96 protected static final NodeId NODE_ID = new NodeId("nodeId");
\r
97 protected static final EndpointGroupId ENDPOINT_GROUP_0 = new EndpointGroupId("eg0");
\r
98 protected static final EndpointGroupId ENDPOINT_GROUP_1 = new EndpointGroupId("eg1");
\r
99 protected static final EndpointGroupId ENDPOINT_GROUP_2 = new EndpointGroupId("eg2");
\r
100 protected static final SubnetId NET_DOMAIN_ID = new SubnetId("ndId");
\r
101 protected static final L2BridgeDomainId L2BD_ID = new L2BridgeDomainId("l2bdId");
\r
102 protected static final L2FloodDomainId L2FD_ID = new L2FloodDomainId("l2fdId");
\r
103 protected static final L2FloodDomainId L2_FD_ID_EXT = new L2FloodDomainId("externalL2fdId");
\r
104 protected static final L3ContextId L3C_ID = new L3ContextId("l3cId");
\r
105 protected static final ContractId CONTRACT_ID = new ContractId("contractId");
\r
106 protected static final ContextId CONTEXT_ID = new L3ContextId("ctxId");
\r
107 // Often used strings
\r
108 protected static final String ALLOW = "allow";
\r
109 protected static final String L2 = "L2";
\r
110 protected static final String OPENFLOW = "openflow:";
\r
111 protected static final String DROP_ALL = "dropAll";
\r
112 protected static final String DROP = "drop";
\r
113 protected static final String TCP_SRC = "tcp_src_80";
\r
115 protected Short tableId;
\r
116 protected OfContext ctx;
\r
117 protected OfWriter ofWriter;
\r
118 protected SwitchManager switchManager;
\r
119 protected PolicyManager policyManager;
\r
120 protected EndpointManager endpointManager;
\r
121 protected PolicyInfo policyInfo;
\r
122 protected FlowTable table;
\r
124 protected FlowBuilder buildFlow(FlowId flowId, short tableId, Integer priority, Match match, Instructions instructions) {
\r
125 FlowBuilder flowBuilder = FlowUtils.base(tableId);
\r
126 flowBuilder.setId(flowId)
\r
127 .setPriority(priority)
\r
129 .setInstructions(instructions);
\r
130 return flowBuilder;
\r
133 protected EndpointL3Builder buildL3Endpoint(Ipv4Address natIp, Ipv4Address ip, MacAddress mac, String l2bd) {
\r
134 Preconditions.checkNotNull(natIp);
\r
135 Preconditions.checkNotNull(ip);
\r
136 Preconditions.checkNotNull(mac);
\r
137 EndpointL3Builder endpointL3Builder = new EndpointL3Builder();
\r
138 NatAddressBuilder natAddressBuilder = new NatAddressBuilder();
\r
139 natAddressBuilder.setNatAddress(new IpAddress(new Ipv4Address(natIp)));
\r
140 endpointL3Builder.addAugmentation(NatAddress.class, natAddressBuilder.build());
\r
141 endpointL3Builder.setIpAddress(new IpAddress(ip));
\r
142 endpointL3Builder.setMacAddress(new MacAddress(mac));
\r
143 if (l2bd != null) {
\r
144 endpointL3Builder.setL2Context(new L2BridgeDomainId(l2bd));
\r
146 if(ip.equals(IPV4_0)) {
\r
147 endpointL3Builder.setNetworkContainment(SUBNET_0);
\r
149 else if(ip.equals(IPV4_1)) {
\r
150 endpointL3Builder.setNetworkContainment(SUBNET_1);
\r
152 else if(ip.equals(IPV4_2)) {
\r
153 endpointL3Builder.setNetworkContainment(SUBNET_2);
\r
155 return endpointL3Builder;
\r
158 protected EndpointL3Builder buildL3Endpoint(Ipv6Address natIp, Ipv6Address ip, MacAddress mac, String l2bd) {
\r
159 Preconditions.checkNotNull(natIp);
\r
160 Preconditions.checkNotNull(ip);
\r
161 Preconditions.checkNotNull(mac);
\r
162 EndpointL3Builder endpointL3Builder = new EndpointL3Builder();
\r
163 NatAddressBuilder natAddressBuilder = new NatAddressBuilder();
\r
164 natAddressBuilder.setNatAddress(new IpAddress(new Ipv6Address(natIp)));
\r
165 endpointL3Builder.addAugmentation(NatAddress.class, natAddressBuilder.build());
\r
166 endpointL3Builder.setIpAddress(new IpAddress(ip));
\r
168 endpointL3Builder.setMacAddress(new MacAddress(mac));
\r
169 if (l2bd != null) {
\r
170 endpointL3Builder.setL2Context(new L2BridgeDomainId(l2bd));
\r
172 return endpointL3Builder;
\r
175 public SegmentationBuilder buildSegmentation() {
\r
176 SegmentationBuilder segmentationBuilder = new SegmentationBuilder();
\r
177 segmentationBuilder.setSegmentationId(1);
\r
178 return segmentationBuilder;
\r
181 protected TenantBuilder buildTenant() {
\r
182 TenantBuilder tenantBuilder = new TenantBuilder();
\r
183 tenantBuilder.setId(TENANT_ID);
\r
184 tenantBuilder.setForwardingContext(buildForwardingContext().build());
\r
185 PolicyBuilder policyBuilder = new PolicyBuilder();
\r
186 policyBuilder.setEndpointGroup(getEndpointGroups());
\r
187 policyBuilder.setSubjectFeatureInstances(getSubjectFeatureInstances());
\r
188 tenantBuilder.setPolicy(policyBuilder.build());
\r
189 return tenantBuilder;
\r
192 protected IndexedTenant getTestIndexedTenant() {
\r
193 return new IndexedTenant(buildTenant().build());
\r
196 protected ForwardingContextBuilder buildForwardingContext() {
\r
197 ForwardingContextBuilder forwardingContextBuilder = new ForwardingContextBuilder();
\r
198 forwardingContextBuilder.setL2FloodDomain(getL2FloodDomainList(false));
\r
199 forwardingContextBuilder.setL2BridgeDomain(getL2BridgeDomainList());
\r
200 forwardingContextBuilder.setL3Context(getL3ContextList());
\r
201 forwardingContextBuilder.setSubnet(getSubnetList());
\r
202 return forwardingContextBuilder;
\r
205 protected List<L3Context> getL3ContextList() {
\r
206 List<L3Context> l3Contexts = new ArrayList<>();
\r
207 L3ContextBuilder l3ContextBuilder = new L3ContextBuilder();
\r
208 l3ContextBuilder.setId(L3C_ID);
\r
209 l3Contexts.add(l3ContextBuilder.build());
\r
213 protected List<L2BridgeDomain> getL2BridgeDomainList() {
\r
214 List<L2BridgeDomain> l2BridgeDomains = new ArrayList<>();
\r
215 L2BridgeDomainBuilder l2BridgeDomainBuilder = new L2BridgeDomainBuilder();
\r
216 l2BridgeDomainBuilder.setId(L2BD_ID);
\r
217 l2BridgeDomainBuilder.setParent(L3C_ID);
\r
218 l2BridgeDomains.add(l2BridgeDomainBuilder.build());
\r
219 return l2BridgeDomains;
\r
222 protected List<L2FloodDomain> getL2FloodDomainList(boolean external) {
\r
223 List<L2FloodDomain> l2FloodDomains = new ArrayList<>();
\r
224 L2FloodDomainBuilder l2FloodDomainBuilder = new L2FloodDomainBuilder();
\r
225 l2FloodDomainBuilder.setId(L2FD_ID);
\r
227 l2FloodDomainBuilder.setId(L2_FD_ID_EXT);
\r
229 l2FloodDomainBuilder.setParent(new L2BridgeDomainId(L2BD_ID));
\r
230 l2FloodDomainBuilder.addAugmentation(Segmentation.class, buildSegmentation().build());
\r
231 l2FloodDomains.add(l2FloodDomainBuilder.build());
\r
232 return l2FloodDomains;
\r
235 protected List<L3Address> getL3AddressList(Ipv4Address l3IpAddress, L3ContextId l3ContextId) {
\r
236 List<L3Address> l3Addresses = new ArrayList<>();
\r
237 L3AddressBuilder l3AddressBuilder = new L3AddressBuilder();
\r
238 l3AddressBuilder.setIpAddress(new IpAddress(l3IpAddress));
\r
239 l3AddressBuilder.setL3Context(new L3ContextId(l3ContextId));
\r
240 l3Addresses.add(l3AddressBuilder.build());
\r
241 return l3Addresses;
\r
244 protected List<L3Address> getL3AddressList(Ipv6Address l3IpAddress) {
\r
245 List<L3Address> l3Addresses = new ArrayList<>();
\r
246 L3AddressBuilder l3AddressBuilder = new L3AddressBuilder();
\r
247 l3AddressBuilder.setIpAddress(new IpAddress(l3IpAddress));
\r
248 l3Addresses.add(l3AddressBuilder.build());
\r
249 return l3Addresses;
\r
252 protected OfOverlayContextBuilder getOfOverlayContext(NodeConnectorId connector) {
\r
253 OfOverlayContextBuilder ofOverlayContextBuilder = new OfOverlayContextBuilder();
\r
254 ofOverlayContextBuilder.setNodeConnectorId(connector);
\r
255 ofOverlayContextBuilder.setNodeId(NODE_ID);
\r
256 return ofOverlayContextBuilder;
\r
259 protected EndpointBuilder buildEndpoint(Ipv4Address l3IpAddress, MacAddress mac, NodeConnectorId connector) {
\r
260 EndpointBuilder endpointBuilder = new EndpointBuilder();
\r
261 endpointBuilder.setTenant(TENANT_ID);
\r
262 endpointBuilder.setL3Address(getL3AddressList(l3IpAddress, L3C_ID));
\r
263 endpointBuilder.setMacAddress(new MacAddress(mac));
\r
264 endpointBuilder.setL2Context(new L2BridgeDomainId(L2BD_ID));
\r
265 endpointBuilder.setEndpointGroup(ENDPOINT_GROUP_0);
\r
266 endpointBuilder.addAugmentation(OfOverlayContext.class, getOfOverlayContext(connector).build());
\r
267 if(l3IpAddress.equals(IPV4_0)) {
\r
268 endpointBuilder.setNetworkContainment(SUBNET_0);
\r
270 else if(l3IpAddress.equals(IPV4_1)) {
\r
271 endpointBuilder.setNetworkContainment(SUBNET_1);
\r
273 else if(l3IpAddress.equals(IPV4_2)) {
\r
274 endpointBuilder.setNetworkContainment(SUBNET_2);
\r
276 return endpointBuilder;
\r
279 protected EndpointBuilder buildEndpoint(Ipv6Address l3IpAddress, MacAddress mac, NodeConnectorId connector) {
\r
280 EndpointBuilder endpointBuilder = new EndpointBuilder();
\r
281 endpointBuilder.setTenant(TENANT_ID);
\r
282 endpointBuilder.setL3Address(getL3AddressList(l3IpAddress));
\r
283 endpointBuilder.setMacAddress(new MacAddress(mac));
\r
284 endpointBuilder.setL2Context(new L2BridgeDomainId(L2BD_ID));
\r
285 endpointBuilder.setEndpointGroup(ENDPOINT_GROUP_0);
\r
286 endpointBuilder.addAugmentation(OfOverlayContext.class, getOfOverlayContext(connector).build());
\r
287 endpointBuilder.setNetworkContainment(NET_DOMAIN_ID);
\r
288 return endpointBuilder;
\r
291 public List<EndpointGroup> getEndpointGroups() {
\r
292 return ImmutableList.of(
\r
293 new EndpointGroupBuilder().setId(ENDPOINT_GROUP_0)
\r
294 .setNetworkDomain(SUBNET_0)
\r
295 .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder()
\r
296 .setName(new SelectorName("cns1")).setContract(ImmutableList.of(CONTRACT_ID)).build()))
\r
298 new EndpointGroupBuilder().setId(ENDPOINT_GROUP_1)
\r
299 .setNetworkDomain(SUBNET_1)
\r
300 .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder()
\r
301 .setName(new SelectorName("pns1")).setContract(ImmutableList.of(CONTRACT_ID)).build()))
\r
305 protected SubjectFeatureInstances getSubjectFeatureInstances() {
\r
306 SubjectFeatureInstancesBuilder builder = new SubjectFeatureInstancesBuilder();
\r
307 return builder.setClassifierInstance(ImmutableList.of(new ClassifierInstanceBuilder()
\r
308 .setName(new ClassifierName("tcp_dst_80"))
\r
309 .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId())
\r
310 .setParameterValue(ImmutableList.of(new ParameterValueBuilder().setName(new ParameterName("destport"))
\r
311 .setIntValue(80L) // Endpoint
\r
313 .build(), new ParameterValueBuilder().setName(new ParameterName("proto"))
\r
316 .build(), new ClassifierInstanceBuilder().setName(new ClassifierName(TCP_SRC))
\r
317 .setClassifierDefinitionId(Classifier.L4_CL.getId())
\r
318 .setParameterValue(ImmutableList.of(new ParameterValueBuilder().setName(new ParameterName("sourceport"))
\r
320 .build(), new ParameterValueBuilder().setName(new ParameterName("proto"))
\r
323 .build(), new ClassifierInstanceBuilder().setName(new ClassifierName("ether_type"))
\r
324 .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId())
\r
325 .setParameterValue(ImmutableList.of(new ParameterValueBuilder()
\r
326 .setName(new ParameterName("ethertype"))
\r
327 .setIntValue(FlowUtils.IPv4)
\r
330 .setActionInstance(ImmutableList.of(new ActionInstanceBuilder().setName(new ActionName("allow"))
\r
331 .setActionDefinitionId(new AllowAction().getId())
\r
336 protected List<Subnet> getSubnetList() {
\r
337 return ImmutableList.of(
\r
338 new SubnetBuilder().setId(SUBNET_0)
\r
339 .setParent(L2FD_ID)
\r
340 .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24")))
\r
341 .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1")))
\r
343 new SubnetBuilder().setId(SUBNET_1)
\r
344 .setParent(L2FD_ID)
\r
345 .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24")))
\r
346 .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1")))
\r
348 new SubnetBuilder().setId(SUBNET_2)
\r
349 .setParent(L2BD_ID)
\r
350 .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24")))
\r
351 .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1")))
\r
353 new SubnetBuilder().setId(SUBNET_EXT)
\r
354 .setParent(L2_FD_ID_EXT)
\r
355 .setIpPrefix(new IpPrefix(new Ipv4Prefix("192.168.111.0/24")))
\r