socket-util: add getsockopt_int() helper
authorLennart Poettering <lennart@poettering.net>
Mon, 16 Nov 2020 11:41:39 +0000 (12:41 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 12 Mar 2021 15:23:45 +0000 (16:23 +0100)
(cherry picked from commit 4e25d4cf0f78ef7c960f2b77c941e3d8751535df)

src/basic/socket-util.h

index 9f7928040dc13577b71c1129bf82a33ea7be5db5..46577d838a83c87a4ef85540ea32048881c0e38a 100644 (file)
@@ -256,6 +256,19 @@ static inline int setsockopt_int(int fd, int level, int optname, int value) {
         return 0;
 }
 
+static inline int getsockopt_int(int fd, int level, int optname, int *ret) {
+        int v;
+        socklen_t sl = sizeof(v);
+
+        if (getsockopt(fd, level, optname, &v, &sl) < 0)
+                return -errno;
+        if (sl != sizeof(v))
+                return -EIO;
+
+        *ret = v;
+        return 0;
+}
+
 int socket_bind_to_ifname(int fd, const char *ifname);
 int socket_bind_to_ifindex(int fd, int ifindex);