[PATCH 1/1] platform: extract common fields of IPv4/IPv6 addresses and routes to base struct
- From: Thomas Haller <thaller redhat com>
- To: Network Manager <networkmanager-list gnome org>
- Subject: [PATCH 1/1] platform: extract common fields of IPv4/IPv6 addresses and routes to base struct
- Date: Thu, 3 Apr 2014 14:23:14 +0200
Especially the calculation of timestamps is identicall for addresses.
By creating a "base struct", we can use the same code for that, because
NMPlatformIP4Address and NMPlatformIP6Address can now both be treated as
NMPlatformIPAddress (and the same for routes).
Signed-off-by: Thomas Haller <thaller redhat com>
---
I think introducing this "base class" could help us to put similar
code for IPv4 and IPv6 types into a function. Especially handling of
the timestamps/expiration.
src/platform/nm-platform.h | 50 +++++++++++++++++++++++++++++-----------------
1 file changed, 32 insertions(+), 18 deletions(-)
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index 356af1f..dd56977 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -143,19 +143,32 @@ typedef enum {
NM_PLATFORM_SOURCE_USER,
} NMPlatformSource;
+#define __NMPlatformIPAddress_COMMON \
+ int ifindex; \
+ NMPlatformSource source; \
+ guint32 timestamp; /* nm_utils_get_monotonic_timestamp_s() */ \
+ guint32 lifetime; /* seconds */ \
+ guint32 preferred; /* seconds */ \
+ ;
+
+/**
+ * NMPlatformIPAddress:
+ *
+ * Common parts of NMPlatformIP4Address and NMPlatformIP6Address.
+ **/
+typedef struct {
+ __NMPlatformIPAddress_COMMON
+} NMPlatformIPAddress;
+
/**
* NMPlatformIP4Address:
* @timestamp: timestamp as returned by nm_utils_get_monotonic_timestamp_s()
**/
typedef struct {
- int ifindex;
- NMPlatformSource source;
+ __NMPlatformIPAddress_COMMON
in_addr_t address;
in_addr_t peer_address; /* PTP peer address */
int plen;
- guint32 timestamp;
- guint32 lifetime; /* seconds */
- guint32 preferred; /* seconds */
char label[IFNAMSIZ];
} NMPlatformIP4Address;
@@ -164,37 +177,38 @@ typedef struct {
* @timestamp: timestamp as returned by nm_utils_get_monotonic_timestamp_s()
**/
typedef struct {
- int ifindex;
- NMPlatformSource source;
+ __NMPlatformIPAddress_COMMON
struct in6_addr address;
struct in6_addr peer_address;
int plen;
- guint32 timestamp; /* seconds */
- guint32 lifetime; /* seconds */
- guint32 preferred;
guint flags; /* ifa_flags from <linux/if_addr.h>, field type "unsigned int" is as used in
rtnl_addr_get_flags. */
} NMPlatformIP6Address;
#define NM_PLATFORM_ROUTE_METRIC_DEFAULT 1024
+#define __NMPlatformIPRoute_COMMON \
+ int ifindex; \
+ NMPlatformSource source; \
+ guint metric; \
+ guint mss; \
+ ;
+
typedef struct {
- int ifindex;
- NMPlatformSource source;
+ __NMPlatformIPRoute_COMMON
+} NMPlatformIPRoute;
+
+typedef struct {
+ __NMPlatformIPRoute_COMMON
in_addr_t network;
int plen;
in_addr_t gateway;
- guint metric;
- guint mss;
} NMPlatformIP4Route;
typedef struct {
- int ifindex;
- NMPlatformSource source;
+ __NMPlatformIPRoute_COMMON
struct in6_addr network;
int plen;
struct in6_addr gateway;
- guint metric;
- guint mss;
} NMPlatformIP6Route;
typedef struct {
--
1.9.0
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]