dpif-linux: Add missing NLM_F_ECHO flag to flow requests.
authorJesse Gross <jesse@nicira.com>
Sun, 30 Jan 2011 02:09:37 +0000 (18:09 -0800)
committerJesse Gross <jesse@nicira.com>
Sun, 30 Jan 2011 02:09:37 +0000 (18:09 -0800)
Flow transactions expect a response after the operation has completed
but the request did not have NLM_F_ECHO set.  This caused userspace
to receive only the Netlink ACK instead of a real response, making
it appear that the operation had failed when it actually succeeded.

lib/dpif-linux.c

index cef914e996a69c95af19b24d0f513b92ae32eeb9..c35ad62e6c2f8afef5732667f38364dac3adf542 100644 (file)
@@ -1449,7 +1449,8 @@ dpif_linux_flow_to_ofpbuf(const struct dpif_linux_flow *flow,
     struct odp_header *odp_header;
 
     nl_msg_put_genlmsghdr(buf, 0, odp_flow_family,
-                          NLM_F_REQUEST | flow->nlmsg_flags, flow->cmd, 1);
+                          NLM_F_REQUEST | NLM_F_ECHO | flow->nlmsg_flags,
+                          flow->cmd, 1);
 
     odp_header = ofpbuf_put_uninit(buf, sizeof *odp_header);
     odp_header->dp_ifindex = flow->dp_ifindex;