Hi,

I think, it seems can be realized by "ofp_event.EventOFPStateChange".
I've done a quick & dirty hack for this purpose.I hope this will help.

sw_register.py
---------------------------------
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller import handler
from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib import dpid as dpid_lib

class Register(app_manager.RyuApp):

    def __init__(self):
        super(Register, self).__init__()
        self.sw_list = {}

    @set_ev_cls(ofp_event.EventOFPStateChange,
                [handler.MAIN_DISPATCHER, handler.DEAD_DISPATCHER])
    def dispacher_change(self, ev):
        assert ev.datapath is not None
        dp = ev.datapath
        if ev.state == handler.MAIN_DISPATCHER:
            self.sw_list[dp.id] = dp
            msg = 'Join SW.'
        elif ev.state == handler.DEAD_DISPATCHER:
            ret = self.sw_list.pop(dp.id, None)
            if ret is None:
                msg = 'Leave unknown SW.'
            else:
                msg = 'Leave SW.'
        self.logger.info('dpid=%s : %s %s', dpid_lib.dpid_to_str(dp.id), msg, 
self.sw_list)
---------------------------------

$ ryu-manager sw_register.py 
loading app sw_register.py
loading app ryu.controller.ofp_handler
instantiating app sw_register.py of Register
instantiating app ryu.controller.ofp_handler of OFPHandler

<SW startup>

dpid=0000000000000002 : Join SW. {2: <ryu.controller.controller.Datapath object 
at 0x7f7298f2b7d0>}
dpid=0000000000000001 : Join SW. {1: <ryu.controller.controller.Datapath object 
at 0x7f7298f2be10>, 2: <ryu.controller.controller.Datapath object at 
0x7f7298f2b7d0>}

<SW stopped>

dpid=0000000000000002 : Leave SW. {1: <ryu.controller.controller.Datapath 
object at 0x7f7298f2be10>}
dpid=0000000000000001 : Leave SW. {}



On 2014年11月27日 15:34, Weiyang Mo wrote:
> Hi 
> 
> Is there any simple way to get all the Datapath instances (e.g. a list?) that 
> I can send to a specific one. For example I have two switches dpid=1 and 
> dpid=2, I receiver packet_in from dpid=1 and wants to do something on dpid2.
> 
> @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
> def _packet_in_handler(self, ev):
>     ev.msg.datapath.id == 1  True
>     #I want send some msg to dpid 2, How can I access dpid instance? 
> 
> Thank you very much.
> 
> William
> 
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
> 

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to