@Override public TrafficSelector decode(ObjectNode json, CodecContext context) { final JsonCodec<Criterion> criterionCodec = context.codec(Criterion.class); JsonNode criteriaJson = json.get(CRITERIA); TrafficSelector.Builder builder = DefaultTrafficSelector.builder(); if (criteriaJson != null) { IntStream.range(0, criteriaJson.size()) .forEach(i -> builder.add( criterionCodec.decode(get(criteriaJson, i), context))); } return builder.build(); } }
selectorBuilder.add(criterion);
@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()); } }); }
case OCH_SIGID: CircuitSignalID sigId = match.get(MatchField.OCH_SIGID); builder.add(matchLambda(Lambda.ochSignal( lookupGridType(sigId.getGridType()), lookupChannelSpacing(sigId.getChannelSpacing()), sigId.getChannelNumber(), sigId.getSpectralWidth()) case OCH_SIGTYPE: U8 sigType = match.get(MatchField.OCH_SIGTYPE); builder.add(matchOchSignalType(lookupOchSignalType((byte) sigType.getValue()))); break; case EXP_OCH_SIG_ID: try { CircuitSignalID expSigId = match.get(MatchField.EXP_OCH_SIG_ID); builder.add(matchLambda(Lambda.ochSignal( lookupGridType(expSigId.getGridType()), lookupChannelSpacing(expSigId.getChannelSpacing()), expSigId.getChannelNumber(), expSigId.getSpectralWidth()))); try { U8 expOchSigType = match.get(MatchField.EXP_OCH_SIGTYPE); builder.add(matchOchSignalType(lookupOchSignalType((byte) expOchSigType.getValue()))); } catch (NoMappingFoundException e) { log.warn(e.getMessage()); match.get(MatchField.EXP_ODU_SIG_ID).getTslen(), match.get(MatchField.EXP_ODU_SIG_ID).getTsmap()); builder.add(matchOduSignalId(oduSignalId)); break; case EXP_ODU_SIGTYPE: try {
sbuilder.extension(ofdpaMatchVlanVid, deviceId); } else { sbuilder.add(criterion);
sbuilder.add(criterion); });
selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_TCP)); } else if (flowClassifier.protocol().equalsIgnoreCase("UDP")) { selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_UDP)); } else if (flowClassifier.protocol().equalsIgnoreCase("ICMP")) { selector.add(Criteria.matchIPProtocol(IPv4.PROTOCOL_ICMP)); selector.add(Criteria.matchIPProtocol(fiveTuple.protocol()));
sbuilder.add(criterion);
ochPortOduSignalType = ((OchPort) dstPort).signalType(); selectorBuilder.add(Criteria.matchOduSignalType(oduCltPortOduSignalType)); ochPortOduSignalType = ((OchPort) srcPort).signalType(); selectorBuilder.add(Criteria.matchOduSignalType(oduCltPortOduSignalType)); selectorBuilder.add(Criteria.matchOduSignalId(oduSignalId));
TrafficSelector selector = DefaultTrafficSelector.builder() .matchInPort(lp).matchEthDst(MacAddress.BROADCAST) .add(Criteria.matchTunnelId(Long .parseLong(segmentationId.toString()))) .build();
OduSignalType oduCltPortOduSignalType = OduSignalUtils.mappingCltSignalTypeToOduSignalType(intent.getSignalType()); selector.add(Criteria.matchOduSignalType(oduCltPortOduSignalType)); selector = DefaultTrafficSelector.builder(); selector.matchInPort(current.port()); selector.add(Criteria.matchOduSignalType(oduCltPortOduSignalType)); selector.add(Criteria.matchOduSignalId(oduSignalId));
selector.add(filter.key());
Objective.Operation type, IpAddress ipAddress) { TrafficSelector selector = DefaultTrafficSelector.builder() .matchEthDst(dstMac).add(Criteria.matchTunnelId(Long .parseLong(segmentationId.toString()))) .build();
TrafficSelector selector = DefaultTrafficSelector.builder() .matchInPort(tp) .add(Criteria.matchTunnelId(Long .parseLong(segmentationId.toString()))) .matchEthDst(MacAddress.BROADCAST).build();
public static TrafficSelector intersectTrafficSelector(TrafficSelector ts1, TrafficSelector ts2) { TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder(); Set<Criterion.Type> ts1IntersectTs2 = getTypeSet(ts1); ts1IntersectTs2.retainAll(getTypeSet(ts2)); for (Criterion.Type type : ts1IntersectTs2) { Criterion criterion = intersectCriterion(ts1.getCriterion(type), ts2.getCriterion(type)); if (criterion == null) { return null; } else { selectorBuilder.add(criterion); } } Set<Criterion.Type> ts1MinusTs2 = getTypeSet(ts1); ts1MinusTs2.removeAll(getTypeSet(ts2)); for (Criterion.Type type : ts1MinusTs2) { selectorBuilder.add(ts1.getCriterion(type)); } Set<Criterion.Type> ts2MinusTs1 = getTypeSet(ts2); ts2MinusTs1.removeAll(getTypeSet(ts1)); for (Criterion.Type type : ts2MinusTs1) { selectorBuilder.add(ts2.getCriterion(type)); } return selectorBuilder.build(); }
private TrafficSelector buildSelector(Criterion... criteria) { TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder(); for (Criterion c : criteria) { sBuilder.add(c); } return sBuilder.build(); }