def instantiate(self, var): #print ("my mapping ",self.mapping) if isinstance(var, Input): if var.is_symbolic: return Input(var.name, self.mapping[var.fv]) elif isinstance(var, Output): if var.is_symbolic: return Output(var.name, self.mapping[var.fv]) elif isinstance(var, FreeVariable): return self.mapping[var] return var
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)
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( [
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, 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))
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.255") ) ] ) )
Match( [ EQ( Input("ip4Src"), IPAddr("10.0.0.1") ), ] ), ActionList( [ Action( [ EQ( Output("port_id_out"), Port(2) ) ] ) ] ) ) ) inv2 = Invariant( Implies( Match( [ EQ(