diff options
author | Thomas Haller <thaller@redhat.com> | 2017-11-08 13:44:28 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-11-08 14:03:26 +0100 |
commit | 157932f7dd00271ce4c8876c1a6086d81c4995c3 (patch) | |
tree | 0b3f4698ed1ddebf3af3e577c3d33c15e40056fe | |
parent | 0e4405e9247e588ce89434de8eb61ce6ac094710 (diff) | |
download | NetworkManager-157932f7dd00271ce4c8876c1a6086d81c4995c3.tar.gz |
policy: merge IPv4 and IPv6 implementation of update_ip_dns()
-rw-r--r-- | src/dns/nm-dns-manager.c | 34 | ||||
-rw-r--r-- | src/dns/nm-dns-manager.h | 17 | ||||
-rw-r--r-- | src/nm-policy.c | 102 |
3 files changed, 52 insertions, 101 deletions
diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index d5392b7d41..ab56d4ba8c 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -1305,7 +1305,7 @@ forget_data (NMDnsManager *self, NMDnsIPConfigData *data) g_signal_handlers_disconnect_by_func (data->config, ip_config_dns_priority_changed, self); } -static gboolean +gboolean nm_dns_manager_add_ip_config (NMDnsManager *self, const char *iface, gpointer config, @@ -1320,6 +1320,7 @@ nm_dns_manager_add_ip_config (NMDnsManager *self, g_return_val_if_fail (NM_IS_DNS_MANAGER (self), FALSE); g_return_val_if_fail (config, FALSE); g_return_val_if_fail (iface && iface[0], FALSE); + nm_assert (NM_IP4_CONFIG (config) || NM_IS_IP6_CONFIG (config)); priv = NM_DNS_MANAGER_GET_PRIVATE (self); @@ -1368,24 +1369,6 @@ nm_dns_manager_add_ip_config (NMDnsManager *self, } gboolean -nm_dns_manager_add_ip4_config (NMDnsManager *self, - const char *iface, - NMIP4Config *config, - NMDnsIPConfigType cfg_type) -{ - return nm_dns_manager_add_ip_config (self, iface, config, cfg_type); -} - -gboolean -nm_dns_manager_add_ip6_config (NMDnsManager *self, - const char *iface, - NMIP6Config *config, - NMDnsIPConfigType cfg_type) -{ - return nm_dns_manager_add_ip_config (self, iface, config, cfg_type); -} - -static gboolean nm_dns_manager_remove_ip_config (NMDnsManager *self, gpointer config) { NMDnsManagerPrivate *priv; @@ -1395,6 +1378,7 @@ nm_dns_manager_remove_ip_config (NMDnsManager *self, gpointer config) g_return_val_if_fail (NM_IS_DNS_MANAGER (self), FALSE); g_return_val_if_fail (config, FALSE); + nm_assert (NM_IP4_CONFIG (config) || NM_IS_IP6_CONFIG (config)); priv = NM_DNS_MANAGER_GET_PRIVATE (self); @@ -1416,18 +1400,6 @@ nm_dns_manager_remove_ip_config (NMDnsManager *self, gpointer config) return FALSE; } -gboolean -nm_dns_manager_remove_ip4_config (NMDnsManager *self, NMIP4Config *config) -{ - return nm_dns_manager_remove_ip_config (self, config); -} - -gboolean -nm_dns_manager_remove_ip6_config (NMDnsManager *self, NMIP6Config *config) -{ - return nm_dns_manager_remove_ip_config (self, config); -} - void nm_dns_manager_set_initial_hostname (NMDnsManager *self, const char *hostname) diff --git a/src/dns/nm-dns-manager.h b/src/dns/nm-dns-manager.h index ee83592741..9c10096113 100644 --- a/src/dns/nm-dns-manager.h +++ b/src/dns/nm-dns-manager.h @@ -72,19 +72,12 @@ NMDnsManager * nm_dns_manager_get (void); void nm_dns_manager_begin_updates (NMDnsManager *self, const char *func); void nm_dns_manager_end_updates (NMDnsManager *self, const char *func); -gboolean nm_dns_manager_add_ip4_config (NMDnsManager *self, - const char *iface, - NMIP4Config *config, - NMDnsIPConfigType cfg_type); +gboolean nm_dns_manager_add_ip_config (NMDnsManager *self, + const char *iface, + gpointer config, + NMDnsIPConfigType cfg_type); -gboolean nm_dns_manager_remove_ip4_config (NMDnsManager *self, NMIP4Config *config); - -gboolean nm_dns_manager_add_ip6_config (NMDnsManager *self, - const char *iface, - NMIP6Config *config, - NMDnsIPConfigType cfg_type); - -gboolean nm_dns_manager_remove_ip6_config (NMDnsManager *self, NMIP6Config *config); +gboolean nm_dns_manager_remove_ip_config (NMDnsManager *self, gpointer config); void nm_dns_manager_set_initial_hostname (NMDnsManager *self, const char *hostname); diff --git a/src/nm-policy.c b/src/nm-policy.c index e56fce0b26..87e6f9e49c 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -919,26 +919,6 @@ get_best_ip_config (NMPolicy *self, } static void -update_ip4_dns (NMPolicy *self, NMDnsManager *dns_mgr) -{ - NMIP4Config *ip4_config; - const char *ip_iface = NULL; - NMVpnConnection *vpn = NULL; - NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE; - - ip4_config = get_best_ip_config (self, AF_INET, &ip_iface, NULL, NULL, &vpn); - if (ip4_config) { - if (vpn) - dns_type = NM_DNS_IP_CONFIG_TYPE_VPN; - - /* Tell the DNS manager this config is preferred by re-adding it with - * a different IP config type. - */ - nm_dns_manager_add_ip4_config (dns_mgr, ip_iface, ip4_config, dns_type); - } -} - -static void update_ip4_routing (NMPolicy *self, gboolean force_update) { NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); @@ -1009,28 +989,6 @@ update_ip6_dns_delegation (NMPolicy *self) } static void -update_ip6_dns (NMPolicy *self, NMDnsManager *dns_mgr) -{ - NMIP6Config *ip6_config; - const char *ip_iface = NULL; - NMVpnConnection *vpn = NULL; - NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE; - - ip6_config = get_best_ip_config (self, AF_INET6, &ip_iface, NULL, NULL, &vpn); - if (ip6_config) { - if (vpn) - dns_type = NM_DNS_IP_CONFIG_TYPE_VPN; - - /* Tell the DNS manager this config is preferred by re-adding it with - * a different IP config type. - */ - nm_dns_manager_add_ip6_config (dns_mgr, ip_iface, ip6_config, dns_type); - } - - update_ip6_dns_delegation (self); -} - -static void update_ip6_prefix_delegation (NMPolicy *self) { NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); @@ -1104,14 +1062,42 @@ update_ip6_routing (NMPolicy *self, gboolean force_update) } static void +update_ip_dns (NMPolicy *self, int addr_family) +{ + gpointer ip_config; + const char *ip_iface = NULL; + NMVpnConnection *vpn = NULL; + NMDnsIPConfigType dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE; + + nm_assert_addr_family (addr_family); + + ip_config = get_best_ip_config (self, addr_family, &ip_iface, NULL, NULL, &vpn); + if (ip_config) { + if (vpn) + dns_type = NM_DNS_IP_CONFIG_TYPE_VPN; + + /* Tell the DNS manager this config is preferred by re-adding it with + * a different IP config type. + */ + nm_dns_manager_add_ip_config (NM_POLICY_GET_PRIVATE (self)->dns_manager, + ip_iface, + ip_config, + dns_type); + } + + if (addr_family == AF_INET6) + update_ip6_dns_delegation (self); +} + +static void update_routing_and_dns (NMPolicy *self, gboolean force_update) { NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); nm_dns_manager_begin_updates (priv->dns_manager, __func__); - update_ip4_dns (self, priv->dns_manager); - update_ip6_dns (self, priv->dns_manager); + update_ip_dns (self, AF_INET); + update_ip_dns (self, AF_INET6); update_ip4_routing (self, force_update); update_ip6_routing (self, force_update); @@ -1800,10 +1786,10 @@ device_state_changed (NMDevice *device, ip4_config = nm_device_get_ip4_config (device); if (ip4_config) - nm_dns_manager_add_ip4_config (priv->dns_manager, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); ip6_config = nm_device_get_ip6_config (device); if (ip6_config) - nm_dns_manager_add_ip6_config (priv->dns_manager, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); update_routing_and_dns (self, FALSE); @@ -1903,17 +1889,17 @@ device_ip4_config_changed (NMDevice *device, if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) { if (old_config != new_config) { if (old_config) - nm_dns_manager_remove_ip4_config (priv->dns_manager, old_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, old_config); if (new_config) - nm_dns_manager_add_ip4_config (priv->dns_manager, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); } - update_ip4_dns (self, priv->dns_manager); + update_ip_dns (self, AF_INET); update_ip4_routing (self, TRUE); update_system_hostname (self, "ip4 conf"); } else { /* Old configs get removed immediately */ if (old_config) - nm_dns_manager_remove_ip4_config (priv->dns_manager, old_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, old_config); } nm_dns_manager_end_updates (priv->dns_manager, __func__); @@ -1939,17 +1925,17 @@ device_ip6_config_changed (NMDevice *device, if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) { if (old_config != new_config) { if (old_config) - nm_dns_manager_remove_ip6_config (priv->dns_manager, old_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, old_config); if (new_config) - nm_dns_manager_add_ip6_config (priv->dns_manager, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, new_config, NM_DNS_IP_CONFIG_TYPE_DEFAULT); } - update_ip6_dns (self, priv->dns_manager); + update_ip_dns (self, AF_INET6); update_ip6_routing (self, TRUE); update_system_hostname (self, "ip6 conf"); } else { /* Old configs get removed immediately */ if (old_config) - nm_dns_manager_remove_ip6_config (priv->dns_manager, old_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, old_config); } nm_dns_manager_end_updates (priv->dns_manager, __func__); @@ -2055,11 +2041,11 @@ vpn_connection_activated (NMPolicy *self, NMVpnConnection *vpn) ip4_config = nm_vpn_connection_get_ip4_config (vpn); if (ip4_config) - nm_dns_manager_add_ip4_config (priv->dns_manager, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_VPN); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, ip4_config, NM_DNS_IP_CONFIG_TYPE_VPN); ip6_config = nm_vpn_connection_get_ip6_config (vpn); if (ip6_config) - nm_dns_manager_add_ip6_config (priv->dns_manager, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_VPN); + nm_dns_manager_add_ip_config (priv->dns_manager, ip_iface, ip6_config, NM_DNS_IP_CONFIG_TYPE_VPN); update_routing_and_dns (self, TRUE); @@ -2078,13 +2064,13 @@ vpn_connection_deactivated (NMPolicy *self, NMVpnConnection *vpn) ip4_config = nm_vpn_connection_get_ip4_config (vpn); if (ip4_config) { /* Remove the VPN connection's IP4 config from DNS */ - nm_dns_manager_remove_ip4_config (priv->dns_manager, ip4_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, ip4_config); } ip6_config = nm_vpn_connection_get_ip6_config (vpn); if (ip6_config) { /* Remove the VPN connection's IP6 config from DNS */ - nm_dns_manager_remove_ip6_config (priv->dns_manager, ip6_config); + nm_dns_manager_remove_ip_config (priv->dns_manager, ip6_config); } update_routing_and_dns (self, TRUE); |