builder.addCondition(criterion); emptyCondition.set(false); }); switch (encap.encapType()) { case VLAN: builder.addCondition(selector.getCriterion(Criterion.Type.VLAN_VID)); emptyCondition.set(false); break; case MPLS: builder.addCondition(selector.getCriterion(Criterion.Type.MPLS_LABEL)); emptyCondition.set(false); break; .filter(criterion -> !criterion.type().equals(Criterion.Type.IN_PORT)) .forEach(criterion -> { builder.addCondition(criterion); emptyCondition.set(false); }); .filter(criterion -> !criterion.type().equals(Criterion.Type.IN_PORT)) .forEach(criterion -> { builder.addCondition(criterion); emptyCondition.set(false); });
private void createFilteringObjective(boolean install, Interface intf) { VlanId assignedVlan = (egressVlan().equals(VlanId.NONE)) ? VlanId.vlanId(ASSIGNED_VLAN) : egressVlan(); FilteringObjective.Builder fob = DefaultFilteringObjective.builder(); // first add filter for the interface fob.withKey(Criteria.matchInPort(intf.connectPoint().port())) .addCondition(Criteria.matchEthDst(intf.mac())) .addCondition(Criteria.matchVlanId(intf.vlan())); fob.withPriority(PRIORITY_OFFSET); if (intf.vlan() == VlanId.NONE) { TrafficTreatment tt = DefaultTrafficTreatment.builder() .pushVlan().setVlanId(assignedVlan).build(); fob.withMeta(tt); } fob.permit().fromApp(routerAppId); sendFilteringObjective(install, fob, intf); if (controlPlaneConnectPoint != null) { // then add the same mac/vlan filters for control-plane connect point fob.withKey(Criteria.matchInPort(controlPlaneConnectPoint.port())); sendFilteringObjective(install, fob, intf); } }
private void createMcastFilteringObjective(boolean install, Interface intf) { VlanId assignedVlan = (egressVlan().equals(VlanId.NONE)) ? VlanId.vlanId(ASSIGNED_VLAN) : egressVlan(); FilteringObjective.Builder fob = DefaultFilteringObjective.builder(); // first add filter for the interface fob.withKey(Criteria.matchInPort(intf.connectPoint().port())) .addCondition(Criteria.matchEthDstMasked(MacAddress.IPV4_MULTICAST, MacAddress.IPV4_MULTICAST_MASK)) .addCondition(Criteria.matchVlanId(ingressVlan())); fob.withPriority(PRIORITY_OFFSET); TrafficTreatment tt = DefaultTrafficTreatment.builder() .pushVlan().setVlanId(assignedVlan).build(); fob.withMeta(tt); fob.permit().fromApp(routerAppId); sendFilteringObjective(install, fob, intf); }