mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-31 23:00:11 +01:00
device: use nm_device_resolve_address()
This commit is contained in:
parent
27eae4043b
commit
620fbb7894
1 changed files with 32 additions and 23 deletions
|
|
@ -73,6 +73,7 @@
|
||||||
#include "nm-audit-manager.h"
|
#include "nm-audit-manager.h"
|
||||||
#include "nm-connectivity.h"
|
#include "nm-connectivity.h"
|
||||||
#include "nm-dbus-interface.h"
|
#include "nm-dbus-interface.h"
|
||||||
|
#include "nm-hostname-manager.h"
|
||||||
|
|
||||||
#include "nm-device-generic.h"
|
#include "nm-device-generic.h"
|
||||||
#include "nm-device-vlan.h"
|
#include "nm-device-vlan.h"
|
||||||
|
|
@ -220,7 +221,6 @@ typedef enum {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ResolverState state;
|
ResolverState state;
|
||||||
GResolver * resolver;
|
|
||||||
GInetAddress *address;
|
GInetAddress *address;
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
char * hostname;
|
char * hostname;
|
||||||
|
|
@ -777,7 +777,6 @@ _hostname_resolver_free(HostnameResolver *resolver)
|
||||||
|
|
||||||
nm_clear_g_source(&resolver->timeout_id);
|
nm_clear_g_source(&resolver->timeout_id);
|
||||||
nm_clear_g_cancellable(&resolver->cancellable);
|
nm_clear_g_cancellable(&resolver->cancellable);
|
||||||
nm_g_object_unref(resolver->resolver);
|
|
||||||
nm_g_object_unref(resolver->address);
|
nm_g_object_unref(resolver->address);
|
||||||
g_free(resolver->hostname);
|
g_free(resolver->hostname);
|
||||||
nm_g_slice_free(resolver);
|
nm_g_slice_free(resolver);
|
||||||
|
|
@ -17666,21 +17665,37 @@ hostname_dns_lookup_callback(GObject *source, GAsyncResult *result, gpointer use
|
||||||
NMDevice * self;
|
NMDevice * self;
|
||||||
gs_free char * hostname = NULL;
|
gs_free char * hostname = NULL;
|
||||||
gs_free char * addr_str = NULL;
|
gs_free char * addr_str = NULL;
|
||||||
|
gs_free char * output = NULL;
|
||||||
gs_free_error GError *error = NULL;
|
gs_free_error GError *error = NULL;
|
||||||
|
|
||||||
hostname = g_resolver_lookup_by_address_finish(G_RESOLVER(source), result, &error);
|
output = nm_device_resolve_address_finish(result, &error);
|
||||||
if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
resolver = user_data;
|
resolver = user_data;
|
||||||
self = resolver->device;
|
self = resolver->device;
|
||||||
resolver->state = RESOLVER_DONE;
|
resolver->state = RESOLVER_DONE;
|
||||||
resolver->hostname = g_strdup(hostname);
|
|
||||||
|
|
||||||
_LOGD(LOGD_DNS,
|
if (error) {
|
||||||
"hostname-from-dns: lookup done for %s, result %s%s%s",
|
_LOGD(LOGD_DNS,
|
||||||
(addr_str = g_inet_address_to_string(resolver->address)),
|
"hostname-from-dns: lookup error for %s: %s",
|
||||||
NM_PRINT_FMT_QUOTE_STRING(hostname));
|
(addr_str = g_inet_address_to_string(resolver->address)),
|
||||||
|
error->message);
|
||||||
|
} else {
|
||||||
|
gboolean valid;
|
||||||
|
|
||||||
|
resolver->hostname = g_steal_pointer(&output);
|
||||||
|
valid = nm_hostname_manager_validate_hostname(resolver->hostname);
|
||||||
|
|
||||||
|
_LOGD(LOGD_DNS,
|
||||||
|
"hostname-from-dns: lookup done for %s, result %s%s%s%s",
|
||||||
|
(addr_str = g_inet_address_to_string(resolver->address)),
|
||||||
|
NM_PRINT_FMT_QUOTE_STRING(resolver->hostname),
|
||||||
|
valid ? "" : " (invalid)");
|
||||||
|
|
||||||
|
if (!valid)
|
||||||
|
g_clear_pointer(&resolver->hostname, g_free);
|
||||||
|
}
|
||||||
|
|
||||||
nm_clear_g_cancellable(&resolver->cancellable);
|
nm_clear_g_cancellable(&resolver->cancellable);
|
||||||
g_signal_emit(self, signals[DNS_LOOKUP_DONE], 0);
|
g_signal_emit(self, signals[DNS_LOOKUP_DONE], 0);
|
||||||
|
|
@ -17778,7 +17793,6 @@ nm_device_get_hostname_from_dns_lookup(NMDevice *self, int addr_family, gboolean
|
||||||
if (!resolver) {
|
if (!resolver) {
|
||||||
resolver = g_slice_new(HostnameResolver);
|
resolver = g_slice_new(HostnameResolver);
|
||||||
*resolver = (HostnameResolver){
|
*resolver = (HostnameResolver){
|
||||||
.resolver = g_resolver_get_default(),
|
|
||||||
.device = self,
|
.device = self,
|
||||||
.addr_family = addr_family,
|
.addr_family = addr_family,
|
||||||
.state = RESOLVER_WAIT_ADDRESS,
|
.state = RESOLVER_WAIT_ADDRESS,
|
||||||
|
|
@ -17828,20 +17842,15 @@ nm_device_get_hostname_from_dns_lookup(NMDevice *self, int addr_family, gboolean
|
||||||
}
|
}
|
||||||
|
|
||||||
if (address_changed && new_address) {
|
if (address_changed && new_address) {
|
||||||
gs_free char *str = NULL;
|
|
||||||
|
|
||||||
_LOGT(LOGD_DNS,
|
|
||||||
"hostname-from-dns: starting lookup for address %s",
|
|
||||||
(str = g_inet_address_to_string(new_address)));
|
|
||||||
|
|
||||||
resolver->state = RESOLVER_IN_PROGRESS;
|
resolver->state = RESOLVER_IN_PROGRESS;
|
||||||
resolver->cancellable = g_cancellable_new();
|
resolver->cancellable = g_cancellable_new();
|
||||||
resolver->address = g_steal_pointer(&new_address);
|
resolver->address = g_steal_pointer(&new_address);
|
||||||
g_resolver_lookup_by_address_async(resolver->resolver,
|
|
||||||
resolver->address,
|
nm_device_resolve_address(addr_family,
|
||||||
resolver->cancellable,
|
g_inet_address_to_bytes(resolver->address),
|
||||||
hostname_dns_lookup_callback,
|
resolver->cancellable,
|
||||||
resolver);
|
hostname_dns_lookup_callback,
|
||||||
|
resolver);
|
||||||
nm_clear_g_source(&resolver->timeout_id);
|
nm_clear_g_source(&resolver->timeout_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue