Thank you for your support Fujimoto I wanted to send an OFPBarrierRequest because my intention was to have a point where my Python code waits.
For example, I wanted to send messages to the switch to disable all ports, and in the end, I send the BarrierRequest to ensure that all ports are down before continuing. This is my current code: # Stage 1 -> Disable all switching ports for ofp_port in ports: if 0 <= ofp_port.port_no < ofp.OFPP_MAX: datapath.send_msg( ofp_parser.OFPPortMod( datapath=datapath, port_no=ofp_port.port_no, hw_addr=ofp_port.hw_addr, config=ofp.OFPPC_PORT_DOWN, mask=ofp.OFPPC_PORT_DOWN, advertise=0 ) ) ctrl_send_msg(ofp_parser.OFPBarrierRequest(datapath), reply_cls=ofp_parser.OFPBarrierReply) Am I doing this right? Carlos Ferreira On 16 October 2017 at 03:19, Fujimoto Satoshi <satoshi.fujimo...@gmail.com> wrote: > Hi, Carlos > > I think you've called api.send_msg() correctly, > however, when you call api.send_msg(), the controller sends an > OFPBarrierRequest in this function: > https://github.com/osrg/ryu/blob/master/ryu/app/ofctl/service.py#L141-L142 > > After this, the controller will receive an OFPBarrierReply and inspect it in > this function: > https://github.com/osrg/ryu/blob/master/ryu/app/ofctl/service.py#L145 > > This function will be called when it received OFPBarrierReplies. > > So, >> >> api.send_msg(myRyuApp, >> ofp_parser.OFPBarrierRequest(datapath),reply_cls=ofp_parser.OFPBarrierReply) > > this will sends two OFPBarrierRequests, and the controller will receive two > replies. > Then, the controller will mistake which packet should be inspected, and > error occurs. > > In the other words, I think you don't need to make and send an > OFPBarrierRequest by yourself, > because api.send_msg() will take care of the consistency of message order by > using OFPBarrierRequests. > Or, is there a reason why you have to manage it? > > Thanks, > Fujimoto > > > On 2017年10月14日 02:15, Carlos Ferreira wrote: >> >> Update: >> >> I noticed that the call to api.send_msg with a Barrier Message wasn't >> blocking at all. >> It was blocking in the next call for an OFPFlowMod. >> >> But I still receive the "unknown barrier xid 103043043" at the logs. >> What is going on? Is my application really waiting for the Barrier >> Message Reply before advancing? >> >> Carlos >> >> On 13 October 2017 at 17:12, Carlos Ferreira <carlosmf...@gmail.com> >> wrote: >>> >>> Hello >>> >>> I'm trying to use the Ryu synchrounous API to send and wait for the >>> execution of a Barrier message. >>> >>> I'm using the same implementation presented in: >>> >>> http://ryu.readthedocs.io/en/latest/app/ofctl.html#ryu.app.ofctl.api.send_msg >>> >>> For some reason unknown to me, calling >>> >>> "api.send_msg(myRyuApp, ofp_parser.OFPBarrierRequest(datapath), >>> reply_cls=ofp_parser.OFPBarrierReply)" >>> >>> will lock and not return, while at the console, a "unknown barrier xid >>> 103043043" will be printed. >>> >>> Am I calling api.send_msg correctly? >>> >>> Thank you for the assistance >>> Carlos Ferreira >> >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> Ryu-devel mailing list >> Ryu-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/ryu-devel > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel