]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: introduce bus_message_read_ifindex()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 19 Jul 2020 03:07:27 +0000 (12:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 20 Jul 2020 19:08:22 +0000 (04:08 +0900)
src/shared/bus-message-util.c
src/shared/bus-message-util.h

index 4151b91aec7c52e7d721640322b7f8eba598f155..85e1e98e19aa95c9f20550f2aad5ab492f41ccc6 100644 (file)
@@ -4,6 +4,26 @@
 
 #include "resolve-util.h"
 
+int bus_message_read_ifindex(sd_bus_message *message, sd_bus_error *error, int *ret) {
+        int ifindex, r;
+
+        assert(message);
+        assert(ret);
+
+        assert_cc(sizeof(int) == sizeof(int32_t));
+
+        r = sd_bus_message_read(message, "i", &ifindex);
+        if (r < 0)
+                return r;
+
+        if (ifindex <= 0)
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid interface index");
+
+        *ret = ifindex;
+
+        return 0;
+}
+
 int bus_message_read_family(sd_bus_message *message, sd_bus_error *error, int *ret) {
         int family, r;
 
index 90b78f415f510dd7a45beb4b940e3b44eccb55f7..98ad035ee47da9b2dfc1bf4dcacd1f0eb50203f1 100644 (file)
@@ -6,6 +6,7 @@
 #include "in-addr-util.h"
 #include "socket-netlink.h"
 
+int bus_message_read_ifindex(sd_bus_message *message, sd_bus_error *error, int *ret);
 int bus_message_read_family(sd_bus_message *message, sd_bus_error *error, int *ret);
 int bus_message_read_in_addr_auto(sd_bus_message *message, sd_bus_error *error, int *ret_family, union in_addr_union *ret_addr);