Example #1
0
def shared_inputs(policy1, policy2):
    """Try to find packet in input of policy1 and ingress of policy2."""
    p, pp, qq = Consts("p pp qq", Packet)
    o, n = Ints("o n")

    solv = Solver()
    solv.add(input(policy1, p, pp, o))
    solv.add(ingress(policy2, p, qq, n))

    if solv.check() == unsat:
        return None
    else:
        return solv.model(), (p, pp, qq), HEADER_INDEX
Example #2
0
def shared_io(topo, policy1, policy2):
    """Try to find output of policy1 in the inputs of policy2."""
    p, pp, q, qq = Consts("p pp q qq", Packet)
    o = Int("o")

    solv = Solver()
    solv.add(output(policy1, p, pp))
    solv.add(transfer(topo, pp, q))
    solv.add(input(policy2, q, qq, o))

    if solv.check() == unsat:
        return None
    else:
        return solv.model(), (p, pp, q, qq), HEADER_INDEX