Both applied to master, thanks to everyone for reviews.
On Tue, May 07, 2013 at 05:48:04PM -0700, Ethan Jackson wrote: > Both of these seem fine to me btw. > > Ethan > > On Tue, May 7, 2013 at 12:11 AM, Rajahalme, Jarno (NSN - FI/Espoo) > <jarno.rajaha...@nsn.com> wrote: > > Looks good, thanks :-) > > > > Jarno > > > > On May 7, 2013, at 1:38 , ext Ben Pfaff wrote: > > > >> OpenFlow says that an "output" action to a flow's input port is ordinarily > >> dropped, unless the flow explicitly outputs to OFPP_IN_PORT. We've > >> occasionally been asked to implement some way to avoid this behavior in > >> cases where it is not easily known in advance whether a given port is the > >> input port (so that OFPP_IN_PORT is not easy to use). > >> > >> This commit implements such a feature. With this commit, one may write: > >> actions=load:0->NXM_OF_IN_PORT[],output:123 > >> which will output to port 123 regardless of whether it is the input port. > >> If the input port is important, then one may save and restore it on the > >> stack: > >> actions=push:NXM_OF_IN_PORT[],load:0->NXM_OF_IN_PORT[],output:123, > >> pop:NXM_OF_IN_PORT[] > >> > >> (Sometimes I am asked whether "resubmit" changes the in_port and would > >> therefore interact badly with this feature. It does not. "resubmit" only > >> (optionally) changes the in_port used for the resubmit's flow table lookup. > >> It does not otherwise have any effect on in_port.) > >> > >> Bug #14091. > >> CC: Jarno Rajahalme <jarno.rajaha...@nsn.com> > >> CC: Ronghua Zhang <rzh...@nicira.com> > >> Signed-off-by: Ben Pfaff <b...@nicira.com> > >> --- > >> NEWS | 4 ++++ > >> include/openflow/nicira-ext.h | 2 ++ > >> lib/meta-flow.c | 2 +- > >> tests/ofproto-dpif.at | 5 +++-- > >> 4 files changed, 10 insertions(+), 3 deletions(-) > >> > >> diff --git a/NEWS b/NEWS > >> index 3a7123b..87f9bde 100644 > >> --- a/NEWS > >> +++ b/NEWS > >> @@ -1,5 +1,9 @@ > >> post-v1.11.0 > >> --------------------- > >> + - OpenFlow: > >> + * The "load" and "set_field" actions can now modify the "in_port". > >> (This > >> + allows one to enable output to a flow's input port by setting the > >> + in_port to some unused value, such as OFPP_NONE.) > >> > >> > >> v1.11.0 - xx xxx xxxx > >> diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h > >> index c80ff95..8c9fab1 100644 > >> --- a/include/openflow/nicira-ext.h > >> +++ b/include/openflow/nicira-ext.h > >> @@ -493,6 +493,8 @@ OFP_ASSERT(sizeof(struct nx_action_pop_queue) == 16); > >> * Modifying any of the above fields changes the corresponding packet > >> * header. > >> * > >> + * - NXM_OF_IN_PORT > >> + * > >> * - NXM_NX_REG(idx) for idx in the switch's accepted range. > >> * > >> * - NXM_OF_VLAN_TCI. Modifying this field's value has side effects on > >> the > >> diff --git a/lib/meta-flow.c b/lib/meta-flow.c > >> index 9296faa..a75e526 100644 > >> --- a/lib/meta-flow.c > >> +++ b/lib/meta-flow.c > >> @@ -114,7 +114,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = { > >> MFM_NONE, > >> MFS_OFP_PORT, > >> MFP_NONE, > >> - false, > >> + true, > >> NXM_OF_IN_PORT, "NXM_OF_IN_PORT", > >> OXM_OF_IN_PORT, "OXM_OF_IN_PORT", > >> }, { > >> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at > >> index 2b9df96..1fdbac3 100644 > >> --- a/tests/ofproto-dpif.at > >> +++ b/tests/ofproto-dpif.at > >> @@ -92,18 +92,19 @@ AT_SETUP([ofproto-dpif - output]) > >> OVS_VSWITCHD_START > >> ADD_OF_PORTS([br0], [1], [9], [10], [11], [55], [66], [77], [88]) > >> AT_DATA([flows.txt], [dnl > >> -in_port=1 > >> actions=resubmit:2,resubmit:3,resubmit:4,resubmit:5,resubmit:6,resubmit:7 > >> +in_port=1 > >> actions=resubmit:2,resubmit:3,resubmit:4,resubmit:5,resubmit:6,resubmit:7,resubmit:8 > >> in_port=2 actions=output:9 > >> in_port=3 > >> actions=load:55->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]],load:66->NXM_NX_REG1[[]] > >> in_port=4 > >> actions=output:10,output:NXM_NX_REG0[[]],output:NXM_NX_REG1[[]],output:11 > >> in_port=5 > >> actions=load:77->NXM_NX_REG0[[0..15]],load:88->NXM_NX_REG0[[16..31]] > >> in_port=6 actions=output:NXM_NX_REG0[[0..15]],output:NXM_NX_REG0[[16..31]] > >> in_port=7 actions=load:0x110000ff->NXM_NX_REG0[[]],output:NXM_NX_REG0[[]] > >> +in_port=8 actions=1,9,load:9->NXM_OF_IN_PORT[[]],1,9 > >> ]) > >> AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) > >> AT_CHECK([ovs-appctl ofproto/trace br0 > >> 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)'], > >> [0], [stdout]) > >> AT_CHECK([tail -1 stdout], [0], > >> - [Datapath actions: 9,55,10,55,66,11,77,88 > >> + [Datapath actions: 9,55,10,55,66,11,77,88,9,1 > >> ]) > >> OVS_VSWITCHD_STOP > >> AT_CLEANUP > >> -- > >> 1.7.2.5 > >> > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev