[pox-dev] creating new message
adria sole
adriasole at gmail.com
Mon Jul 15 15:08:51 PDT 2013
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" <murphy.mccauley at gmail.com> 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"
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20130716/f5f16ef5/attachment-0002.htm>
More information about the pox-dev
mailing list