private Optional<Flow> getFlow( BDDPacket pkt, BDDSourceManager bddSourceManager, String hostname, BDD bdd) { if (bdd.isZero()) { return Optional.empty(); } BDD assignment = bdd.fullSatOne(); return Optional.of( pkt.getFlowFromAssignment(assignment) .setTag(getFlowTag()) .setIngressNode(hostname) .setIngressInterface(bddSourceManager.getSourceFromAssignment(assignment).orElse(null)) .build()); }
@Override public Void visitInterfaceLocation(@Nonnull InterfaceLocation interfaceLocation) { flowBuilder .setIngressInterface(null) .setIngressNode(interfaceLocation.getNodeName()) .setIngressVrf( c.getAllInterfaces() .get(interfaceLocation.getInterfaceName()) .getVrf() .getName()); return null; } });
@Override public Void visitInterfaceLinkLocation( @Nonnull InterfaceLinkLocation interfaceLinkLocation) { flowBuilder .setIngressInterface(interfaceLinkLocation.getInterfaceName()) .setIngressNode(interfaceLinkLocation.getNodeName()) .setIngressVrf(null); return null; }
@Override public Void visitInterfaceLocation(@Nonnull InterfaceLocation interfaceLocation) { flowBuilder .setIngressInterface(null) .setIngressNode(interfaceLocation.getNodeName()) .setIngressVrf( interfaceVrf( interfaceLocation.getNodeName(), interfaceLocation.getInterfaceName())); return null; } });
@Override public Void visitInterfaceLinkLocation( @Nonnull InterfaceLinkLocation interfaceLinkLocation) { flowBuilder .setIngressInterface(interfaceLinkLocation.getInterfaceName()) .setIngressNode(interfaceLinkLocation.getNodeName()) .setIngressVrf(null); return null; }
private static Flow createFlow() { Flow.Builder b = new Flow.Builder(); b.setIngressNode("ingressNode"); b.setTag("empty"); return b.build(); }
private static Flow createFlow() { Flow.Builder b = new Flow.Builder(); b.setIngressNode("ingressNode"); b.setTag("empty"); return b.build(); }
private static Flow createFlow() { Flow.Builder b = new Flow.Builder(); b.setIngressNode("ingressNode"); b.setTag("empty"); return b.build(); }
@Test public void testColumnComparatorFlow() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.FLOW, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, Flow.builder().setDstIp(Ip.ZERO).setIngressNode("a").setTag("a").build()); Row r2 = Row.of(col, Flow.builder().setDstIp(Ip.MAX).setIngressNode("a").setTag("a").build()); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testSetFlowStates() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFlowStates(Collections.singleton(FlowState.ESTABLISHED)) .build(); setFlowStates(phc, builder); assertThat(builder.build().getState(), equalTo(FlowState.ESTABLISHED)); }
@Test public void testDefaultPacketLength() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.unconstrained(); setPacketLength(phc, builder); assertThat(builder.build().getPacketLength(), equalTo(DEFAULT_PACKET_LENGTH)); }
@Test public void testTestFilter() { String hostname = _config.getHostname(); Flow flow = Flow.builder().setIngressNode(hostname).setDstIp(IP2).setTag("tag").build(); assertThat( TestFiltersAnswerer.getRow(ACL, flow, _config), allOf( hasColumn(COL_ACTION, equalTo("DENY"), Schema.STRING), hasColumn(COL_FILTER_NAME, equalTo(ACL.getName()), Schema.STRING))); }
@Test public void testSetFragmentOffsets() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFragmentOffsets(IntegerSpace.of(new SubRange(2, 2))) .build(); setFragmentOffsets(phc, builder); assertThat(builder.build().getFragmentOffset(), equalTo(2)); }
private Flow createFlow() { Flow.Builder b = new Flow.Builder(); b.setIngressNode("ingressNode"); b.setTag("empty"); return b.build(); }
private static Flow createFlow(String ipAddrStr) { Flow.Builder b = new Flow.Builder(); b.setIngressNode("ingressNode"); b.setSrcIp(Ip.parse(ipAddrStr)); b.setTag("test"); return b.build(); }
@Before public void setup() { _flow = Flow.builder() .setIngressNode("ingress") .setTag("tag") .setDstIp(Ip.parse("1.1.1.1")) .build(); _describerNoNamesNorMetadata = new IpSpaceDescriber( new AclTracer(_flow, null, ImmutableMap.of(), ImmutableMap.of(), ImmutableMap.of())); }
@Test public void testSetTcpFlags() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setTcpFlags(Collections.singleton(TcpFlagsMatchConditions.ACK_TCP_FLAG)) .build(); setTcpFlags(phc, builder); assertThat(builder.build().getTcpFlagsAck(), equalTo(1)); }
@Test public void testSetEcnValue() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setEcns(IntegerSpace.of(1)).build(); setEcnValue(phc, builder); assertThat(builder.build().getEcn(), equalTo(1)); }
@Test public void testSetSrcPortMultiple() { Builder builder = Flow.builder().setIngressNode("node").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setSrcPorts(IntegerSpace.of(new SubRange(1, 10))).build(); thrown.expect(IllegalArgumentException.class); setSrcPort(phc, builder); }
@Test public void testMatchFlow() { TcpFlags flags = TcpFlags.builder().setUrg(true).setRst(true).build(); TcpFlagsMatchConditions conditions = TcpFlagsMatchConditions.builder().setTcpFlags(flags).setUseUrg(true).build(); assertThat( conditions.match(Flow.builder().setTcpFlagsUrg(1).setIngressNode("n").setTag("t").build()), equalTo(true)); assertThat( conditions.match(Flow.builder().setTcpFlagsUrg(0).setIngressNode("n").setTag("t").build()), equalTo(false)); }