from macros.expression import Implies, Match, ActionList, EQ, GT, NEQ, Action from macros.types import IPAddr, Port from macros.variables import Input, Output, FreeVariable from macros.macro import Invariant, Precedence, Reaction invariants = list() precedences = list() reactions = list() react1 = Reaction( Match([EQ(Input("ip4Src"), IPAddr("10.0.0.3"))]), Implies(Match([ EQ(Input("ip4Src"), IPAddr("10.0.0.1")), ]), ActionList([Action([EQ(Output("port_id_out"), Port(2))])])), Match([EQ(Input("ip4Src"), IPAddr("10.0.0.4"))])) react2 = Reaction( Match([EQ(Input("ip4Src"), IPAddr("10.0.0.3"))]), Implies(Match([ EQ(Input("ip4Src"), IPAddr("10.0.0.2")), ]), ActionList([Action([EQ(Output("port_id_out"), Port(1))])])), Match([EQ(Input("ip4Src"), IPAddr("10.0.0.4"))])) reactions.append(react1) reactions.append(react2) #reactions.append(react)
invariants = list() precedences = list() reactions = list() symbolic_state_var_list = list() sv = StateVar("block", Bool, False) state_var_list.append(sv) ssv = SymbolicStateVar("learnt", IPAddr, Bool, False) symbolic_state_var_list.append(ssv) tt = Invariant( Implies( Match([ EQ(Input("ip4Dst"), FreeVariable("X", "IPAddr")), EQ(Input("learnt", FreeVariable("X", "IPAddr")), Bool(False)) ]), ActionList([Action([EQ(Output("port_id_out"), Port(100))])]))) tt2 = Invariant( Implies( Match([ EQ(Input("ip4Src"), FreeVariable("X", "IPAddr")), ]), ActionList([ Action([ EQ(Output("learnt_out", FreeVariable("X", "IPAddr")), Bool(True)) ]) ]))) react1 = Reaction( Match([
from macros.expression import Implies, Match, ActionList, EQ, GT, NEQ, Action from macros.types import IPAddr, Port from macros.variables import Input, Output, FreeVariable from macros.macro import Invariant, Precedence, Reaction invariants = list() precedences = list() reactions = list() inv0 = Invariant( ActionList([Action([EQ(Input("ip4Src"), IPAddr("127.0.0.3"))])])) inv = Invariant( Implies( Match([ EQ(Input("ip4Src"), IPAddr("10.0.0.1")), ]), ActionList([Action([EQ(Output("ip4Dst_out"), IPAddr("127.0.0.1"))])]))) """ inv3 = Invariant( Implies( Match( [ EQ( Input("ip4Src"), IPAddr("10.0.0.1") ), ] ), ActionList( [
from macros.expression import Implies, Match, ActionList, EQ, GT, NEQ, Action from macros.types import IPAddr, Port, Bool from macros.variables import Input, Output, FreeVariable, StateVar, SymbolicStateVar from macros.macro import Invariant, Precedence, Reaction state_var_list = list() invariants = list() precedences = list() reactions = list() sv = StateVar("block", Bool, False) state_var_list.append(sv) prec1 = Precedence.create( Match([EQ(Input("ip4Src"), IPAddr("10.0.0.2"))]), ActionList([Action([EQ(Output("block_out"), Bool(True))])])) precedences.append(prec1) react1 = Reaction(Match([EQ(Input("ip4Src"), IPAddr("10.0.0.4"))]), ActionList([Action([EQ(Output("block_out"), Bool(True))])]), Match([EQ(Input("ip4Src"), IPAddr("10.0.0.3"))])) react2 = Reaction(Match([EQ(Input("ip4Src"), IPAddr("10.0.0.3"))]), ActionList([Action([EQ(Output("block_out"), Bool(False))])]), Match([EQ(Input("ip4Src"), IPAddr("10.0.0.4"))])) inv = Invariant( Implies( Match([ EQ(Input("ip4Src"), IPAddr("10.0.0.1")), EQ(Input("block"), Bool(False))