コード例 #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
ファイル: 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(
            [
コード例 #3
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))
コード例 #4
0
state_var_list = list()
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(
コード例 #5
0
from macros.expression import Implies, Match, ActionList, EQ, Action, And, NEQ
from macros.macro import Reaction, PrecedenceFactory
from macros.types import IPAddr, Port
from macros.variables import Input, Output

invariants = list()
precedences = list()
reactions = list()
# ip4Src = 10.0.0.3 -> X ( ip4Src = 10.0.0.1 -> port_out =  2)
state_var_list = list()
symbolic_state_var_list = list()
react1 = Reaction(
    Match(
        [
            EQ(
                Input("ip4Src"), IPAddr("10.0.0.3")
            )
        ]
    )
    , Implies(
        Match(

            [
                EQ(
                    Input("ip4Src"),
                    IPAddr("10.0.0.1")
                ),
            ]

        ),
        ActionList(