@Override protected Integer featureValueOf(Flow flow) { return flow.getTcpFlagsAck(); } }
private String tcpFlagsStr() { return String.format( " tcpFlags:%d%d%d%d%d%d%d%d", getTcpFlagsAck(), getTcpFlagsEce(), getTcpFlagsUrg(), getTcpFlagsAck(), getTcpFlagsPsh(), getTcpFlagsRst(), getTcpFlagsSyn(), getTcpFlagsFin()); }
public Builder(Flow flow) { _ingressNode = flow._ingressNode; _ingressInterface = flow._ingressInterface; _ingressVrf = flow._ingressVrf; _srcIp = flow._srcIp; _dstIp = flow._dstIp; _srcPort = flow._srcPort; _dstPort = flow._dstPort; _ipProtocol = flow._ipProtocol; _dscp = flow._dscp; _ecn = flow._ecn; _fragmentOffset = flow._fragmentOffset; _icmpType = flow._icmpType; _icmpCode = flow._icmpCode; _packetLength = flow._packetLength; _state = flow._state; _tcpFlagsAck = flow.getTcpFlagsAck(); _tcpFlagsCwr = flow.getTcpFlagsCwr(); _tcpFlagsEce = flow.getTcpFlagsEce(); _tcpFlagsUrg = flow.getTcpFlagsUrg(); _tcpFlagsPsh = flow.getTcpFlagsPsh(); _tcpFlagsRst = flow.getTcpFlagsRst(); _tcpFlagsSyn = flow.getTcpFlagsSyn(); _tcpFlagsFin = flow.getTcpFlagsFin(); _tag = flow._tag; }
@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)); }
/** * Returns {@code true} iff the TCP flags for which matching is enabled match the TCP flags in the * given {@link Flow}. * * <p>Note this function will return {@code true} if no bits are used. */ public boolean match(Flow flow) { return !(_useAck && _tcpFlags.getAck() ^ (flow.getTcpFlagsAck() == 1)) && !(_useCwr && _tcpFlags.getCwr() ^ (flow.getTcpFlagsCwr() == 1)) && !(_useEce && _tcpFlags.getEce() ^ (flow.getTcpFlagsEce() == 1)) && !(_useFin && _tcpFlags.getFin() ^ (flow.getTcpFlagsFin() == 1)) && !(_usePsh && _tcpFlags.getPsh() ^ (flow.getTcpFlagsPsh() == 1)) && !(_useRst && _tcpFlags.getRst() ^ (flow.getTcpFlagsRst() == 1)) && !(_useSyn && _tcpFlags.getSyn() ^ (flow.getTcpFlagsSyn() == 1)) && !(_useUrg && _tcpFlags.getUrg() ^ (flow.getTcpFlagsUrg() == 1)); }