networkd-dhcp6.c revision 85bd849f09aceb7f972a0697494ea22b2247a5d7
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering This file is part of systemd.
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering Copyright (C) 2014 Intel Corporation. All rights reserved.
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering systemd is free software; you can redistribute it and/or modify it
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering under the terms of the GNU Lesser General Public License as published by
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering (at your option) any later version.
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering systemd is distributed in the hope that it will be useful, but
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering Lesser General Public License for more details.
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering You should have received a copy of the GNU Lesser General Public License
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poetteringstatic void dhcp6_handler(sd_dhcp6_client *client, int event, void *userdata) {
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering log_link_debug(link, "DHCPv6 event %d", event);
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering log_link_warning(link, "DHCPv6 error: %s",
6e0684729420912df019cc64d3f8a3c8290cc5f1Lennart Poettering log_link_warning(link, "DHCPv6 unknown event: %d",
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poetteringstatic int dhcp6_configure(Link *link, int event) {
8300ba218e3cf5049496937be8bce10f22d09bbcTom Gundersen if (event != ICMP6_EVENT_ROUTER_ADVERTISMENT_MANAGED)
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering r = sd_dhcp6_client_get_information_request(link->dhcp6_client,
801ad6a6a9cd8fbd58b9f9c27f20dbb3c87d47ddLennart Poettering log_link_warning(link, "Could not get DHCPv6 Information request setting");
801ad6a6a9cd8fbd58b9f9c27f20dbb3c87d47ddLennart Poettering sd_dhcp6_client_unref(link->dhcp6_client);
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering r = sd_dhcp6_client_set_information_request(link->dhcp6_client,
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering log_link_warning(link, "Could not unset DHCPv6 Information request");
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering sd_dhcp6_client_unref(link->dhcp6_client);
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering r = sd_dhcp6_client_start(link->dhcp6_client);
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering log_link_warning(link, "Could not restart DHCPv6 after enabling Information request");
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering sd_dhcp6_client_unref(link->dhcp6_client);
ec2c5e4398f9d65e5dfe61530f2556224733d1e6Lennart Poettering r = sd_dhcp6_client_attach_event(link->dhcp6_client, NULL, 0);
link);
switch(event) {
if (event < 0)
event);