/** * Traffic treatment builder function. * * @param container container need to be pushed. * @return the traffic treatment builder */ public TrafficTreatment.Builder packTrafficTreatment(ExtFlowContainer container) { TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); return treatment; }
private List<Intent> generateIntents(ConnectPoint ingress, ConnectPoint egress) { TrafficSelector.Builder selectorBldr = DefaultTrafficSelector.builder() .matchEthType(Ethernet.TYPE_IPV4); TrafficTreatment treatment = DefaultTrafficTreatment.emptyTreatment(); List<Intent> intents = Lists.newArrayList(); for (long i = 0; i < count; i++) { TrafficSelector selector = selectorBldr .matchEthSrc(MacAddress.valueOf(i + keyOffset)) .build(); intents.add(PointToPointIntent.builder() .appId(appId()) .key(Key.of(i + keyOffset, appId())) .selector(selector) .treatment(treatment) .filteredIngressPoint(new FilteredConnectPoint(ingress)) .filteredEgressPoint(new FilteredConnectPoint(egress)) .build()); keysForInstall.add(Key.of(i + keyOffset, appId())); keysForWithdraw.add(Key.of(i + keyOffset, appId())); } return intents; }
private List<Intent> generateIntents(ConnectPoint ingress, ConnectPoint egress) { TrafficSelector.Builder selectorBldr = DefaultTrafficSelector.builder() .matchEthType(Ethernet.TYPE_IPV4); TrafficTreatment treatment = DefaultTrafficTreatment.emptyTreatment(); List<Intent> intents = Lists.newArrayList(); for (long i = 0; i < count; i++) { TrafficSelector selector = selectorBldr .matchEthSrc(MacAddress.valueOf(i + keyOffset)) .build(); intents.add( PointToPointIntent.builder() .appId(appId()) .key(Key.of(i + keyOffset, appId())) .selector(selector) .treatment(treatment) .filteredIngressPoint(new FilteredConnectPoint(ingress)) .filteredEgressPoint(new FilteredConnectPoint(egress)) .build()); } return intents; }
@Override public void emitPacket(DeviceId deviceId, ByteBuffer data, Optional<TrafficTreatment> treatment) { TrafficTreatment.Builder builder = treatment.map(DefaultTrafficTreatment::builder) .orElse(DefaultTrafficTreatment.builder()); getEdgePoints(deviceId).forEach(p -> packetService.emit(packet(builder, p, data))); }
private TrafficTreatment buildTreatment(Instruction... instructions) { TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); for (Instruction i : instructions) { tBuilder.add(i); } return tBuilder.build(); }
@Override public void emitPacket(ByteBuffer data, Optional<TrafficTreatment> treatment) { checkPermission(PACKET_WRITE); TrafficTreatment.Builder builder = treatment.map(DefaultTrafficTreatment::builder) .orElse(DefaultTrafficTreatment.builder()); getEdgePoints().forEach(p -> packetService.emit(packet(builder, p, data))); }
/** * Storage for a GroupKey or a TrafficTreatment. One of the params * to this constructor must be null. * @param key represents a GroupKey * @param treatment represents flow actions in a dummy group */ public SpringOpenGroup(GroupKey key, TrafficTreatment treatment) { if (key == null) { this.key = new DefaultGroupKey(new byte[]{0}); this.treatment = treatment; this.dummy = true; } else { this.key = key; this.treatment = DefaultTrafficTreatment.builder().build(); this.dummy = false; } }
private void sendPacketOut(DeviceId deviceId, PortNumber portNumber, Ethernet payload) { TrafficTreatment treatment = DefaultTrafficTreatment.builder() .setOutput(portNumber).build(); OutboundPacket packet = new DefaultOutboundPacket(deviceId, treatment, ByteBuffer .wrap(payload .serialize())); packetService.emit(packet); }
@Override public TrafficTreatment decode(ObjectNode json, CodecContext context) { final JsonCodec<Instruction> instructionsCodec = context.codec(Instruction.class); JsonNode instructionsJson = json.get(INSTRUCTIONS); TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder(); if (instructionsJson != null) { IntStream.range(0, instructionsJson.size()) .forEach(i -> builder.add( instructionsCodec.decode(get(instructionsJson, i), context))); } JsonNode clearDeferred = json.get(CLEAR_DEFERRED); if (clearDeferred != null && clearDeferred.asBoolean(false)) { builder.wipeDeferred(); } JsonNode deferredJson = json.get(DEFERRED); if (deferredJson != null) { IntStream.range(0, deferredJson.size()) .forEach(i -> builder.deferred().add( instructionsCodec.decode(get(deferredJson, i), context))); } return builder.build(); } }
private TrafficTreatment buildFailoverTreatment(DeviceId srcDevice, GroupKey groupKey) { Group group = waitForGroup(srcDevice, groupKey); TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); TrafficTreatment trafficTreatment = tBuilder.group(group.id()).build(); return trafficTreatment; }
public static TrafficTreatment unionTrafficTreatment(TrafficTreatment tt1, TrafficTreatment tt2) { TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder(); for (Instruction instruction : tt1.allInstructions()) { treatmentBuilder.add(instruction); } for (Instruction instruction : tt2.allInstructions()) { treatmentBuilder.add(instruction); } return treatmentBuilder.build(); }
private TrafficTreatment buildTreatment(List<OFAction> actions) { DriverHandler driverHandler = getDriver(dpid); TrafficTreatment.Builder builder = DefaultTrafficTreatment.builder(); // If this is a drop rule if (actions.size() == 0) { builder.drop(); return builder.build(); } return FlowEntryBuilder.configureTreatmentBuilder(actions, builder, driverHandler, DeviceId.deviceId(Dpid.uri(dpid))).build(); }
private Collection<FlowRule> reassemblyFlowRule(FlowRule.Builder ruleBuilder, TrafficTreatment tb, Integer transition, Integer forTable) { if (transition != null) { TrafficTreatment.Builder newTraffic = DefaultTrafficTreatment .builder(); tb.allInstructions().forEach(t -> newTraffic.add(t)); newTraffic.transition(transition); ruleBuilder.withTreatment(newTraffic.build()); } else { ruleBuilder.withTreatment(tb); } if (forTable != null) { ruleBuilder.forTable(forTable); } return Collections.singletonList(ruleBuilder.build()); }
private void updateFailoverGroup(PointToPointIntent intent, List<Link> links) { GroupKey groupKey = makeGroupKey(intent.id()); TrafficTreatment.Builder tBuilderIn = DefaultTrafficTreatment.builder(); ConnectPoint src = links.get(0).src(); tBuilderIn.setOutput(src.port()); GroupBucket bucket = DefaultGroupBucket.createFailoverGroupBucket(tBuilderIn.build(), src.port(), null); GroupBuckets addBuckets = new GroupBuckets(Collections.singletonList(bucket)); groupService.addBucketsToGroup(src.deviceId(), groupKey, addBuckets, groupKey, intent.appId()); }
/** * Creates a new failover group with the initial ports of the links * from the primary and backup path. * * @param links links from the primary path * @param backupLinks links from the backup path * @param intent intent from which this call originates */ private void createFailoverTreatmentGroup(List<Link> links, List<Link> backupLinks, PointToPointIntent intent) { List<GroupBucket> buckets = new ArrayList<>(); TrafficTreatment.Builder tBuilderIn = DefaultTrafficTreatment.builder(); ConnectPoint src = links.get(0).src(); tBuilderIn.setOutput(src.port()); TrafficTreatment.Builder tBuilderIn2 = DefaultTrafficTreatment.builder(); ConnectPoint src2 = backupLinks.get(0).src(); tBuilderIn2.setOutput(src2.port()); buckets.add(DefaultGroupBucket.createFailoverGroupBucket(tBuilderIn.build(), src.port(), null)); buckets.add(DefaultGroupBucket.createFailoverGroupBucket(tBuilderIn2.build(), src2.port(), null)); GroupBuckets groupBuckets = new GroupBuckets(buckets); GroupDescription groupDesc = new DefaultGroupDescription(src.deviceId(), Group.Type.FAILOVER, groupBuckets, makeGroupKey(intent.id()), null, intent.appId()); log.trace("adding failover group {}", groupDesc); groupService.addGroup(groupDesc); }
/** * Send packet back to classifier. * * @param context packet context */ private void sendPacket(PacketContext context) { ConnectPoint sourcePoint = context.inPacket().receivedFrom(); TrafficTreatment treatment = DefaultTrafficTreatment.builder().setOutput(PortNumber.TABLE).build(); OutboundPacket packet = new DefaultOutboundPacket(sourcePoint.deviceId(), treatment, context.inPacket() .unparsed()); packetService.emit(packet); log.trace("Sending packet: {}", packet); } }
public void installSfcTunnelReceiveRule(DeviceId deviceId, NshServicePathId nshSpiId, Objective.Operation type) { DriverHandler handler = driverService.createHandler(deviceId); ExtensionSelectorResolver selectorResolver = handler.behaviour(ExtensionSelectorResolver.class); ExtensionSelector nshSpiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SPI.type()); ExtensionSelector nshSiSelector = selectorResolver.getExtensionSelector(NICIRA_MATCH_NSH_SI.type()); try { nshSpiSelector.setPropertyValue("nshSpi", nshSpiId); } catch (Exception e) { log.error("Failed to set extension selector to match Nsh Spi Id for end rule {}", e.getMessage()); } try { nshSiSelector.setPropertyValue("nshSi", NshServiceIndex.of(nshSi)); } catch (Exception e) { log.error("Failed to set extension selector to match Nsh Si Id for end rule {}", e.getMessage()); } TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); selector.extension(nshSpiSelector, deviceId); selector.extension(nshSiSelector, deviceId); TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); treatment.transition(ENCAP_OUTPUT_TABLE); sendSfcRule(selector, treatment, deviceId, type, DEFAULT_FORWARDER_PRIORITY); }
/** * Creates packet_out BDDP for specified output port. * * @param port the port * @return Packet_out message with LLDP data */ private OutboundPacket createOutBoundBddp(Long port) { if (port == null) { return null; } ONOSLLDP lldp = getLinkProbe(port); bddpEth.setSourceMACAddress(context.fingerprint()).setPayload(lldp); return new DefaultOutboundPacket(device.id(), builder().setOutput(portNumber(port)).build(), ByteBuffer.wrap(bddpEth.serialize())); }
protected List<FlowRule> processEthDstOnlyFilter(EthCriterion ethCriterion, ApplicationId applicationId) { TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); selector.matchEthType(Ethernet.TYPE_IPV4); selector.matchEthDst(ethCriterion.mac()); treatment.transition(UNICAST_ROUTING_TABLE); FlowRule rule = DefaultFlowRule.builder() .forDevice(deviceId) .withSelector(selector.build()) .withTreatment(treatment.build()) .withPriority(DEFAULT_PRIORITY) .fromApp(applicationId) .makePermanent() .forTable(TMAC_TABLE).build(); return ImmutableList.<FlowRule>builder().add(rule).build(); }
/** * Creates packet_out LLDP for specified output port. * * @param port the port * @return Packet_out message with LLDP data */ private OutboundPacket createOutBoundLldp(Long port) { if (port == null) { return null; } ONOSLLDP lldp = getLinkProbe(port); ethPacket.setSourceMACAddress(context.fingerprint()).setPayload(lldp); return new DefaultOutboundPacket(device.id(), builder().setOutput(portNumber(port)).build(), ByteBuffer.wrap(ethPacket.serialize())); }