[ovs-dev] [PATCH v3] ovs-hyperv: make kernel return values netlink socket like

Ben Pfaff blp at nicira.com
Wed Apr 29 14:45:15 UTC 2015


On Tue, Apr 28, 2015 at 02:35:37PM -0700, Nithin Raju wrote:
> In this patch, we make changes to usersapce as well as
> kernel datapath on hyperv to make it more netlink socket
> like. Previously, the kernel datapath did not distinguish
> between "transport errors" and other errors. Netlink
> semantics dictate that netlink functions should only
> return an error only in the case of a "transport error"
> which is generally something fatal. Eg. failure to
> communicate with the OVS module, or an invalid command
> altogether. Other errors such as an unsupported action,
> or an invalid flow key is not considered a "transport
> error", and in such cases, netlink functions are to return
> success with a 'struct nlmsgerr' populated in the output
> buffer.
> 
> This patch implements these semantics.
> 
> Signed-off-by: Nithin Raju <nithin at vmware.com>
> Acked-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
> Reported-at: https://github.com/openvswitch/ovs-issues/issues/72
> ---
> v2: addressed Sorin's comments
> v3: rebase to HEAD

I applied this, thanks!

This assert in nl_sock_transact_multiple__() will fire (killing the
process) whenever the "if" condition is entered.  Is it really
desirable?

            if (request_nlmsg->nlmsg_seq != reply_nlmsg->nlmsg_seq) {
                ovs_assert(request_nlmsg->nlmsg_seq == reply_nlmsg->nlmsg_seq);
                VLOG_DBG_RL(&rl, "mismatched seq request %#"PRIx32
                    ", reply %#"PRIx32, request_nlmsg->nlmsg_seq,
                    reply_nlmsg->nlmsg_seq);
                break;
            }



More information about the dev mailing list