2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

netlink: Make nl_sock_transact() discard reply if 'replyp' is null.

Sometimes only the success or failure return value is interesting, not the
details of the reply, so this simplifies some callers.
This commit is contained in:
Ben Pfaff
2010-05-19 14:13:23 -07:00
parent 6912370445
commit 8e2093fc18
2 changed files with 16 additions and 8 deletions

View File

@@ -341,9 +341,12 @@ try_again:
}
/* Sends 'request' to the kernel via 'sock' and waits for a response. If
* successful, stores the reply into '*replyp' and returns 0. The caller is
* responsible for destroying the reply with ofpbuf_delete(). On failure,
* returns a positive errno value and stores a null pointer into '*replyp'.
* successful, returns 0. On failure, returns a positive errno value.
*
* If 'replyp' is nonnull, then on success '*replyp' is set to the kernel's
* reply, which the caller is responsible for freeing with ofpbuf_delete(), and
* on failure '*replyp' is set to NULL. If 'replyp' is null, then the kernel's
* reply, if any, is discarded.
*
* nlmsg_len in 'msg' will be finalized to match msg->size, and nlmsg_pid will
* be set to 'sock''s pid, before the message is sent. NLM_F_ACK will be set
@@ -386,7 +389,9 @@ nl_sock_transact(struct nl_sock *sock,
struct ofpbuf *reply;
int retval;
*replyp = NULL;
if (replyp) {
*replyp = NULL;
}
/* Ensure that we get a reply even if this message doesn't ordinarily call
* for one. */
@@ -425,7 +430,11 @@ recv:
return retval != EAGAIN ? retval : EPROTO;
}
*replyp = reply;
if (replyp) {
*replyp = reply;
} else {
ofpbuf_delete(reply);
}
return 0;
}