On Fri, Oct 12, 2012 at 10:24:24AM +0900, Isaku Yamahata wrote:
> On Fri, Oct 12, 2012 at 09:04:09AM +0900, Simon Horman wrote:
> > On Thu, Oct 11, 2012 at 10:10:39PM +0900, Isaku Yamahata wrote:
> > > On Thu, Oct 11, 2012 at 11:14:40AM +0900, Simon Horman wrote:
> > > > diff --git a/lib/odp-util.c b/lib/odp-util.c
> > > > index 5a1d31c..5ffbaef 100644
> > > > --- a/lib/odp-util.c
> > > > +++ b/lib/odp-util.c
> > > ...
> > > > @@ -1911,6 +2045,33 @@ commit_vlan_action(const struct flow *flow,
> > > > struct flow *base,
> > > > }
> > > >
> > > > static void
> > > > +commit_mpls_action(const struct flow *flow, struct flow *base,
> > > > + struct ofpbuf *odp_actions)
> > > > +{
> > > > + if (flow->mpls_lse == base->mpls_lse) {
> > > > + return;
> > > > + }
> > >
> > > Not only label value, but also The stack depth needs to be compared.
> >
> > I'm a little confused.
> >
> > This series doesn't track the stack depth as it has an implicit
> > limit of one label.
>
> The following cases for example.
> (I might be wrong because it depends on how flow->mpls_lse is managed.)
>
> outer A, B inner --push_mpls(A)--> outer A, A, B inner
> outer A, B, C inner --pop_mpls(), set_mpls(B)--> outer A, C inner
>
> I'm not sure if the latter case should be allowed with the scope of this
> patch series, though.
I think it should, though I haven't thought about it in depth.
> mpls_lse = 0 value is internally used for special meaning. I suppose 0 is
> also valid label value. But I'm not a MPLS expert.
I also think it is also a valid label.
It would be nice to avoid using it as a special value.
> Need to track mpls stack depth or depth change?
Thanks, I see the problem now. I'll see about modifying the
patch to track depth changes.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev