Committed by
Gerrit Code Review
[ONOS-3473] Add the implementation of method
programL3ExPortClassifierRules which assemble the L3 Classifier table rules sended from external port. Change-Id: I0d7975fa810792483869aa5977cc03cb868c0323
Showing
1 changed file
with
21 additions
and
4 deletions
| ... | @@ -20,7 +20,9 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -20,7 +20,9 @@ import static org.slf4j.LoggerFactory.getLogger; |
| 20 | 20 | ||
| 21 | import org.onlab.osgi.DefaultServiceDirectory; | 21 | import org.onlab.osgi.DefaultServiceDirectory; |
| 22 | import org.onlab.osgi.ServiceDirectory; | 22 | import org.onlab.osgi.ServiceDirectory; |
| 23 | +import org.onlab.packet.Ethernet; | ||
| 23 | import org.onlab.packet.IpAddress; | 24 | import org.onlab.packet.IpAddress; |
| 25 | +import org.onlab.packet.IpPrefix; | ||
| 24 | import org.onlab.packet.MacAddress; | 26 | import org.onlab.packet.MacAddress; |
| 25 | import org.onosproject.core.ApplicationId; | 27 | import org.onosproject.core.ApplicationId; |
| 26 | import org.onosproject.net.DeviceId; | 28 | import org.onosproject.net.DeviceId; |
| ... | @@ -49,6 +51,7 @@ import com.google.common.collect.Sets; | ... | @@ -49,6 +51,7 @@ import com.google.common.collect.Sets; |
| 49 | public class ClassifierServiceImpl implements ClassifierService { | 51 | public class ClassifierServiceImpl implements ClassifierService { |
| 50 | private final Logger log = getLogger(getClass()); | 52 | private final Logger log = getLogger(getClass()); |
| 51 | 53 | ||
| 54 | + private static final int L3_CLAFFIFIER_PRIORITY = 0xffff; | ||
| 52 | private static final int L2_CLAFFIFIER_PRIORITY = 50000; | 55 | private static final int L2_CLAFFIFIER_PRIORITY = 50000; |
| 53 | 56 | ||
| 54 | private final FlowObjectiveService flowObjectiveService; | 57 | private final FlowObjectiveService flowObjectiveService; |
| ... | @@ -120,10 +123,24 @@ public class ClassifierServiceImpl implements ClassifierService { | ... | @@ -120,10 +123,24 @@ public class ClassifierServiceImpl implements ClassifierService { |
| 120 | } | 123 | } |
| 121 | 124 | ||
| 122 | @Override | 125 | @Override |
| 123 | - public void programL3ExPortClassifierRules(DeviceId deviceId, | 126 | + public void programL3ExPortClassifierRules(DeviceId deviceId, PortNumber inPort, |
| 124 | - PortNumber exPort, | 127 | + IpAddress dstIp, |
| 125 | - IpAddress fIp, Operation type) { | 128 | + Objective.Operation type) { |
| 126 | - // TODO Auto-generated method stub | 129 | + TrafficSelector selector = DefaultTrafficSelector.builder() |
| 130 | + .matchEthType(Ethernet.TYPE_IPV4).matchInPort(inPort) | ||
| 131 | + .matchIPDst(IpPrefix.valueOf(dstIp, 32)).build(); | ||
| 132 | + TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); | ||
| 133 | + ForwardingObjective.Builder objective = DefaultForwardingObjective | ||
| 134 | + .builder().withTreatment(treatment).withSelector(selector) | ||
| 135 | + .fromApp(appId).withFlag(Flag.SPECIFIC) | ||
| 136 | + .withPriority(L3_CLAFFIFIER_PRIORITY); | ||
| 137 | + if (type.equals(Objective.Operation.ADD)) { | ||
| 138 | + log.debug("L3ExToInClassifierRules-->ADD"); | ||
| 139 | + flowObjectiveService.forward(deviceId, objective.add()); | ||
| 140 | + } else { | ||
| 141 | + log.debug("L3ExToInClassifierRules-->REMOVE"); | ||
| 142 | + flowObjectiveService.forward(deviceId, objective.remove()); | ||
| 143 | + } | ||
| 127 | } | 144 | } |
| 128 | 145 | ||
| 129 | @Override | 146 | @Override | ... | ... |
-
Please register or login to post a comment