[pox-dev] creating new message
adria sole
adriasole at gmail.com
Tue Jul 16 08:40:27 PDT 2013
I had looked at nicira.py and I hadn't understood very well the code...:
I suppose I have to add my own function in nicira.py like:
class nx_adria (of.ofp_action_vendor_base):
with my own self.stringADRIA
I don't know how to create this message in nicira.py, where are called
_pack_body, _unpack_body,
is there anywhere for seeing a simple example with only one attribute:
self.string (like a message sending a string with hello world).
Ty in advance!
2013/7/16 adria sole <adriasole at gmail.com>
> I simply want to create a message that passes a string to the switch, and
> then I will have to configure openwrt switch for getting this string.
> El 16/07/2013 00:13, "Murphy McCauley" <murphy.mccauley at gmail.com>
> escribió:
>
> 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" <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/53494841/attachment-0001.htm>
More information about the pox-dev
mailing list