chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: DHCPv4 - allow opting out of using DNS servers
[elogind.git]
/
src
/
network
/
networkd-link.c
diff --git
a/src/network/networkd-link.c
b/src/network/networkd-link.c
index 25d92c8aa4f46574b68c87e4b21e1c64bd7eaacc..6186f7f892603f16c617f928d31b367755fd52f5 100644
(file)
--- a/
src/network/networkd-link.c
+++ b/
src/network/networkd-link.c
@@
-319,6
+319,7
@@
static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
int r;
assert(link);
int r;
assert(link);
+ assert(link->network);
if (link->state == LINK_STATE_FAILED)
return;
if (link->state == LINK_STATE_FAILED)
return;
@@
-378,6
+379,7
@@
static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
if (event == DHCP_EVENT_IP_CHANGE || event == DHCP_EVENT_IP_ACQUIRE) {
_cleanup_address_free_ Address *addr = NULL;
_cleanup_route_free_ Route *rt = NULL;
if (event == DHCP_EVENT_IP_CHANGE || event == DHCP_EVENT_IP_ACQUIRE) {
_cleanup_address_free_ Address *addr = NULL;
_cleanup_route_free_ Route *rt = NULL;
+ struct in_addr **nameservers;
log_struct_link(LOG_INFO, link,
"MESSAGE=%s: DHCPv4 address %u.%u.%u.%u/%u via %u.%u.%u.%u",
log_struct_link(LOG_INFO, link,
"MESSAGE=%s: DHCPv4 address %u.%u.%u.%u/%u via %u.%u.%u.%u",
@@
-420,6
+422,15
@@
static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
addr = NULL;
rt = NULL;
addr = NULL;
rt = NULL;
+ if (link->network->dhcp_dns) {
+ r = sd_dhcp_client_get_dns(client, &nameservers);
+ if (r >= 0) {
+ r = manager_update_resolv_conf(link->manager);
+ if (r < 0)
+ log_error("Failed to update resolv.conf");
+ }
+ }
+
link_enter_set_addresses(link);
}
link_enter_set_addresses(link);
}