diff mbox

[ovs-dev] ofproto-dpif: Log warning when ct action or its variants are not supported.

Message ID 20161031213350.GD16705@ovn.org
State Accepted
Headers show

Commit Message

Ben Pfaff Oct. 31, 2016, 9:33 p.m. UTC
On Mon, Oct 31, 2016 at 02:16:05PM -0700, Joe Stringer wrote:
> On 31 October 2016 at 13:23, Ben Pfaff <blp@ovn.org> wrote:
> > Some datapaths do not support the ct action, and others support only a
> > subset of its features.  Until now, it has been difficult to tell why a
> > particular action is being rejected.  This commit should make it clearer.
> >
> > Reported-by: Kevin Lin <kevinlin@berkeley.edu>
> > Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
> > Signed-off-by: Ben Pfaff <blp@ovn.org>
> 
> Thanks, no doubt this will save a bunch of people a bunch of
> confusion. It still doesn't directly state that "Your kernel module
> may be out of date", but it's more clear than just OpenFlow hexdumps
> telling you "OFPBAC". Maybe it should either say this, or this should
> be mentioned in the FAQ.
> 
> Acked-by: Joe Stringer <joe@ovn.org>

You're right, this can be better.

How about like this?

--8<--------------------------cut here-------------------------->8--

From: Ben Pfaff <blp@ovn.org>
Date: Mon, 31 Oct 2016 14:33:13 -0700
Subject: [PATCH] ofproto-dpif: Log warning when ct action or its variants are
 not supported.

Some datapaths do not support the ct action, and others support only a
subset of its features.  Until now, it has been difficult to tell why a
particular action is being rejected.  This commit should make it clearer.

Reported-by: Kevin Lin <kevinlin@berkeley.edu>
Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
Signed-off-by: Ben Pfaff <blp@ovn.org>
---
 ofproto/ofproto-dpif.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Joe Stringer Nov. 1, 2016, 12:23 a.m. UTC | #1
On 31 October 2016 at 14:33, Ben Pfaff <blp@ovn.org> wrote:
> On Mon, Oct 31, 2016 at 02:16:05PM -0700, Joe Stringer wrote:
>> On 31 October 2016 at 13:23, Ben Pfaff <blp@ovn.org> wrote:
>> > Some datapaths do not support the ct action, and others support only a
>> > subset of its features.  Until now, it has been difficult to tell why a
>> > particular action is being rejected.  This commit should make it clearer.
>> >
>> > Reported-by: Kevin Lin <kevinlin@berkeley.edu>
>> > Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
>> > Signed-off-by: Ben Pfaff <blp@ovn.org>
>>
>> Thanks, no doubt this will save a bunch of people a bunch of
>> confusion. It still doesn't directly state that "Your kernel module
>> may be out of date", but it's more clear than just OpenFlow hexdumps
>> telling you "OFPBAC". Maybe it should either say this, or this should
>> be mentioned in the FAQ.
>>
>> Acked-by: Joe Stringer <joe@ovn.org>
>
> You're right, this can be better.
>
> How about like this?
>
> --8<--------------------------cut here-------------------------->8--
>
> From: Ben Pfaff <blp@ovn.org>
> Date: Mon, 31 Oct 2016 14:33:13 -0700
> Subject: [PATCH] ofproto-dpif: Log warning when ct action or its variants are
>  not supported.
>
> Some datapaths do not support the ct action, and others support only a
> subset of its features.  Until now, it has been difficult to tell why a
> particular action is being rejected.  This commit should make it clearer.
>
> Reported-by: Kevin Lin <kevinlin@berkeley.edu>
> Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
> Signed-off-by: Ben Pfaff <blp@ovn.org>

Looks good, thanks!
Ben Pfaff Nov. 1, 2016, 3:16 p.m. UTC | #2
On Mon, Oct 31, 2016 at 05:23:25PM -0700, Joe Stringer wrote:
> On 31 October 2016 at 14:33, Ben Pfaff <blp@ovn.org> wrote:
> > On Mon, Oct 31, 2016 at 02:16:05PM -0700, Joe Stringer wrote:
> >> On 31 October 2016 at 13:23, Ben Pfaff <blp@ovn.org> wrote:
> >> > Some datapaths do not support the ct action, and others support only a
> >> > subset of its features.  Until now, it has been difficult to tell why a
> >> > particular action is being rejected.  This commit should make it clearer.
> >> >
> >> > Reported-by: Kevin Lin <kevinlin@berkeley.edu>
> >> > Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
> >> > Signed-off-by: Ben Pfaff <blp@ovn.org>
> >>
> >> Thanks, no doubt this will save a bunch of people a bunch of
> >> confusion. It still doesn't directly state that "Your kernel module
> >> may be out of date", but it's more clear than just OpenFlow hexdumps
> >> telling you "OFPBAC". Maybe it should either say this, or this should
> >> be mentioned in the FAQ.
> >>
> >> Acked-by: Joe Stringer <joe@ovn.org>
> >
> > You're right, this can be better.
> >
> > How about like this?
> >
> > --8<--------------------------cut here-------------------------->8--
> >
> > From: Ben Pfaff <blp@ovn.org>
> > Date: Mon, 31 Oct 2016 14:33:13 -0700
> > Subject: [PATCH] ofproto-dpif: Log warning when ct action or its variants are
> >  not supported.
> >
> > Some datapaths do not support the ct action, and others support only a
> > subset of its features.  Until now, it has been difficult to tell why a
> > particular action is being rejected.  This commit should make it clearer.
> >
> > Reported-by: Kevin Lin <kevinlin@berkeley.edu>
> > Reported-at: http://openvswitch.org/pipermail/discuss/2016-October/023060.html
> > Signed-off-by: Ben Pfaff <blp@ovn.org>
> 
> Looks good, thanks!

Thanks, applied to master.
diff mbox

Patch

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 7374ccc..330bd48 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -4134,6 +4134,16 @@  check_mask(struct ofproto_dpif *ofproto, const struct miniflow *flow)
     return 0;
 }
 
+static void
+report_unsupported_ct(const char *detail)
+{
+    static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
+    VLOG_WARN_RL(&rl, "Rejecting ct action because datapath does not support "
+                 "ct action%s%s (your kernel module may be out of date)",
+                 detail ? " " : "",
+                 detail ? detail : "");
+}
+
 static enum ofperr
 check_actions(const struct ofproto_dpif *ofproto,
               const struct rule_actions *const actions)
@@ -4153,9 +4163,11 @@  check_actions(const struct ofproto_dpif *ofproto,
         support = &ofproto_dpif_get_support(ofproto)->odp;
 
         if (!support->ct_state) {
+            report_unsupported_ct(NULL);
             return OFPERR_OFPBAC_BAD_TYPE;
         }
         if ((ct->zone_imm || ct->zone_src.field) && !support->ct_zone) {
+            report_unsupported_ct("zone");
             return OFPERR_OFPBAC_BAD_ARGUMENT;
         }
 
@@ -4166,10 +4178,12 @@  check_actions(const struct ofproto_dpif *ofproto,
                 /* The backer doesn't seem to support the NAT bits in
                  * 'ct_state': assume that it doesn't support the NAT
                  * action. */
+                report_unsupported_ct("nat");
                 return OFPERR_OFPBAC_BAD_TYPE;
             }
             if (dst && ((dst->id == MFF_CT_MARK && !support->ct_mark)
                         || (dst->id == MFF_CT_LABEL && !support->ct_label))) {
+                report_unsupported_ct("setting mark and/or label");
                 return OFPERR_OFPBAC_BAD_SET_ARGUMENT;
             }
         }