summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-netlink/sd-netlink.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-06-27 03:28:16 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-06-27 03:58:34 +0900
commit2b01228800d33a6e73bba9be13a39c3ff2e56ef8 (patch)
treee431832d72aedb04c1667d0e5f9fac43ecd22878 /src/libsystemd/sd-netlink/sd-netlink.c
parent7bb9f0d0140dd11e3d7fcaf8dd45aa4735142406 (diff)
downloadsystemd-2b01228800d33a6e73bba9be13a39c3ff2e56ef8.tar.gz
sd-netlink: shorten code a bit
This also reduces scope of variables, fixes and reduces indentations, drop unnecessary initializations.
Diffstat (limited to 'src/libsystemd/sd-netlink/sd-netlink.c')
-rw-r--r--src/libsystemd/sd-netlink/sd-netlink.c87
1 files changed, 44 insertions, 43 deletions
diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c
index 97f45c83af..819ce71359 100644
--- a/src/libsystemd/sd-netlink/sd-netlink.c
+++ b/src/libsystemd/sd-netlink/sd-netlink.c
@@ -254,12 +254,13 @@ int sd_netlink_send(sd_netlink *nl,
return 1;
}
-int sd_netlink_sendv(sd_netlink *nl,
- sd_netlink_message **messages,
- size_t msgcount,
- uint32_t **ret_serial) {
+int sd_netlink_sendv(
+ sd_netlink *nl,
+ sd_netlink_message **messages,
+ size_t msgcount,
+ uint32_t **ret_serial) {
+
_cleanup_free_ uint32_t *serials = NULL;
- unsigned i;
int r;
assert_return(nl, -EINVAL);
@@ -268,13 +269,14 @@ int sd_netlink_sendv(sd_netlink *nl,
assert_return(msgcount > 0, -EINVAL);
if (ret_serial) {
- serials = new0(uint32_t, msgcount);
+ serials = new(uint32_t, msgcount);
if (!serials)
return -ENOMEM;
}
- for (i = 0; i < msgcount; i++) {
+ for (unsigned i = 0; i < msgcount; i++) {
assert_return(!messages[i]->sealed, -EPERM);
+
rtnl_seal_message(nl, messages[i]);
if (serials)
serials[i] = rtnl_message_get_serial(messages[i]);
@@ -593,6 +595,7 @@ int sd_netlink_call_async(
void *userdata,
uint64_t usec,
const char *description) {
+
_cleanup_free_ sd_netlink_slot *slot = NULL;
int r, k;
@@ -648,10 +651,12 @@ int sd_netlink_call_async(
return k;
}
-int sd_netlink_read(sd_netlink *rtnl,
- uint32_t serial,
- uint64_t usec,
- sd_netlink_message **ret) {
+int sd_netlink_read(
+ sd_netlink *rtnl,
+ uint32_t serial,
+ uint64_t usec,
+ sd_netlink_message **ret) {
+
usec_t timeout;
int r;
@@ -662,42 +667,39 @@ int sd_netlink_read(sd_netlink *rtnl,
for (;;) {
usec_t left;
- unsigned i;
- for (i = 0; i < rtnl->rqueue_size; i++) {
+ for (unsigned i = 0; i < rtnl->rqueue_size; i++) {
+ _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *incoming = NULL;
uint32_t received_serial;
+ uint16_t type;
received_serial = rtnl_message_get_serial(rtnl->rqueue[i]);
+ if (received_serial != serial)
+ continue;
- if (received_serial == serial) {
- _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *incoming = NULL;
- uint16_t type;
-
- incoming = rtnl->rqueue[i];
-
- /* found a match, remove from rqueue and return it */
- memmove(rtnl->rqueue + i,rtnl->rqueue + i + 1,
- sizeof(sd_netlink_message*) * (rtnl->rqueue_size - i - 1));
- rtnl->rqueue_size--;
+ incoming = rtnl->rqueue[i];
- r = sd_netlink_message_get_errno(incoming);
- if (r < 0)
- return r;
+ /* found a match, remove from rqueue and return it */
+ memmove(rtnl->rqueue + i,rtnl->rqueue + i + 1,
+ sizeof(sd_netlink_message*) * (rtnl->rqueue_size - i - 1));
+ rtnl->rqueue_size--;
- r = sd_netlink_message_get_type(incoming, &type);
- if (r < 0)
- return r;
-
- if (type == NLMSG_DONE) {
- *ret = NULL;
- return 0;
- }
+ r = sd_netlink_message_get_errno(incoming);
+ if (r < 0)
+ return r;
- if (ret)
- *ret = TAKE_PTR(incoming);
+ r = sd_netlink_message_get_type(incoming, &type);
+ if (r < 0)
+ return r;
- return 1;
+ if (type == NLMSG_DONE) {
+ *ret = NULL;
+ return 0;
}
+
+ if (ret)
+ *ret = TAKE_PTR(incoming);
+ return 1;
}
r = socket_read_message(rtnl);
@@ -721,15 +723,17 @@ int sd_netlink_read(sd_netlink *rtnl,
r = rtnl_poll(rtnl, true, left);
if (r < 0)
return r;
- else if (r == 0)
+ if (r == 0)
return -ETIMEDOUT;
}
}
-int sd_netlink_call(sd_netlink *rtnl,
+int sd_netlink_call(
+ sd_netlink *rtnl,
sd_netlink_message *message,
uint64_t usec,
sd_netlink_message **ret) {
+
uint32_t serial;
int r;
@@ -748,10 +752,7 @@ int sd_netlink_get_events(sd_netlink *rtnl) {
assert_return(rtnl, -EINVAL);
assert_return(!rtnl_pid_changed(rtnl), -ECHILD);
- if (rtnl->rqueue_size == 0)
- return POLLIN;
- else
- return 0;
+ return rtnl->rqueue_size == 0 ? POLLIN : 0;
}
int sd_netlink_get_timeout(sd_netlink *rtnl, uint64_t *timeout_usec) {