Add nl_send_sync()
Function which sends message using nl_send_auto(), frees the message and waits for ACK/error message (if auto-ack is not disabled).
This commit is contained in:
parent
7e9d5f69e5
commit
23845e942c
2 changed files with 32 additions and 0 deletions
|
@ -59,6 +59,7 @@ extern void nl_auto_complete(struct nl_sock *,
|
|||
extern int nl_send_auto(struct nl_sock *, struct nl_msg *);
|
||||
extern int nl_send_auto_complete(struct nl_sock *,
|
||||
struct nl_msg *);
|
||||
extern int nl_send_sync(struct nl_sock *, struct nl_msg *);
|
||||
extern int nl_send_simple(struct nl_sock *, int, int,
|
||||
void *, size_t);
|
||||
|
||||
|
|
31
lib/nl.c
31
lib/nl.c
|
@ -345,6 +345,37 @@ int nl_send_auto_complete(struct nl_sock *sk, struct nl_msg *msg)
|
|||
return nl_send_auto(sk, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send netlink message and wait for response (sync request-response)
|
||||
* @arg sk Netlink socket
|
||||
* @arg msg Netlink message to be sent
|
||||
*
|
||||
* This function takes a netlink message and sends it using nl_send_auto().
|
||||
* It will then wait for the response (ACK or error message) to be
|
||||
* received. Threfore this function will block until the operation has
|
||||
* been completed.
|
||||
*
|
||||
* @note Disabling auto-ack (nl_socket_disable_auto_ack()) will cause
|
||||
* this function to return immediately after sending. In this case,
|
||||
* it is the responsibility of the caller to handle any eventual
|
||||
* error messages returned.
|
||||
*
|
||||
* @see nl_send_auto().
|
||||
*
|
||||
* @return 0 on success or a negative error code.
|
||||
*/
|
||||
int nl_send_sync(struct nl_sock *sk, struct nl_msg *msg)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = nl_send_auto(sk, msg);
|
||||
nlmsg_free(msg);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
return wait_for_ack(sk);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send simple netlink message using nl_send_auto_complete()
|
||||
* @arg sk Netlink socket.
|
||||
|
|
Loading…
Add table
Reference in a new issue