aboutsummaryrefslogtreecommitdiffstats
path: root/src/libimcv/os_info/os_info.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2012-10-18 22:33:26 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2012-10-18 22:33:26 +0200
commita9c9414d5840e6c2d15e3ecc2e2fe8b662fe46a3 (patch)
tree1f1cfce81014ba902cf030025ed80b145056d6a3 /src/libimcv/os_info/os_info.c
parentef315c5a1c37876617fbc03f2d5de80061f43950 (diff)
downloadstrongswan-a9c9414d5840e6c2d15e3ecc2e2fe8b662fe46a3.tar.bz2
strongswan-a9c9414d5840e6c2d15e3ecc2e2fe8b662fe46a3.tar.xz
implemented IETF Numeric Version attribute
Diffstat (limited to 'src/libimcv/os_info/os_info.c')
-rw-r--r--src/libimcv/os_info/os_info.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libimcv/os_info/os_info.c b/src/libimcv/os_info/os_info.c
index fd7d6ce48..576d27c68 100644
--- a/src/libimcv/os_info/os_info.c
+++ b/src/libimcv/os_info/os_info.c
@@ -58,6 +58,22 @@ METHOD(os_info_t, get_name, chunk_t,
return this->name;
}
+METHOD(os_info_t, get_numeric_version, void,
+ private_os_info_t *this, u_int32_t *major, u_int32_t *minor)
+{
+ u_char *pos;
+
+ if (major)
+ {
+ *major = atol(this->version.ptr);
+ }
+ pos = memchr(this->version.ptr, '.', this->version.len);
+ if (minor)
+ {
+ *minor = pos ? atol(pos + 1) : 0;
+ }
+}
+
METHOD(os_info_t, get_version, chunk_t,
private_os_info_t *this)
{
@@ -367,6 +383,7 @@ os_info_t *os_info_create(void)
INIT(this,
.public = {
.get_name = _get_name,
+ .get_numeric_version = _get_numeric_version,
.get_version = _get_version,
.get_fwd_status = _get_fwd_status,
.get_uptime = _get_uptime,