mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-16 09:51:38 +02:00
[ONOS-3485] Create arp_op selector and add operation to provifer of
openflow to onos Change-Id: I4dd0a9d7eb66092d7633e288a1fc94ad66eb4810
This commit is contained in:
parent
15653fde24
commit
b40129ae7c
@ -373,6 +373,11 @@ public final class DefaultTrafficSelector implements TrafficSelector {
|
||||
return add(Criteria.matchArpSha(addr));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder matchArpOp(int arpOp) {
|
||||
return add(Criteria.matchArpOp(arpOp));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrafficSelector build() {
|
||||
return new DefaultTrafficSelector(ImmutableSet.copyOf(selector.values()));
|
||||
|
@ -418,6 +418,14 @@ public interface TrafficSelector {
|
||||
*/
|
||||
Builder matchArpSha(MacAddress addr);
|
||||
|
||||
/**
|
||||
* Matches a arp operation type.
|
||||
*
|
||||
* @param arpOp a arp operation type
|
||||
* @return a selection builder
|
||||
*/
|
||||
Builder matchArpOp(int arpOp);
|
||||
|
||||
/**
|
||||
* Builds an immutable traffic selector.
|
||||
*
|
||||
|
@ -708,6 +708,10 @@ public class FlowEntryBuilder {
|
||||
long tunnelId = match.get(MatchField.TUNNEL_ID).getValue();
|
||||
builder.matchTunnelId(tunnelId);
|
||||
break;
|
||||
case ARP_OP:
|
||||
int arpOp = match.get(MatchField.ARP_OP).getOpcode();
|
||||
builder.matchArpOp(arpOp);
|
||||
break;
|
||||
case ARP_SHA:
|
||||
mac = MacAddress.valueOf(match.get(MatchField.ARP_SHA).getLong());
|
||||
builder.matchArpSha(mac);
|
||||
@ -724,7 +728,6 @@ public class FlowEntryBuilder {
|
||||
ip = Ip4Address.valueOf(match.get(MatchField.ARP_TPA).getInt());
|
||||
builder.matchArpTpa(ip);
|
||||
break;
|
||||
case ARP_OP:
|
||||
case MPLS_TC:
|
||||
default:
|
||||
log.warn("Match type {} not yet implemented.", field.id);
|
||||
|
@ -25,6 +25,7 @@ import org.onosproject.net.driver.DriverService;
|
||||
import org.onosproject.net.flow.FlowRule;
|
||||
import org.onosproject.net.flow.TrafficSelector;
|
||||
import org.onosproject.net.flow.criteria.ArpHaCriterion;
|
||||
import org.onosproject.net.flow.criteria.ArpOpCriterion;
|
||||
import org.onosproject.net.flow.criteria.ArpPaCriterion;
|
||||
import org.onosproject.net.flow.criteria.Criterion;
|
||||
import org.onosproject.net.flow.criteria.EthCriterion;
|
||||
@ -59,6 +60,7 @@ import org.projectfloodlight.openflow.protocol.OFFlowDelete;
|
||||
import org.projectfloodlight.openflow.protocol.OFFlowMod;
|
||||
import org.projectfloodlight.openflow.protocol.match.Match;
|
||||
import org.projectfloodlight.openflow.protocol.match.MatchField;
|
||||
import org.projectfloodlight.openflow.types.ArpOpcode;
|
||||
import org.projectfloodlight.openflow.types.CircuitSignalID;
|
||||
import org.projectfloodlight.openflow.types.EthType;
|
||||
import org.projectfloodlight.openflow.types.ICMPv4Code;
|
||||
@ -419,6 +421,11 @@ public abstract class FlowModBuilder {
|
||||
mplsBos.mplsBos() ? OFBooleanValue.TRUE
|
||||
: OFBooleanValue.FALSE);
|
||||
break;
|
||||
case ARP_OP:
|
||||
ArpOpCriterion arpOp = (ArpOpCriterion) c;
|
||||
mBuilder.setExact(MatchField.ARP_OP,
|
||||
ArpOpcode.of(arpOp.arpOp()));
|
||||
break;
|
||||
case ARP_SHA:
|
||||
arpHaCriterion = (ArpHaCriterion) c;
|
||||
mBuilder.setExact(MatchField.ARP_SHA,
|
||||
@ -439,7 +446,6 @@ public abstract class FlowModBuilder {
|
||||
mBuilder.setExact(MatchField.ARP_TPA,
|
||||
IPv4Address.of(arpPaCriterion.ip().toInt()));
|
||||
break;
|
||||
case ARP_OP:
|
||||
case MPLS_TC:
|
||||
case PBB_ISID:
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user