As described in the POX manual and the OVS documentation, the actions available for learned entries are very limited: output and load. Resubmit is not an option. So the simple answer to your question is that you can't do this.
Instead, think of learning as just creating tables of data. Then use non-learned entries to look up values in the "data" tables. By looking up values into meta registers and stringing together multiple resubmits, you get a lot of flexibility, but it may take some thinking to structure your rules correctly. For example, a learning switch might have a table 0 with the following pseudo-entry: <Wildcard> : learn(table=2, match=dst_eth==current_src_eth, action=load(field=meta_register_1, value=current_in_port)), resubmit(table=2), resubmit(table=1) And table 1 might be: meta_register_1==1 : output(port=1) meta_register_1==2 : enqueue(port=2, queue=42) meta_register_1==0 : flood() If you got a packet from source 01:02:03:0a:0b:0c on port 2, the learn action in table 0 would create a rule in table 2 like: dst_eth==01:02:03:0a:0b:0c : load(field=meta_register_1, value=2) .. or something like that. (Sorry; I didn't check my work, but hopefully that'll give you the idea.) -- Murphy On Dec 8, 2013, at 3:25 PM, Jayanth Silesh <jayanthsileshs.for...@gmail.com> wrote: > Hello, > > I am trying to insert a resubmit action from a LEARN module. > > learn = nx.nx_action_learn(table_id=1,hard_timeout=10) > fms = nx.flow_mod_spec.new # Just abbreviating this > learn.spec.append(fms( field=nx.NXM_OF_ETH_DST, match=nx.NXM_OF_ETH_DST )) > learn.spec.append(fms( field=nx.NXM_OF_ETH_SRC, match=nx.NXM_OF_ETH_SRC )) > > **** WHAT IS THE CORRECT SYNTAX FOR RESUBMIT IN LEARN ******** > learn.spec.append(fms( field=nx.nx_action_resubmit(table = 10), > output=nx.resubmit_table )) > > msg1.actions.append(learn) > msg1.actions.append(nx.nx_action_resubmit.resubmit_table(table = 10)) > event.connection.send(msg1) > > > Thank you so much in advance. > Jayanth > Graduate Student > USC > >