summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table')
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java48
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java105
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java46
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java97
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java47
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java49
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java113
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java196
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java88
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java211
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java95
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java90
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java20
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java20
14 files changed, 0 insertions, 1225 deletions
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java
deleted file mode 100644
index ebb9ac3b..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ArpService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-
-/**
- * ArpService interface providing the rules in ARP table which is Table(10).
- */
-public interface ArpService {
-
- /**
- * Assemble the arp rules.
- * Match: arp type, vnid and destination ip.
- * Action: set arp_operation, move arp_eth_src to arp_eth_dst, set arp_eth_src,
- * move arp_ip_src to arp_ip_dst, set arp_ip_src, set output port.
- *
- * @param hander DriverHandler
- * @param deviceId Device Id
- * @param dstIP destination ip
- * @param matchVni the vni of the source network (l2vni)
- * @param dstMac destination mac
- * @param type the operation type of the flow rules
- */
- void programArpRules(DriverHandler hander, DeviceId deviceId, IpAddress dstIP,
- SegmentationId matchVni, MacAddress dstMac,
- Objective.Operation type);
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java
deleted file mode 100644
index 69e951a2..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/ClassifierService.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * Applies classifier flows to the device. Classifier table is Table(0).
- */
-public interface ClassifierService {
-
- /**
- * The port rule that message from host matches Table(0) Match: host mac and
- * ingress port Action: set vnid and go to L2Forward Table(50).
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param inPort the ingress port of the host
- * @param srcMac the mac of the host
- * @param appId the application ID of the vtn
- * @param type the operation of the flow
- */
- void programLocalIn(DeviceId deviceId, SegmentationId segmentationId,
- PortNumber inPort, MacAddress srcMac,
- ApplicationId appId, Objective.Operation type);
-
- /**
- * The port rule that message from tunnel Table(0) Match: tunnel port and
- * vnid Action: go to L2Forward Table(50).
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param localTunnelPorts the tunnel pors of the device
- * @param type the operation of the flow
- */
- void programTunnelIn(DeviceId deviceId, SegmentationId segmentationId,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type);
-
- /**
- * Assemble the L3 Classifier table rules which are sended from external port.
- * Match: ipv4 type, ingress port and destination ip.
- * Action: go to DNAT Table(20).
- *
- * @param deviceId Device Id
- * @param inPort external port
- * @param dstIp floating ip
- * @param type the operation type of the flow rules
- */
- void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort,
- IpAddress dstIp,
- Objective.Operation type);
-
- /**
- * Assemble the L3 Classifier table rules which are sended from internal port.
- * Match: ingress port, source mac and destination mac.
- * Action: set vnid and go to L3Forward Table(30).
- *
- * @param deviceId Device Id
- * @param inPort the ingress port of the host
- * @param srcMac source mac
- * @param dstMac destination vm gateway mac
- * @param actionVni the vni of L3 network
- * @param type the operation type of the flow rules
- */
- void programL3InPortClassifierRules(DeviceId deviceId,
- PortNumber inPort, MacAddress srcMac,
- MacAddress dstMac,
- SegmentationId actionVni,
- Objective.Operation type);
-
- /**
- * Assemble the Arp Classifier table rules.
- * Match: arp type and destination ip.
- * Action: set vnid and go to ARP Table(10).
- *
- * @param deviceId Device Id
- * @param dstIp source gateway ip
- * @param actionVni the vni of the source network (l2vni)
- * @param type the operation type of the flow rules
- */
- void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp,
- SegmentationId actionVni,
- Objective.Operation type);
-
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java
deleted file mode 100644
index 88c56288..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/DnatService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * DnatService interface provides the rules in DNAT table which is Table(20) for ovs pipeline.
- * DNAT means Destination Network Address Translation, it is acronym for network terminology.
- * Handle the downward flows.
- */
-public interface DnatService {
-
- /**
- * Assemble the DNAT table rules.
- * Match: ipv4 type and destination ip.
- * Action: set eth_src, set ip_dst, set vnid and goto L3Forward Table(30).
- *
- * @param deviceId Device Id
- * @param dstIp floating ip
- * @param ethSrc floating ip gateway mac
- * @param ipDst destination vm ip
- * @param actionVni the vni of L3 network
- * @param type the operation type of the flow rules
- */
- void programRules(DeviceId deviceId, IpAddress dstIp,
- MacAddress ethSrc, IpAddress ipDst,
- SegmentationId actionVni, Objective.Operation type);
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java
deleted file mode 100644
index cb661f8b..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L2ForwardService.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * Applies L2 flows to the device. L2Forward table is Table(50).
- */
-public interface L2ForwardService {
-
- /**
- * The local broadcast rule that message matches Table(50).
- * Match: broadcast mac and vnid.
- * Action: set output port.
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param inPort the ingress port of the host
- * @param localVmPorts the local ports of the network which connect host
- * @param localTunnelPorts the tunnel pors of the device
- * @param type the operation of the flow
- */
- void programLocalBcastRules(DeviceId deviceId,
- SegmentationId segmentationId,
- PortNumber inPort,
- Iterable<PortNumber> localVmPorts,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type);
-
- /**
- * The tunnel broadcast rule that message matches Table(50).
- * Match: broadcast mac and vnid.
- * Action: output port.
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param localVmPorts the local ports of the network which connect host
- * @param localTunnelPorts the tunnel pors of the device
- * @param type the operation of the flow
- */
- void programTunnelBcastRules(DeviceId deviceId,
- SegmentationId segmentationId,
- Iterable<PortNumber> localVmPorts,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type);
-
- /**
- * The local out rule that message matches Table(50).
- * Match: local host mac and vnid.
- * Action: output local host port.
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param outPort the ingress port of the host
- * @param sourceMac the mac of the host
- * @param type the operation of the flow
- */
- void programLocalOut(DeviceId deviceId, SegmentationId segmentationId,
- PortNumber outPort, MacAddress sourceMac,
- Objective.Operation type);
-
- /**
- * The tunnel out rule that message matches Table(50).
- * Match: host mac and vnid.
- * Action: output tunnel port.
- *
- * @param deviceId Device Id
- * @param segmentationId the vnid of the host belong to
- * @param tunnelOutPort the port of the tunnel
- * @param dstMac the mac of the host
- * @param type the operation of the flow
- * @param ipAddress the ipAddress of the node
- */
- void programTunnelOut(DeviceId deviceId, SegmentationId segmentationId,
- PortNumber tunnelOutPort, MacAddress dstMac,
- Objective.Operation type, IpAddress ipAddress);
-
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java
deleted file mode 100644
index 718253a4..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/L3ForwardService.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * L3ForwardService interface provide the rules in L3Forward table which is Table(30).
- */
-public interface L3ForwardService {
-
- /**
- * Assemble the L3Forward table rules.
- * Match: ipv4 type, vnid and destination ip.
- * Action: set eth_src, set eth_dst, set vnid and goto L2Forward Table(50).
- *
- * @param deviceId Device Id
- * @param l3Vni the vni of L3 network
- * @param dstVmIP destination vm ip
- * @param dstVni the vni of the destination network (l2vni)
- * @param dstVmGwMac destination VM gateway mac
- * @param dstVmMac destination VM mac
- * @param type the operation type of the flow rules
- */
- void programRouteRules(DeviceId deviceId, SegmentationId l3Vni,
- IpAddress dstVmIP, SegmentationId dstVni,
- MacAddress dstVmGwMac, MacAddress dstVmMac,
- Objective.Operation type);
-
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java
deleted file mode 100644
index e57596ed..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/SnatService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtnrsc.SegmentationId;
-
-/**
- * SnatService interface provides the rules in SNAT table which is Table(40) for ovs pipeline.
- * SNAT means Source Network Address Translation, it is acronym for network terminology.
- * Handle the upward flows.
- */
-public interface SnatService {
-
- /**
- * Assemble the SNAT table rules.
- * Match: ipv4 type, vnid and source ip.
- * Action: set eth_src, set eth_dst, set ip_src, set vnid and goto L2Forward Table(50).
- *
- * @param deviceId Device Id
- * @param matchVni the vni of L3 network
- * @param srcIP source ip
- * @param ethDst external gateway mac
- * @param ethSrc external port mac
- * @param ipSrc floating ip
- * @param actionVni external network VNI
- * @param type the operation type of the flow rules
- */
- void programRules(DeviceId deviceId, SegmentationId matchVni,
- IpAddress srcIP, MacAddress ethDst,
- MacAddress ethSrc, IpAddress ipSrc,
- SegmentationId actionVni, Objective.Operation type);
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java
deleted file mode 100644
index 574d15a7..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ArpServiceImpl.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.EthType.EtherType;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.ArpService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * ArpTable class providing the rules in ARP table.
- */
-public class ArpServiceImpl implements ArpService {
- private final Logger log = getLogger(getClass());
-
- private static final int ARP_PRIORITY = 0xffff;
- private static final short ARP_RESPONSE = 0x2;
- private static final EtherType ARP_TYPE = EtherType.ARP;
-
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
-
- /**
- * Construct a ArpServiceImpl object.
- *
- * @param appId the application id of vtn
- */
- public ArpServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- }
-
- @Override
- public void programArpRules(DriverHandler hander, DeviceId deviceId,
- IpAddress dstIP, SegmentationId srcVni,
- MacAddress dstMac, Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(ARP_TYPE.ethType().toShort())
- .matchArpTpa(Ip4Address.valueOf(dstIP.toString()))
- .matchTunnelId(Long.parseLong(srcVni.segmentationId())).build();
-
- ExtensionTreatmentResolver resolver = hander
- .behaviour(ExtensionTreatmentResolver.class);
- ExtensionTreatment ethSrcToDst = resolver
- .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
- .NICIRA_MOV_ETH_SRC_TO_DST.type());
- ExtensionTreatment arpShaToTha = resolver
- .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
- .NICIRA_MOV_ARP_SHA_TO_THA.type());
- ExtensionTreatment arpSpaToTpa = resolver
- .getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes
- .NICIRA_MOV_ARP_SPA_TO_TPA.type());
- TrafficTreatment treatment = DefaultTrafficTreatment.builder()
- .extension(ethSrcToDst, deviceId)
- .setEthSrc(dstMac).setArpOp(ARP_RESPONSE)
- .extension(arpShaToTha, deviceId)
- .extension(arpSpaToTpa, deviceId)
- .setArpSha(dstMac).setArpSpa(dstIP)
- .setOutput(PortNumber.IN_PORT).build();
-
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(ARP_PRIORITY);
-
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("PrivateArpRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("PrivateArpRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java
deleted file mode 100644
index 512a1559..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/ClassifierServiceImpl.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.EthType.EtherType;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.ClassifierService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Sets;
-
-/**
- * Provides implementation of ClassifierService.
- */
-public class ClassifierServiceImpl implements ClassifierService {
- private final Logger log = getLogger(getClass());
-
- private static final EtherType ETH_TYPE = EtherType.ARP;
- private static final int ARP_CLASSIFIER_PRIORITY = 60000;
- private static final int L3_CLASSIFIER_PRIORITY = 0xffff;
- private static final int L2_CLASSIFIER_PRIORITY = 50000;
-
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
-
- /**
- * Constructor.
- *
- * @param appId the application id of vtn
- */
- public ClassifierServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- }
-
- @Override
- public void programLocalIn(DeviceId deviceId,
- SegmentationId segmentationId, PortNumber inPort,
- MacAddress srcMac, ApplicationId appid,
- Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchInPort(inPort).matchEthSrc(srcMac).build();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
- treatment.add(Instructions
- .modTunnelId(Long.parseLong(segmentationId.toString())));
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).makePermanent()
- .withFlag(Flag.SPECIFIC).withPriority(L2_CLASSIFIER_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("programLocalIn-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("programLocalIn-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-
- @Override
- public void programTunnelIn(DeviceId deviceId,
- SegmentationId segmentationId,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type) {
- if (localTunnelPorts == null) {
- log.info("No tunnel port in device");
- return;
- }
- Sets.newHashSet(localTunnelPorts).stream().forEach(tp -> {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchInPort(tp).add(Criteria.matchTunnelId(Long
- .parseLong(segmentationId.toString())))
- .build();
-
- TrafficTreatment treatment = DefaultTrafficTreatment.builder()
- .build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).makePermanent().withFlag(Flag.SPECIFIC)
- .withPriority(L2_CLASSIFIER_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("programTunnelIn-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("programTunnelIn-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- });
- }
-
- @Override
- public void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort,
- IpAddress dstIp,
- Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(Ethernet.TYPE_IPV4).matchInPort(inPort)
- .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build();
- TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(L3_CLASSIFIER_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("L3ExToInClassifierRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("L3ExToInClassifierRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-
- @Override
- public void programL3InPortClassifierRules(DeviceId deviceId, PortNumber inPort,
- MacAddress srcMac, MacAddress dstMac,
- SegmentationId actionVni,
- Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchInPort(inPort).matchEthSrc(srcMac).matchEthDst(dstMac)
- .build();
- TrafficTreatment treatment = DefaultTrafficTreatment.builder()
- .setTunnelId(Long.parseLong(actionVni.segmentationId())).build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(L3_CLASSIFIER_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("L3InternalClassifierRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("L3InternalClassifierRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-
- @Override
- public void programArpClassifierRules(DeviceId deviceId, IpAddress dstIp,
- SegmentationId actionVni,
- Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(ETH_TYPE.ethType().toShort())
- .matchArpTpa(Ip4Address.valueOf(dstIp.toString()))
- .build();
- TrafficTreatment treatment = DefaultTrafficTreatment.builder()
- .setTunnelId(Long.parseLong(actionVni.segmentationId()))
- .build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(ARP_CLASSIFIER_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("ArpClassifierRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("ArpClassifierRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java
deleted file mode 100644
index 7b8d42fa..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/DnatServiceImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.DnatService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * Provides implementation of DnatService.
- */
-public class DnatServiceImpl implements DnatService {
- private final Logger log = getLogger(getClass());
-
- private static final int DNAT_PRIORITY = 0xffff;
- private static final int PREFIX_LENGTH = 32;
-
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
-
- /**
- * Construct a DnatServiceImpl object.
- *
- * @param appId the application id of vtn
- */
- public DnatServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- }
-
- @Override
- public void programRules(DeviceId deviceId, IpAddress dstIp,
- MacAddress ethSrc, IpAddress ipDst,
- SegmentationId actionVni, Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(Ethernet.TYPE_IPV4)
- .matchIPDst(IpPrefix.valueOf(dstIp, PREFIX_LENGTH)).build();
-
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
- treatment.setEthSrc(ethSrc).setIpDst(ipDst)
- .setTunnelId(Long.parseLong(actionVni.segmentationId()));
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(DNAT_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("RouteRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("RouteRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java
deleted file mode 100644
index 3581cf6e..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L2ForwardServiceImpl.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.DefaultGroupId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.TrafficTreatment.Builder;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.ExtensionTreatment;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.L2ForwardService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-import com.google.common.collect.Sets;
-
-/**
- * Provides implementation of L2ForwardService.
- */
-public final class L2ForwardServiceImpl implements L2ForwardService {
- private final Logger log = getLogger(getClass());
-
- private static final int MAC_PRIORITY = 0xffff;
- public static final Integer GROUP_ID = 1;
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
- private final DriverService driverService;
- /**
- * Constructor.
- *
- * @param appId the application id of vtn
- */
- public L2ForwardServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- this.driverService = serviceDirectory.get(DriverService.class);
- }
-
- @Override
- public void programLocalBcastRules(DeviceId deviceId,
- SegmentationId segmentationId,
- PortNumber inPort,
- Iterable<PortNumber> localVmPorts,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type) {
- if (localVmPorts == null || localTunnelPorts == null) {
- log.info("No other host port and tunnel in the device");
- return;
- }
- Sets.newHashSet(localVmPorts).stream().forEach(lp -> {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchInPort(lp).matchEthDst(MacAddress.BROADCAST)
- .add(Criteria.matchTunnelId(Long
- .parseLong(segmentationId.toString())))
- .build();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment
- .builder();
- boolean flag = false;
- for (PortNumber outPort : localVmPorts) {
- flag = true;
- if (outPort != lp) {
- treatment.setOutput(outPort);
- }
- }
- if (type.equals(Objective.Operation.REMOVE) && inPort == lp) {
- flag = false;
- }
- treatment.group(new DefaultGroupId(GROUP_ID));
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).makePermanent()
- .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY);
- if (flag) {
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- });
- }
-
- @Override
- public void programTunnelBcastRules(DeviceId deviceId,
- SegmentationId segmentationId,
- Iterable<PortNumber> localVmPorts,
- Iterable<PortNumber> localTunnelPorts,
- Objective.Operation type) {
- if (localVmPorts == null || localTunnelPorts == null) {
- log.info("No other host port or tunnel ports in the device");
- return;
- }
- Sets.newHashSet(localTunnelPorts).stream().forEach(tp -> {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchInPort(tp)
- .add(Criteria.matchTunnelId(Long
- .parseLong(segmentationId.toString())))
- .matchEthDst(MacAddress.BROADCAST).build();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment
- .builder();
-
- for (PortNumber outPort : localVmPorts) {
- treatment.setOutput(outPort);
- }
-
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).makePermanent()
- .withFlag(Flag.SPECIFIC).withPriority(MAC_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- if (Sets.newHashSet(localVmPorts).size() == 0) {
- flowObjectiveService.forward(deviceId, objective.remove());
- } else {
- flowObjectiveService.forward(deviceId, objective.add());
- }
- } else {
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- });
- }
-
- @Override
- public void programLocalOut(DeviceId deviceId,
- SegmentationId segmentationId,
- PortNumber outPort, MacAddress sourceMac,
- Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchTunnelId(Long.parseLong(segmentationId.toString()))
- .matchEthDst(sourceMac).build();
- TrafficTreatment treatment = DefaultTrafficTreatment.builder()
- .setOutput(outPort).build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(MAC_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- flowObjectiveService.forward(deviceId, objective.remove());
- }
-
- }
-
- @Override
- public void programTunnelOut(DeviceId deviceId,
- SegmentationId segmentationId,
- PortNumber tunnelOutPort, MacAddress dstMac,
- Objective.Operation type, IpAddress ipAddress) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long
- .parseLong(segmentationId.toString())))
- .build();
-
- DriverHandler handler = driverService.createHandler(deviceId);
- ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class);
- ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
- try {
- treatment.setPropertyValue("tunnelDst", Ip4Address.valueOf(ipAddress.toString()));
- } catch (Exception e) {
- log.error("Failed to get extension instruction to set tunnel dst {}", deviceId);
- }
-
- Builder builder = DefaultTrafficTreatment.builder();
- builder.extension(treatment, deviceId)
- .setOutput(tunnelOutPort).build();
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(builder.build()).withSelector(selector)
- .fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(MAC_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- flowObjectiveService.forward(deviceId, objective.remove());
- }
-
- }
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java
deleted file mode 100644
index cf97e76d..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/L3ForwardServiceImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.net.flowobjective.Objective.Operation;
-import org.onosproject.vtn.table.L3ForwardService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * Provides implementation of L3ForwardService.
- */
-public class L3ForwardServiceImpl implements L3ForwardService {
- private final Logger log = getLogger(getClass());
-
- private static final int L3FWD_PRIORITY = 0xffff;
- private static final short IP_TYPE = Ethernet.TYPE_IPV4;
- private static final int PREFIX_LENGTH = 32;
-
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
-
- /**
- * Construct a L3ForwardServiceImpl object.
- *
- * @param appId the application id of vtn
- */
- public L3ForwardServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- }
-
- @Override
- public void programRouteRules(DeviceId deviceId, SegmentationId l3Vni,
- IpAddress dstVmIP, SegmentationId dstVni,
- MacAddress dstVmGwMac, MacAddress dstVmMac,
- Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(IP_TYPE)
- .matchTunnelId(Long.parseLong(l3Vni.segmentationId()))
- .matchIPDst(IpPrefix.valueOf(dstVmIP, PREFIX_LENGTH)).build();
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
- treatment.setEthSrc(dstVmGwMac)
- .setEthDst(dstVmMac)
- .add(Instructions.modTunnelId(Long.parseLong(dstVni
- .segmentationId())));
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(L3FWD_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("RouteRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("RouteRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java
deleted file mode 100644
index 0f090954..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/SnatServiceImpl.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtn.table.impl;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.osgi.ServiceDirectory;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flowobjective.DefaultForwardingObjective;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
-import org.onosproject.net.flowobjective.ForwardingObjective;
-import org.onosproject.net.flowobjective.ForwardingObjective.Flag;
-import org.onosproject.net.flowobjective.Objective;
-import org.onosproject.vtn.table.SnatService;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.slf4j.Logger;
-
-/**
- * Provides implementation of SnatService.
- */
-public class SnatServiceImpl implements SnatService {
- private final Logger log = getLogger(getClass());
-
- private static final int SNAT_PRIORITY = 0xffff;
- private static final int PREFIC_LENGTH = 32;
-
- private final FlowObjectiveService flowObjectiveService;
- private final ApplicationId appId;
-
- /**
- * Construct a SnatServiceImpl object.
- *
- * @param appId the application id of vtn
- */
- public SnatServiceImpl(ApplicationId appId) {
- this.appId = checkNotNull(appId, "ApplicationId can not be null");
- ServiceDirectory serviceDirectory = new DefaultServiceDirectory();
- this.flowObjectiveService = serviceDirectory.get(FlowObjectiveService.class);
- }
-
- @Override
- public void programRules(DeviceId deviceId, SegmentationId matchVni,
- IpAddress srcIP, MacAddress ethDst,
- MacAddress ethSrc, IpAddress ipSrc,
- SegmentationId actionVni, Objective.Operation type) {
- TrafficSelector selector = DefaultTrafficSelector.builder()
- .matchEthType(Ethernet.TYPE_IPV4)
- .matchTunnelId(Long.parseLong(matchVni.segmentationId()))
- .matchIPSrc(IpPrefix.valueOf(srcIP, PREFIC_LENGTH)).build();
-
- TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
- treatment.setEthDst(ethDst).setEthSrc(ethSrc).setIpSrc(ipSrc)
- .setTunnelId(Long.parseLong(actionVni.segmentationId()));
- ForwardingObjective.Builder objective = DefaultForwardingObjective
- .builder().withTreatment(treatment.build())
- .withSelector(selector).fromApp(appId).withFlag(Flag.SPECIFIC)
- .withPriority(SNAT_PRIORITY);
- if (type.equals(Objective.Operation.ADD)) {
- log.debug("RouteRules-->ADD");
- flowObjectiveService.forward(deviceId, objective.add());
- } else {
- log.debug("RouteRules-->REMOVE");
- flowObjectiveService.forward(deviceId, objective.remove());
- }
- }
-}
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java
deleted file mode 100644
index fd2e18e5..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.table.impl;
diff --git a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java b/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java
deleted file mode 100644
index cf53c966..00000000
--- a/framework/src/onos/apps/vtn/vtnmgr/src/main/java/org/onosproject/vtn/table/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * VTN application that applies configuration and flows to the device.
- */
-package org.onosproject.vtn.table;