summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/basic/sysctl-util.c27
-rw-r--r--src/basic/sysctl-util.h2
2 files changed, 29 insertions, 0 deletions
diff --git a/src/basic/sysctl-util.c b/src/basic/sysctl-util.c
index 8a73dc6b3e..2feb4917d7 100644
--- a/src/basic/sysctl-util.c
+++ b/src/basic/sysctl-util.c
@@ -10,6 +10,7 @@
#include "fileio.h"
#include "log.h"
#include "macro.h"
+#include "parse-util.h"
#include "path-util.h"
#include "socket-util.h"
#include "string-util.h"
@@ -193,3 +194,29 @@ int sysctl_read_ip_property(int af, const char *ifname, const char *property, ch
return sysctl_read(p, ret);
}
+
+int sysctl_read_ip_property_int(int af, const char *ifname, const char *property, int *ret) {
+ _cleanup_free_ char *s = NULL;
+ int r;
+
+ assert(ret);
+
+ r = sysctl_read_ip_property(af, ifname, property, &s);
+ if (r < 0)
+ return r;
+
+ return safe_atoi(s, ret);
+}
+
+int sysctl_read_ip_property_uint32(int af, const char *ifname, const char *property, uint32_t *ret) {
+ _cleanup_free_ char *s = NULL;
+ int r;
+
+ assert(ret);
+
+ r = sysctl_read_ip_property(af, ifname, property, &s);
+ if (r < 0)
+ return r;
+
+ return safe_atou32(s, ret);
+}
diff --git a/src/basic/sysctl-util.h b/src/basic/sysctl-util.h
index 041292f693..bbfc4ce1ea 100644
--- a/src/basic/sysctl-util.h
+++ b/src/basic/sysctl-util.h
@@ -17,6 +17,8 @@ static inline int sysctl_write(const char *property, const char *value) {
}
int sysctl_read_ip_property(int af, const char *ifname, const char *property, char **ret);
+int sysctl_read_ip_property_int(int af, const char *ifname, const char *property, int *ret);
+int sysctl_read_ip_property_uint32(int af, const char *ifname, const char *property, uint32_t *ret);
int sysctl_write_ip_property(int af, const char *ifname, const char *property, const char *value, Hashmap **shadow);
static inline int sysctl_write_ip_property_boolean(int af, const char *ifname, const char *property, bool value, Hashmap **shadow) {
return sysctl_write_ip_property(af, ifname, property, one_zero(value), shadow);