コード例 #1
0
ファイル: Discover.py プロジェクト: zbernhardtme/BAC0
    def whois_router_to_network(self, network=None, *, destination=None):
        # build a request
        try:
            request = WhoIsRouterToNetwork()
            if network:
                request.wirtnNetwork = int(network)
            if destination:
                request.pduDestination = Address(destination)
                self._log.debug("WhoIsRouterToNetwork Destination : {}".format(
                    destination))
            else:
                request.pduDestination = LocalBroadcast()
        except:
            self._log.error("WhoIsRouterToNetwork : invalid arguments")
            return
        iocb = IOCB((self.this_application.nsap.local_adapter,
                     request))  # make an IOCB
        iocb.set_timeout(2)
        deferred(self.this_application.nse.request_io, iocb)
        iocb.wait()

        try:
            self.init_routing_table(str(
                self.this_application.nse._iartn.pop()))
        except IndexError:
            pass
コード例 #2
0
ファイル: test_net_1.py プロジェクト: zoopp/bacpypes
    def test_04(self):
        """Test broadcast for a router to the network it is on."""
        if _debug: TestWhoIsRouterToNetwork._debug("test_02")

        # create a network
        tnet = TNetwork()

        # request router to network 1 on network 1, no response
        tnet.td.start_state.doc("4-1-0") \
            .send(WhoIsRouterToNetwork(1,
                destination=LocalBroadcast(),
                )).doc("4-1-1") \
            .timeout(3).doc("4-1-2") \
            .success()

        tnet.sniffer1.start_state.success()

        # nothing received on network 2
        tnet.sniffer2.start_state.doc("4-2-0") \
            .timeout(3).doc("4-2-1") \
            .success()

        tnet.sniffer3.start_state.success()

        # run the group
        tnet.run()
コード例 #3
0
ファイル: test_net_1.py プロジェクト: zoopp/bacpypes
    def test_02(self):
        """Test broadcast for existing router."""
        if _debug: TestWhoIsRouterToNetwork._debug("test_02")

        # create a network
        tnet = TNetwork()

        # all start states are successful
        tnet.td.start_state.doc("2-1-0") \
            .send(WhoIsRouterToNetwork(2,
                destination=LocalBroadcast(),
                )).doc("2-1-1") \
            .receive(IAmRouterToNetwork,
                iartnNetworkList=[2],
                ).doc("2-1-2") \
            .success()

        tnet.sniffer1.start_state.success()

        # nothing received on network 2
        tnet.sniffer2.start_state.doc("2-2-0") \
            .timeout(3).doc("2-2-1") \
            .success()

        tnet.sniffer3.start_state.success()

        # run the group
        tnet.run()
コード例 #4
0
    def do_wirtn(self, args):
        """wirtn <addr> [ <net> ]"""
        args = args.split()
        if _debug: WhoIsRouterConsoleCmd._debug("do_irt %r", args)

        # build a request
        try:
            request = WhoIsRouterToNetwork()
            request.pduDestination = Address(args[0])
            if (len(args) > 1):
                request.wirtnNetwork = int(args[1])
        except:
            print "invalid arguments"
            return

        # give it to the application
        this_application.request(this_application.nsap.adapters[0], request)
コード例 #5
0
ファイル: WhoIsRouter.py プロジェクト: matthewhelt/bacpypes
    def do_wirtn(self, args):
        """wirtn <addr> [ <net> ]"""
        args = args.split()
        if _debug: WhoIsRouterConsoleCmd._debug("do_irt %r", args)

        # build a request
        try:
            request = WhoIsRouterToNetwork()
            request.pduDestination = Address(args[0])
            if (len(args) > 1):
                request.wirtnNetwork = int(args[1])
        except:
            print "invalid arguments"
            return

        # give it to the application
        this_application.request(this_application.nsap.adapters[0], request)
コード例 #6
0
    def do_wirtn(self, args):
        """
        wirtn [ <addr> ] [ <net> ]

        Send a Who-Is-Router-To-Network message.  If <addr> is not specified
        the message is locally broadcast.
        """
        args = args.split()
        if _debug: DiscoverConsoleCmd._debug("do_wirtn %r", args)

        # build a request
        try:
            request = WhoIsRouterToNetwork()
            if not args:
                request.pduDestination = LocalBroadcast()
            elif args[0].isdigit():
                request.pduDestination = LocalBroadcast()
                request.wirtnNetwork = int(args[0])
            else:
                request.pduDestination = Address(args[0])
                if (len(args) > 1):
                    request.wirtnNetwork = int(args[1])
        except:
            print("invalid arguments")
            return

        # give it to the network service element
        this_application.nse.request(this_application.nsap.local_adapter,
                                     request)

        # sleep for responses
        time.sleep(3.0)
コード例 #7
0
ファイル: Discover.py プロジェクト: sheanmassey/BAC0
    def whois_router_to_network(self, args=None):
        # build a request
        try:
            request = WhoIsRouterToNetwork()
            if not args:
                request.pduDestination = LocalBroadcast()
            elif args[0].isdigit():
                request.pduDestination = LocalBroadcast()
                request.wirtnNetwork = int(args[0])
            else:
                request.pduDestination = Address(args[0])
                if len(args) > 1:
                    request.wirtnNetwork = int(args[1])
        except:
            self._log.error("WhoIsRouterToNetwork : invalid arguments")
            return
        iocb = IOCB((self.this_application.nsap.local_adapter,
                     request))  # make an IOCB
        iocb.set_timeout(2)
        deferred(self.this_application.nse.request_io, iocb)
        iocb.wait()

        try:
            self.init_routing_table(str(
                self.this_application.nse._iartn.pop()))
        except IndexError:
            pass
コード例 #8
0
ファイル: test_codec.py プロジェクト: zoopp/bacpypes
    def test_who_is_router_to_network(self):
        """Test the Result encoding and decoding."""
        if _debug: TestNPDUCodec._debug("test_who_is_router_to_network")

        # Request successful
        pdu_bytes = xtob('01.80'  # version, network layer message
                         '00 0001'  # message type and network
                         )

        self.request(WhoIsRouterToNetwork(1))
        self.indication(pduData=pdu_bytes)

        self.response(PDU(pdu_bytes))
        self.confirmation(WhoIsRouterToNetwork, wirtnNetwork=1)
コード例 #9
0
ファイル: test_net_1.py プロジェクト: zoopp/bacpypes
    def test_01(self):
        """Test broadcast for any router."""
        if _debug: TestWhoIsRouterToNetwork._debug("test_01")

        # create a network
        tnet = TNetwork()

        # test device sends request, sees response
        tnet.td.start_state.doc("1-1-0") \
            .send(WhoIsRouterToNetwork(
                destination=LocalBroadcast(),
                )).doc("1-1-1") \
            .receive(IAmRouterToNetwork,
                iartnNetworkList=[2, 3],
                ).doc("1-1-2") \
            .success()

        # sniffer on network 1 sees the request and the response
        tnet.sniffer1.start_state.doc("1-2-0") \
            .receive(PDU,
                pduData=xtob('01.80'        # version, network layer
                    '00'                    # message type, no network
                    )
                ).doc("1-2-1") \
            .receive(PDU,
                pduData=xtob('01.80'        # version, network layer
                    '01 0002 0003'          # message type and network list
                    )
                ).doc("1-2-2") \
            .success()

        # nothing received on network 2
        tnet.sniffer2.start_state.doc("1-3-0") \
            .timeout(3).doc("1-3-1") \
            .success()

        # nothing received on network 3
        tnet.sniffer3.start_state.doc("1-4-0") \
            .timeout(3).doc("1-4-1") \
            .success()

        # run the group
        tnet.run()
コード例 #10
0
ファイル: test_net_4.py プロジェクト: zoopp/bacpypes
    def test_01(self):
        """Test broadcast for any router."""
        if _debug: TestWhoIsRouterToNetwork._debug("test_01")

        # create a network
        tnet = TNetwork()

        # test device sends request
        s111 = tnet.td.start_state.doc("1-1-0") \
            .send(WhoIsRouterToNetwork(
                destination=LocalBroadcast(),
                )).doc("1-1-1")

        # test device sees both responses
        both = s111 \
            .receive(IAmRouterToNetwork,
                iartnNetworkList=[1],
                ).doc("1-1-2-a") \
            .receive(IAmRouterToNetwork,
                iartnNetworkList=[3],
                ).doc("1-1-2-b") \

        # allow the two packets in either order
        s111.receive(IAmRouterToNetwork,
                iartnNetworkList=[3],
                ).doc("1-1-2-c") \
            .receive(IAmRouterToNetwork,
                iartnNetworkList=[1],
                next_state=both).doc("1-1-2-d") \

        # fail if anything is received after both packets
        both.timeout(3).doc("1-1-3") \
            .success()

        # short circuit the snifferse
        tnet.sniffer1.start_state.success()
        tnet.sniffer2.start_state.success()
        tnet.sniffer3.start_state.success()

        # run the group
        tnet.run()
コード例 #11
0
ファイル: test_net_1.py プロジェクト: zoopp/bacpypes
    def test_03(self):
        """Test broadcast for a non-existent router."""
        if _debug: TestWhoIsRouterToNetwork._debug("test_03")

        # create a network
        tnet = TNetwork()

        # send request, receive nothing back
        tnet.td.start_state.doc("3-1-0") \
            .send(WhoIsRouterToNetwork(4,
                destination=LocalBroadcast(),
                )).doc("3-1-1") \
            .timeout(3).doc("3-1-2") \
            .success()

        # sniffer on network 1 sees the request
        tnet.sniffer1.start_state.doc("3-2-0") \
            .receive(PDU,
                pduData=xtob('01.80'        # version, network layer
                    '00 0004'               # message type and network
                    )
                ).doc("3-2-1") \
            .success()

        # sniffer on network 2 sees request forwarded by router
        tnet.sniffer2.start_state.doc("3-3-0") \
            .receive(PDU,
                pduData=xtob('01.88'        # version, network layer, routed
                    '0001 01 01'            # snet/slen/sadr
                    '00 0004'               # message type and network
                    ),
                ).doc("3-3-1") \
            .success()

        tnet.sniffer3.start_state.success()

        # run the group
        tnet.run()