Hi Murphy,

when I insert this statement,
learn.spec.append(fms( field=nx.NXM_NX_REG5, load=7 ))

The following error occurs. Is the Syntax ‘load’, I tried,match and output too.


ERROR:core:Exception while handling OpenFlowNexus!ConnectionUp...
Traceback (most recent call last):
  File "/home/mininet/pox2/pox/lib/revent/revent.py", line 231, in 
raiseEventNoErrors
    return self.raiseEvent(event, *args, **kw)
  File "/home/mininet/pox2/pox/lib/revent/revent.py", line 278, in raiseEvent
    rv = event._invoke(handler, *args, **kw)
  File "/home/mininet/pox2/pox/lib/revent/revent.py", line 156, in _invoke
    return handler(self, *args, **kw)
  File "/home/mininet/pox2/pox/misc/cust2.py", line 59, in _handle_ConnectionUp
    learn.spec.append(fms( field=nx.NXM_NX_REG5, load=7 ))
  File "/home/mininet/pox2/pox/openflow/nicira.py", line 1462, in new
    if dst is not None: dst_inst = dst(*dstarg,**dstkw)
  File "/home/mininet/pox2/pox/openflow/nicira.py", line 1306, in __init__
    data = field().pack(omittable = False, header_only = True)
TypeError: 'int' object is not callable
Thanks,
Jayanth 
Graduate Student
USC


On December 8, 2013 at 6:47:22 PM, Murphy McCauley (murphy.mccau...@gmail.com) 
wrote:

On Dec 8, 2013, at 6:18 PM, Jayanth Silesh <jayanthsileshs.for...@gmail.com> 
wrote:  

> Hi Murphy,  
>  
> Question1:  
>  
> The problem is that I need the resubmit command in the flow_entry.  
> Say that there is already an entry in table 2 as  
> in_port=7,….,action= resubmit(,3).  
>  
> Is there a way that from table3, I can use the LEARN msg to ‘append’ an 
> action in the table 2 so that it becomes,  
> in_port=7,…..,action=( load(reg_5=7) ,resubmit(,3))  
>  
> Will the learn action, add an entry or can it modify the existing entry in 
> the table?  

No. However, consider making the entry in table 2:  
in_port==7 : resubmit(table=11), resubmit(table=3)  

By default, have table 11 (a table chosen at random for the example) empty. You 
can use a learn action to learn an entry into it like...  
in_port==7 : load(field=reg5, value=7)  

.. and the result should be what you wanted.  


In the above case, the new table entry uses in_port to match against, but you 
could use a metafield instead if your match conditions are complicated. Picking 
the values 14 and 42 at random, in table 2 you'd have:  
in_port==7 : load(field=reg14, value=42), resubmit(table=11), resubmit(table=3) 
 

In table 11:  
reg14==42 : load(field=reg5, value=7)  

> Question2:  
> Is there a resubmit action on the Nicira extensions for NOX?  

No. There couldn't be. The problem isn't that POX doesn't support this. Open 
vSwitch itself doesn't support this. It's not part of the learn action by 
definition.  

(On top of that, no noxrepo version of NOX supports the learn action at all.)  

> Question3:  
>  
> How do load the register with some value, it’s throwing errors on this. Is 
> the naming convention for reg wrong?  
>  
> learn.spec.append(fms( field=nx.re51, load=7 ))  

As suggested in the last entry of the FAQ, you should post error messages.  

The registers are named like NXM_NX_REGx, and should also be accessible as 
NXM_NX_REG[x]. I think "x" is between 0 and 15 on most or all switches.  


-- Murphy  

> Thanks,  
> Jayanth  
> Graduate Student  
> USC  
>  
>  
>  
> On December 8, 2013 at 3:48:51 PM, Murphy McCauley 
> (murphy.mccau...@gmail.com) wrote:  
>  
>> meta_register_1  

Reply via email to