diff options
author | Thomas Haller <thaller@redhat.com> | 2017-11-08 18:12:36 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-11-09 09:28:49 +0100 |
commit | 9e25538ff57fa6aa46f542ace387d67eb3ca00a9 (patch) | |
tree | b1f94e11fb14186a701ccf29545e5e7457a7099e | |
parent | ffcab3f653fc89d609693577166d2511e39df434 (diff) | |
download | NetworkManager-9e25538ff57fa6aa46f542ace387d67eb3ca00a9.tar.gz |
core: add NMIPConfig helpers
For now, hack some generic accessors to the NMIP4Config/NMIP6Config
type. Eventually, NMIP4Config and NMIP6Config should get merged in
one class.
-rw-r--r-- | src/nm-ip4-config.c | 8 | ||||
-rw-r--r-- | src/nm-ip4-config.h | 84 |
2 files changed, 86 insertions, 6 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index e2f99e24d0..06137764f5 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -2216,6 +2216,14 @@ nm_ip4_config_get_nameserver (const NMIP4Config *self, guint i) return g_array_index (priv->nameservers, guint32, i); } +const in_addr_t * +_nm_ip4_config_get_nameserver (const NMIP4Config *self, guint i) +{ + const NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (self); + + return &g_array_index (priv->nameservers, guint32, i); +} + /*****************************************************************************/ void diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index b559352dc4..e7fb2703eb 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -216,6 +216,7 @@ void nm_ip4_config_add_nameserver (NMIP4Config *self, guint32 nameserver); void nm_ip4_config_del_nameserver (NMIP4Config *self, guint i); guint nm_ip4_config_get_num_nameservers (const NMIP4Config *self); guint32 nm_ip4_config_get_nameserver (const NMIP4Config *self, guint i); +const in_addr_t *_nm_ip4_config_get_nameserver (const NMIP4Config *self, guint i); void nm_ip4_config_reset_domains (NMIP4Config *self); void nm_ip4_config_add_domain (NMIP4Config *self, const char *domain); @@ -300,15 +301,86 @@ gboolean nm_ip4_config_equal (const NMIP4Config *a, const NMIP4Config *b); #define NM_IP_CONFIG_CAST(config) ((NMIPConfig *) (config)) #endif +static inline gboolean +NM_IS_IP_CONFIG (gconstpointer config) +{ + return NM_IS_IP4_CONFIG (config) || NM_IS_IP6_CONFIG (config); +} + static inline int -nm_ip_config_get_dns_priority (const NMIPConfig *config) +nm_ip_config_get_addr_family (const NMIPConfig *config) { if (NM_IS_IP4_CONFIG (config)) - return nm_ip4_config_get_dns_priority ((const NMIP4Config *) config); - else if (NM_IS_IP6_CONFIG (config)) - return nm_ip6_config_get_dns_priority ((const NMIP6Config *) config); - else - g_return_val_if_reached (0); + return AF_INET; + if (NM_IS_IP6_CONFIG (config)) + return AF_INET6; + g_return_val_if_reached (AF_UNSPEC); +} + +#define _NM_IP_CONFIG_DISPATCH(config, v4_func, v6_func, dflt, ...) \ + G_STMT_START { \ + gconstpointer _config = (config); \ + \ + if (NM_IS_IP4_CONFIG (_config)) { \ + return v4_func ((NMIP4Config *) _config, ##__VA_ARGS__); \ + } else { \ + nm_assert (NM_IS_IP6_CONFIG (_config)); \ + return v6_func ((NMIP6Config *) _config, ##__VA_ARGS__); \ + } \ + } G_STMT_END + +static inline int +nm_ip_config_get_dns_priority (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_dns_priority, nm_ip6_config_get_dns_priority, 0); +} + +static inline guint +nm_ip_config_get_num_nameservers (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_num_nameservers, nm_ip6_config_get_num_nameservers, 0); +} + +static inline gconstpointer +nm_ip_config_get_nameserver (const NMIPConfig *self, guint i) +{ + _NM_IP_CONFIG_DISPATCH (self, _nm_ip4_config_get_nameserver, nm_ip6_config_get_nameserver, 0, i); +} + +static inline guint +nm_ip_config_get_num_domains (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_num_domains, nm_ip6_config_get_num_domains, 0); +} + +static inline const char * +nm_ip_config_get_domain (const NMIPConfig *self, guint i) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_domain, nm_ip6_config_get_domain, NULL, i); +} + +static inline guint +nm_ip_config_get_num_searches (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_num_searches, nm_ip6_config_get_num_searches, 0); +} + +static inline const char * +nm_ip_config_get_search (const NMIPConfig *self, guint i) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_search, nm_ip6_config_get_search, NULL, i); +} + +static inline guint +nm_ip_config_get_num_dns_options (const NMIPConfig *self) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_num_dns_options, nm_ip6_config_get_num_dns_options, 0); +} + +static inline const char * +nm_ip_config_get_dns_option (const NMIPConfig *self, guint i) +{ + _NM_IP_CONFIG_DISPATCH (self, nm_ip4_config_get_dns_option, nm_ip6_config_get_dns_option, NULL, i); } #endif /* __NETWORKMANAGER_IP4_CONFIG_H__ */ |