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