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

Reply via email to