if (!macaddr && vlanid < 0)
return -1;
- nl_msg = nlmsg_alloc_simple(RTM_SETLINK, NLM_F_REQUEST);
- if (!nl_msg) {
- virReportOOMError();
- return rc;
- }
+ nl_msg = virNetlinkMsgNew(RTM_SETLINK, NLM_F_REQUEST);
if (nlmsg_append(nl_msg, &ifinfo, sizeof(ifinfo), NLMSG_ALIGNTO) < 0)
goto buffer_too_small;
unsigned int recvbuflen;
int ret = -1;
- if (!(nl_msg = nlmsg_alloc_simple(GENL_ID_CTRL,
- NLM_F_REQUEST | NLM_F_ACK))) {
- virReportOOMError();
- goto cleanup;
- }
+ nl_msg = virNetlinkMsgNew(GENL_ID_CTRL, NLM_F_REQUEST | NLM_F_ACK);
if (nlmsg_append(nl_msg, &gmsgh, sizeof(gmsgh), NLMSG_ALIGNTO) < 0)
goto cleanup;
if ((rv = virNetDevGetFamilyId(DEVLINK_GENL_NAME, &family_id)) <= 0)
return rv;
- if (!(nl_msg = nlmsg_alloc_simple(family_id,
- NLM_F_REQUEST | NLM_F_ACK))) {
- virReportOOMError();
- goto cleanup;
- }
+ nl_msg = virNetlinkMsgNew(family_id, NLM_F_REQUEST | NLM_F_ACK);
if (nlmsg_append(nl_msg, &gmsgh, sizeof(gmsgh), NLMSG_ALIGNTO) < 0)
goto cleanup;
if (!(ndm.ndm_state & (NUD_PERMANENT | NUD_REACHABLE)))
ndm.ndm_state |= NUD_PERMANENT;
- nl_msg = nlmsg_alloc_simple(isAdd ? RTM_NEWNEIGH : RTM_DELNEIGH,
- NLM_F_REQUEST |
- (isAdd ? (NLM_F_CREATE | NLM_F_EXCL) : 0));
- if (!nl_msg) {
- virReportOOMError();
- return -1;
- }
+ nl_msg = virNetlinkMsgNew(isAdd ? RTM_NEWNEIGH : RTM_DELNEIGH,
+ NLM_F_REQUEST |
+ (isAdd ? (NLM_F_CREATE | NLM_F_EXCL) : 0));
if (nlmsg_append(nl_msg, &ndm, sizeof(ndm), NLMSG_ALIGNTO) < 0)
goto buffer_too_small;
if ((ifindex = if_nametoindex(ifname)) == 0)
return NULL;
- if (!(nlmsg = nlmsg_alloc_simple(messageType,
- NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL))) {
- virReportOOMError();
- return NULL;
- }
+ nlmsg = virNetlinkMsgNew(messageType,
+ NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
memset(&ifa, 0, sizeof(ifa));
if ((ifindex = if_nametoindex(ifname)) == 0)
return -1;
- if (!(nlmsg = nlmsg_alloc_simple(RTM_NEWROUTE,
- NLM_F_REQUEST | NLM_F_CREATE |
- NLM_F_EXCL))) {
- virReportOOMError();
- return -1;
- }
+ nlmsg = virNetlinkMsgNew(RTM_NEWROUTE,
+ NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
memset(&rtmsg, 0, sizeof(rtmsg));
? virUUIDFormat(hostUUID, hostUUIDStr)
: "(unspecified)"));
- nl_msg = nlmsg_alloc_simple(RTM_SETLINK, NLM_F_REQUEST);
- if (!nl_msg) {
- virReportOOMError();
- return rc;
- }
+ nl_msg = virNetlinkMsgNew(RTM_SETLINK, NLM_F_REQUEST);
if (nlmsg_append(nl_msg, &ifinfo, sizeof(ifinfo), NLMSG_ALIGNTO) < 0)
goto buffer_too_small;
/* Function definitions */
+struct nl_msg *
+virNetlinkMsgNew(int nlmsgtype,
+ int nlmsgflags)
+{
+ struct nl_msg *ret;
+
+ if (!(ret = nlmsg_alloc_simple(nlmsgtype, nlmsgflags)))
+ abort();
+
+ return ret;
+}
+
/**
* virNetlinkStartup:
*
ifinfo.ifi_index = ifindex;
- nl_msg = nlmsg_alloc_simple(RTM_GETLINK, NLM_F_REQUEST);
- if (!nl_msg) {
- virReportOOMError();
- return -1;
- }
+ nl_msg = virNetlinkMsgNew(RTM_GETLINK, NLM_F_REQUEST);
NETLINK_MSG_APPEND(nl_msg, sizeof(ifinfo), &ifinfo);
return -1;
}
- nl_msg = nlmsg_alloc_simple(RTM_NEWLINK,
- NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
- if (!nl_msg) {
- virReportOOMError();
- return -1;
- }
+ nl_msg = virNetlinkMsgNew(RTM_NEWLINK,
+ NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
NETLINK_MSG_APPEND(nl_msg, sizeof(ifinfo), &ifinfo);
unsigned int resp_len = 0;
int error = 0;
- nl_msg = nlmsg_alloc_simple(RTM_DELLINK, NLM_F_REQUEST);
- if (!nl_msg) {
- virReportOOMError();
- return -1;
- }
+ nl_msg = virNetlinkMsgNew(RTM_DELLINK, NLM_F_REQUEST);
NETLINK_MSG_APPEND(nl_msg, sizeof(ifinfo), &ifinfo);
unsigned int resp_len = 0;
int error = 0;
- nl_msg = nlmsg_alloc_simple(RTM_GETNEIGH, NLM_F_DUMP | NLM_F_REQUEST);
- if (!nl_msg) {
- virReportOOMError();
- return -1;
- }
+ nl_msg = virNetlinkMsgNew(RTM_GETNEIGH, NLM_F_DUMP | NLM_F_REQUEST);
NETLINK_MSG_APPEND(nl_msg, sizeof(ndinfo), &ndinfo);
typedef struct nl_msg virNetlinkMsg;
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virNetlinkMsg, nlmsg_free);
+struct nl_msg *
+virNetlinkMsgNew(int nlmsgtype,
+ int nlmsgflags);
+
#else
struct nl_msg;