I don't entirely understand what you're doing, but if it can be done with a 
regular (though nonstandard) message, I'd be surprised if it couldn't be done 
with a vendor message.

-- Murphy

On Jul 15, 2013, at 3:08 PM, adria sole wrote:

> I want to add a global counter which will be the sum of specific flows. I 
> want to create a new message when a new switch is connected to notify other 
> switches that a new global counter has to be created (and pass the dpid for 
> identifying this new global counter). I will look at vendor messages 
> tomorrow, can I create this new message with this extension?
> 
> Thank you very much!
> 
> El 16/07/2013 00:00, "Murphy McCauley" <[email protected]> escribió:
> The code expects the message type identifiers to be contiguous.  In your 
> case, it looks like you're creating 23 and 24 but there's no 22.  Renumbering 
> your messages to be 22 and 23 may fix the problem.
> 
> However, you should think about whether you have a good reason for creating 
> new non-standard message types.  OpenFlow has an extension mechanism in the 
> form of vendor messages, and POX has some support for integrating vendor 
> messages without hacking up libopenflow itself (this is used for implementing 
> the Nicira/OVS extensions in nicira.py).
> 
> -- Murphy
> 
> On Jul 15, 2013, at 8:42 AM, adria sole wrote:
> 
> > I try to add a message similar to barrier request/reply, but when I add my 
> > code I get this error:
> >
> > I can't find where is the error, I think it is because of number 23 and 24 
> > I have put to my adria messages...
> >
> > Ty in advance!
> >
> > POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.
> > Traceback (most recent call last):
> >   File "./pox.py", line 44, in <module>
> >     from pox.boot import boot
> >   File "/home/adria/Descargas/pox/pox/boot.py", line 57, in <module>
> >     import pox.openflow.of_01
> >   File "/home/adria/Descargas/pox/pox/openflow/of_01.py", line 43, in 
> > <module>
> >     unpackers = make_type_to_unpacker_table()
> >   File "/home/adria/Descargas/pox/pox/openflow/util.py", line 31, in 
> > make_type_to_unpacker_table
> >     r = [of._message_type_to_class[i].unpack_new for i in range(0, top)]
> > KeyError: 22
> >
> > In libopenflow_01 I have added:
> > @openflow_s_message("OFPT_ADRIA_REPLY", 23,
> >     reply_to="ofp_adria_request")
> > class ofp_adria_reply (ofp_header):
> >   /*Here same code as Barrier*/
> >
> > @openflow_c_message("OFPT_ADRIA_REQUEST", 24,
> >     request_for="ofp_adria_reply")
> > class ofp_adria_request (ofp_header):
> >    /*Here same code as Barrier*/
> >
> > In __init__.py I have added:
> > class OpenFlowNexus (EventMixin):
> >   _eventMixin_events = set([
> >     ...
> >     AdriaIn,
> >     ...
> >   ])
> >
> > class AdriaIn (Event):
> >   /*Same code as barrier In*/
> >
> > In of_01.py:
> >   handlerMap = {
> >     ...
> >     of.OFTP_ADRIA_REPLY : handle_ADRIA,
> >     ...
> >   }
> >
> >   def handle_ADRIA (con, msg):
> >     e = con.ofnexus.raiseEventNoErrors(AdriaIn, con, msg)
> >     if e is None or e.halt != True:
> >       con.raiseEventNoErrors(AdriaIn, con, msg)
> >
> > In my_component.py (which I run with pox.py):
> >   when I want on code inside a def of class LearningSwitch (object)::
> >      adriamsg = of.ofp_adria_request()
> >      self.connection.send(adriamsg)
> >
> >   In class LearningSwitch (object):
> >     def _handle_AdriaIn (self, event):
> >     print "ADRIA: rebut un adria"
> 

Reply via email to