[ovs-dev] [PATCH 4/4] lib/netlink-socket.c: fixes in nl_sock_recv__() on Windows

Ankur Sharma ankursharma at vmware.com
Fri Oct 17 17:07:24 UTC 2014


Hi Nithin,

Please find my comments inline.

Regards,
Ankur
________________________________________
From: dev <dev-bounces at openvswitch.org> on behalf of Nithin Raju <nithin at vmware.com>
Sent: Thursday, October 16, 2014 10:52 PM
To: dev at openvswitch.org
Subject: [ovs-dev] [PATCH 4/4] lib/netlink-socket.c: fixes in   nl_sock_recv__() on Windows

In nl_sock_recv__() on Windows, we realloc a new ofpbuf to copy received
data if the caller specified buffer is small. While we do so, we need
reset some of the other stack variables to point to the new ofpbuf.

Other fixes are around using 'error' rather than 'errno'.

Acked-by: Nithin Raju <nithin at vmware.com>
---
 lib/netlink-socket.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index 7e30ab1..68e81d1 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -382,8 +382,8 @@ nl_sock_join_mcgroup(struct nl_sock *sock, unsigned int multicast_group)
     if (error) {
         sock->read_ioctl = OVS_IOCTL_READ;
         VLOG_WARN("could not join multicast group %u (%s)",
-                  multicast_group, ovs_strerror(errno));
-        return errno;
+                  multicast_group, ovs_strerror(error));
+        return error;
     }
 #else
     if (setsockopt(sock->fd, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP,
@@ -413,8 +413,8 @@ nl_sock_leave_mcgroup(struct nl_sock *sock, unsigned int multicast_group)
     int error = nl_sock_mcgroup(sock, multicast_group, false);
     if (error) {
         VLOG_WARN("could not leave multicast group %u (%s)",
-                   multicast_group, ovs_strerror(errno));
-        return errno;
+                   multicast_group, ovs_strerror(error));
+        return error;
     }
     sock->read_ioctl = OVS_IOCTL_READ;
 #else
@@ -548,6 +548,8 @@ nl_sock_recv__(struct nl_sock *sock, struct ofpbuf *buf, bool wait)
             } else {
                 if (retval >= buf->allocated) {
                     ofpbuf_reinit(buf, retval);
+                    nlmsghdr = ofpbuf_base(buf);
+                    nlmsghdr->nlmsg_len = UINT32_MAX;

[ANKUR]: Why are we assigning nlmsg_len to UINT32_MAX and not retval (aligned).

                 }
                 memcpy(ofpbuf_data(buf), tail, retval);
                 ofpbuf_set_size(buf, retval);
--
1.7.4.1

_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=f9MF4SPniXIonGt8lRQItVrFGQnWeNxZsT45uXpz2X4%3D%0A&s=a7066a9f8390191d61e0f73f7be911a7a0e900f0276ed908a26d56739a39a388



More information about the dev mailing list