<div dir="ltr">Thank you Murphy for the information, I solved my error.<div><br></div><div style>Now I am trying to create my own action but I get:</div><div style><br></div><div style><div>ERROR:openflow.of_01:[00-23-20-12-b2-91 1] OpenFlow Error:</div>
<div>[00-23-20-12-b2-91 1] Error: header: </div><div>[00-23-20-12-b2-91 1] Error: version: 1</div><div>[00-23-20-12-b2-91 1] Error: type: 1 (OFPT_ERROR)</div><div>[00-23-20-12-b2-91 1] Error: length: 108</div><div>
[00-23-20-12-b2-91 1] Error: xid: 7825</div><div>[00-23-20-12-b2-91 1] Error: type: OFPET_BAD_ACTION (2)</div><div>[00-23-20-12-b2-91 1] Error: code: OFPBAC_BAD_TYPE (0)</div><div>[00-23-20-12-b2-91 1] Error: datalen: 96</div>
<div><br></div><div style>I created in libopenflow_01.py my:</div><div style><br></div><div style>@openflow_action('OFPAT_SET_COMPTADOR', 12)<br></div><div style>class ofp_action_comptador (ofp_action_base):<br></div>
<div style>...</div><div style>Its code is a copy of class ofp_action_dl_addr (ofp_action_base)<br></div><div style><br></div><div style><br></div><div style>And I try to run in my app:</div><div style>msg.actions.append(of.ofp_action_comptador.set_dst(EthAddr("01:02:03:04:05:06")))<br>
</div><div style><br></div><div style>I think it is because I missed some part of code in another file or in the same libopenflow_01.py, or because I put my own type_val and action_type that are defined somewhere where I cannot find...</div>
<div style><br></div><div style>Do you know where is the mistake? </div><div style><br></div><div style>Thank you in advance,</div><div style><br></div><div style>Adrià</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2013/7/11 adria sole <span dir="ltr"><<a href="mailto:adriasole@gmail.com" target="_blank">adriasole@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Thank you very much for your answer, I have solved my problem, now I will try adding my own action and after that trying to create my own openflow message. <div><br></div><div>Yesterday I looked for the solution through the Wiki and I saw the section <span style="font-family:arial,sans-serif;font-size:13px">"Set Ethernet source or destination address" but I didn't see </span></div>
<table border="0" cellpadding="0" cellspacing="0" style="width:1547px;border-top-left-radius:0px!important;outline:0px!important;min-height:auto!important;padding:0px!important;float:none!important;vertical-align:baseline!important;clear:left;line-height:1.2em!important;border-top-right-radius:0px!important;overflow:visible!important;font-size:13px;border-bottom-right-radius:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;margin:0px!important;border:0px!important;border-bottom-left-radius:0px!important;background-image:none!important">
<tbody style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-size:1em!important;min-height:auto!important"><tr style="font-size:1em!important;line-height:1.2em!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;min-height:auto!important">
<td style="width:1547px;font-size:1em!important;line-height:1.2em!important;padding:0px!important;vertical-align:baseline!important;border:0px!important;overflow:visible!important;border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;float:none!important;min-height:auto!important;outline:0px!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;min-height:auto!important">
<div title="Hint: double-click to select code" style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 0px 0px 0em!important;vertical-align:baseline!important;width:auto!important;font-size:1em!important;min-height:auto!important;white-space:pre-wrap!important">
<div style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;width:auto!important;font-size:1em!important;min-height:auto!important">
<code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important">action </code><code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-weight:bold!important;font-size:1em!important;min-height:auto!important;color:rgb(51,102,153)!important">=</code> <code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important">ofp_action_dl_addr.set_dst(EthAddr(</code><code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important;color:rgb(0,51,102)!important">"01:02:03:04:05:06"</code><code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important">)) :S</code></div>
<div style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;width:auto!important;font-size:1em!important;min-height:auto!important">
<code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important"><br>
</code></div><div style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em 0px 0em!important;vertical-align:baseline!important;width:auto!important;font-size:1em!important;min-height:auto!important">
<code style="border-top-left-radius:0px!important;border-top-right-radius:0px!important;border-bottom-right-radius:0px!important;border-bottom-left-radius:0px!important;background-image:none!important;border:0px!important;float:none!important;min-height:auto!important;line-height:1.2em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1em!important;min-height:auto!important">Ty!</code></div>
</div></td></tr></tbody></table></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/10 Murphy McCauley <span dir="ltr"><<a href="mailto:murphy.mccauley@gmail.com" target="_blank">murphy.mccauley@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There are two problems with your code.<br>
<br>
First, in POX, Ethernet addresses should be instances of EthAddr (and IP addresses should be instances of IPAddr). That is, don't use the raw string "00:00:00:00:00:00" -- use EthAddr("00:00:00:00:00:00").<br>
<br>
Second, if you look up ofp_action_dl_addr in the spec, you'll see that it also has a "type" field which tells whether it's supposed to be rewriting the source or destination address. You haven't specified this. The recommended way of creating a rewrite action is not to create an ofp_action_dl_addr directly, but to use one of the two factory functions -- ofp_action_dl_addr.set_dst() and ofp_action_dl_addr.set_src().<br>
<br>
There's an example of this in the POX wiki in the section "Set Ethernet source or destination address".<br>
<span><font color="#888888"><br>
-- Murphy<br>
</font></span><div><div><br>
On Jul 10, 2013, at 10:07 AM, adria sole wrote:<br>
<br>
> Hi all,<br>
><br>
> I want to add two actions to a packet when a new flow appears, the default one is output (to an indicated port but I want for example adding a second one like:<br>
><br>
><br>
> msg.actions.append(of.ofp_action_dl_addr(dl_addr = "00:00:00:00:00:00"))<br>
><br>
><br>
> But I am getting an error like:<br>
><br>
> ERROR:core:Exception while handling Connection!PacketIn...<br>
> Traceback (most recent call last):<br>
> File "/home/adria/Descargas/pox/pox/lib/revent/revent.py", line 234, in raiseEventNoErrors<br>
> return self.raiseEvent(event, *args, **kw)<br>
> File "/home/adria/Descargas/pox/pox/lib/revent/revent.py", line 281, in raiseEvent<br>
> rv = event._invoke(handler, *args, **kw)<br>
> File "/home/adria/Descargas/pox/pox/lib/revent/revent.py", line 159, in _invoke<br>
> return handler(self, *args, **kw)<br>
> File "/home/adria/Descargas/pox/ext/my_component.py", line 207, in _handle_PacketIn<br>
> self.connection.send(msg)<br>
> File "/home/adria/Descargas/pox/pox/openflow/of_01.py", line 690, in send<br>
> data = data.pack()<br>
> File "/home/adria/Descargas/pox/pox/openflow/libopenflow_01.py", line 2275, in pack<br>
> packed += i.pack()<br>
> File "/home/adria/Descargas/pox/pox/openflow/libopenflow_01.py", line 1746, in pack<br>
> packed += struct.pack("!HH", self.type, len(self))<br>
> error: cannot convert argument to integer<br>
><br>
> What I am doing wrong? I have seen that there is a self.dl_addr in class ofp_action_dl_addr (ofp_action_base): in libopenflow_01.py<br>
><br>
> But I don't understand how is the code executing, how to they pass the parameters?<br>
><br>
> Ty in advance<br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>