]> granicus.if.org Git - libnl/commitdiff
Run-time version information is now available
authorКоренберг Марк (дома) <socketpair@gmail.com>
Wed, 29 Aug 2012 16:55:14 +0000 (22:55 +0600)
committerКоренберг Марк (дома) <socketpair@gmail.com>
Wed, 29 Aug 2012 21:19:04 +0000 (03:19 +0600)
Run-time version information is available as exported four integers:
- const int      nl_ver_num = LIBNL_VER_NUM;
- const int      nl_ver_maj = LIBNL_VER_MAJ;
- const int      nl_ver_min = LIBNL_VER_MIN;
- const int      nl_ver_mic = LIBNL_VER_MIC;

The purpose of this is to get version of compiled library as run time.
Use cases:
- To know exact version of the library in Python's ctypes module,
  Say, to find out if nl_cache_mngr_alloc() allow sk=NULL

- To make sure that the version of the loaded library corresponds to the
  version of headers (for the paranoid). Say, to check:

  if (LIBNL_VER_NUM != nl_ver_num)
      exit(1);

include/netlink/version.h.in
lib/Makefile.am
lib/version.c [new file with mode: 0644]

index ac56799f7585914f9a00c592374ad4c5eabfaf90..35bf2aa83ec092562aa30c14677fe6c0c8cbf478 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * netlink/version.h   Compile Time Versioning Information
+ * netlink/version.h   Versioning Information
  *
  *     This library is free software; you can redistribute it and/or
  *     modify it under the terms of the GNU Lesser General Public
@@ -12,6 +12,8 @@
 #ifndef NETLINK_VERSION_H_
 #define NETLINK_VERSION_H_
 
+/* Compile Time Versioning Information */
+
 #define LIBNL_STRING "@PACKAGE_STRING@"
 #define LIBNL_VERSION "@PACKAGE_VERSION@"
 
 #define LIBNL_REVISION         @LT_REVISION@
 #define LIBNL_AGE              @LT_AGE@
 
+/* Run-time version information */
+
+extern const int        nl_ver_num;
+extern const int        nl_ver_maj;
+extern const int        nl_ver_min;
+extern const int        nl_ver_mic;
+
 #endif
index aee8d0fafaef6be1295cea360974f8e585e35b86..9e5efd88f4f33cd28ec8b6b600088d66a6a9c0ea 100644 (file)
@@ -17,7 +17,8 @@ lib_LTLIBRARIES = \
 
 libnl_3_la_SOURCES = \
        addr.c attr.c cache.c cache_mngr.c cache_mngt.c data.c \
-       error.c handlers.c msg.c nl.c object.c socket.c utils.c
+       error.c handlers.c msg.c nl.c object.c socket.c utils.c \
+       version.c
 
 libnl_genl_3_la_LIBADD  = libnl-3.la
 libnl_genl_3_la_SOURCES = \
diff --git a/lib/version.c b/lib/version.c
new file mode 100644 (file)
index 0000000..0dcafa0
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * lib/version.c       Run-time version information
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2003-2012 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup core
+ * @defgroup utils Utilities
+ *
+ * Run-time version information
+ *
+ * @{
+ */
+
+
+/**
+ * @name Run-time version information
+ * @{
+ */
+
+#include <netlink/version.h>
+
+const int      nl_ver_num = LIBNL_VER_NUM;
+const int      nl_ver_maj = LIBNL_VER_MAJ;
+const int      nl_ver_min = LIBNL_VER_MIN;
+const int      nl_ver_mic = LIBNL_VER_MIC;
+
+/** @} */
+
+/** @} */