net: fix spdk_get_ifc_ipv4 request creation

req needs to allocate space for the rtattr.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ic7a7c52ae6e2bb5e19b4dafcabf69c6df86bd671
This commit is contained in:
Jim Harris 2016-10-20 08:30:24 -07:00 committed by Daniel Verkamp
parent b13fecd3b3
commit 6a78645bae

View File

@ -51,7 +51,7 @@
#include <errno.h> #include <errno.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <pthread.h> #include <pthread.h>
#include <assert.h>
static TAILQ_HEAD(, spdk_interface) g_interface_head; static TAILQ_HEAD(, spdk_interface) g_interface_head;
@ -68,8 +68,8 @@ static uint32_t spdk_get_ifc_ipv4(void)
struct { struct {
struct nlmsghdr n; struct nlmsghdr n;
struct ifaddrmsg r; struct ifaddrmsg r;
struct rtattr rta;
} req; } req;
struct rtattr *rta;
char buf[16384]; char buf[16384];
struct nlmsghdr *nlmp; struct nlmsghdr *nlmp;
struct ifaddrmsg *rtmp; struct ifaddrmsg *rtmp;
@ -96,8 +96,8 @@ static uint32_t spdk_get_ifc_ipv4(void)
/* /*
* Fill up all the attributes for the rtnetlink header. * Fill up all the attributes for the rtnetlink header.
*/ */
rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len)); assert(&req.rta == (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len)));
rta->rta_len = RTA_LENGTH(16); req.rta.rta_len = RTA_LENGTH(16);
/* Send and recv the message from kernel */ /* Send and recv the message from kernel */
ret = send(netlink_fd, &req, req.n.nlmsg_len, 0); ret = send(netlink_fd, &req, req.n.nlmsg_len, 0);