コード例 #1
0
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)
コード例 #2
0
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([
コード例 #3
0
ファイル: instances.py プロジェクト: bbiiggppiigg/symbolic
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(
            [
コード例 #4
0
ファイル: static.py プロジェクト: bbiiggppiigg/symbolic
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))