aboutsummaryrefslogtreecommitdiffstats
path: root/src/libimcv/os_info/os_info.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2012-10-13 20:34:50 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2012-10-13 20:34:50 +0200
commit07a3dee937b61dcd05e78dcd9e7a416bf944eb83 (patch)
tree1de1fdaad4f43652e2e126fb20473f1f296c5818 /src/libimcv/os_info/os_info.c
parent4bc119afb75009f8af398bea4c93b908d8940f9c (diff)
downloadstrongswan-07a3dee937b61dcd05e78dcd9e7a416bf944eb83.tar.bz2
strongswan-07a3dee937b61dcd05e78dcd9e7a416bf944eb83.tar.xz
implemented IETF Operational Status attribute
Diffstat (limited to 'src/libimcv/os_info/os_info.c')
-rw-r--r--src/libimcv/os_info/os_info.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/libimcv/os_info/os_info.c b/src/libimcv/os_info/os_info.c
index 25d64676e..fd7d6ce48 100644
--- a/src/libimcv/os_info/os_info.c
+++ b/src/libimcv/os_info/os_info.c
@@ -95,20 +95,44 @@ METHOD(os_info_t, get_fwd_status, os_fwd_status_t,
{
DBG1(DBG_IMC, "could not read from \"%s\"", ip_forward);
}
+ fclose(file);
}
else
{
DBG1(DBG_IMC, "failed to open \"%s\"", ip_forward);
}
- fclose(file);
return fwd_status;
}
+METHOD(os_info_t, get_uptime, time_t,
+ private_os_info_t *this)
+{
+ const char proc_uptime[] = "/proc/uptime";
+ FILE *file;
+ time_t uptime;
+
+ file = fopen(proc_uptime, "r");
+ if (!file)
+ {
+ DBG1(DBG_IMC, "failed to open \"%s\"", proc_uptime);
+ return 0;
+ }
+ if (fscanf(file, "%u", &uptime) != 1)
+ {
+ DBG1(DBG_IMC, "failed to read file \"%s\"", proc_uptime);
+ uptime = 0;
+ }
+ fclose(file);
+
+ return uptime;
+}
+
METHOD(os_info_t, create_package_enumerator, enumerator_t*,
private_os_info_t *this)
{
/* TODO */
+
return NULL;
}
@@ -345,6 +369,7 @@ os_info_t *os_info_create(void)
.get_name = _get_name,
.get_version = _get_version,
.get_fwd_status = _get_fwd_status,
+ .get_uptime = _get_uptime,
.create_package_enumerator = _create_package_enumerator,
.destroy = _destroy,
},