> On Apr 14, 2015, at 2:39 PM, Ben Pfaff <b...@nicira.com> wrote: > >> >> What is the genetlink semantics for returning an error from the OVS >> module in Linux. I looked at the OVS code, and it returns -EINVAL if >> it runs into a condition of invalid input (eg. flow with key & UFID >> missing). If OVS module returns -EINVAL, does Linux???s netlink >> layer massage the message to insert the error into a ???struct >> nlmsgerr???, and return 0? > > The netlink code turns that sort of return value into an > nlmsghdr+nlmsgerr. > >> We have a little confusion about that. We currently return the error >> (and also the struct nlmsgerr) in the equivalent of recvmsg(). > > Linux would only return an error from recvmsg() if something really > bad happened. You can think of the difference between these two types > of errors as being like a "real" network connection. Suppose you're > running a Netlink-like RPC protocol over a TCP socket instead of a > Netlink socket. You only get an error from recvmsg() if something > really bad happens like the TCP connection dropping. If the remote > process wants to send you an error reply to your request, you get it > as a message encapsulated inside the TCP connection data, not as an > error returned by recvmsg().
Sounds good. Thanks for the clarifications Ben. In addition to Sorin’s patch, we also need changes in the kernel to return STATUS_SUCCESS, and populate the ‘struct nlmsghdr+nlmsgerr’ appropriately. thanks, -- Nithin _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev