sd-dhcp6-lease.c revision 7bd8e95d44977833d0de3fc4e893eb3bc84351d6
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering This file is part of systemd.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering Copyright (C) 2014 Tom Gundersen
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering Copyright (C) 2014 Intel Corporation. All rights reserved.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering systemd is free software; you can redistribute it and/or modify it
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering under the terms of the GNU Lesser General Public License as published by
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering the Free Software Foundation; either version 2.1 of the License, or
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering (at your option) any later version.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering systemd is distributed in the hope that it will be useful, but
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering Lesser General Public License for more details.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering You should have received a copy of the GNU Lesser General Public License
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_clear_timers(DHCP6IA *ia) {
6bedfcbb2970e06a4d3280c8fb62083d252ede73Lennart Poettering ia->timeout_t1 = sd_event_source_unref(ia->timeout_t1);
2583fbea8e762d2e915582af60560f884d5093f5Lennart Poettering ia->timeout_t2 = sd_event_source_unref(ia->timeout_t2);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_ia_rebind_expire(const DHCP6IA *ia, uint32_t *expire) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering LIST_FOREACH(addresses, addr, ia->addresses) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering t = be32toh(addr->iaaddr.lifetime_valid);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringDHCP6IA *dhcp6_lease_free_ia(DHCP6IA *ia) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering LIST_REMOVE(addresses, ia->addresses, address);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_set_serverid(sd_dhcp6_lease *lease, const uint8_t *id,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_get_serverid(sd_dhcp6_lease *lease, uint8_t **id, size_t *len) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_set_preference(sd_dhcp6_lease *lease, uint8_t preference) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_get_preference(sd_dhcp6_lease *lease, uint8_t *preference) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_set_rapid_commit(sd_dhcp6_lease *lease) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_get_rapid_commit(sd_dhcp6_lease *lease, bool *rapid_commit) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_get_iaid(sd_dhcp6_lease *lease, be32_t *iaid) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint sd_dhcp6_lease_get_address(sd_dhcp6_lease *lease, struct in6_addr *addr,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering assert_return(lifetime_preferred, -EINVAL);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering memcpy(addr, &lease->addr_iter->iaaddr.address,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering sizeof(struct in6_addr));
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering be32toh(lease->addr_iter->iaaddr.lifetime_preferred);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *lifetime_valid = be32toh(lease->addr_iter->iaaddr.lifetime_valid);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering lease->addr_iter = lease->addr_iter->addresses_next;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringvoid sd_dhcp6_lease_reset_address_iter(sd_dhcp6_lease *lease) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringint dhcp6_lease_set_dns(sd_dhcp6_lease *lease, uint8_t *optval, size_t optlen) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering r = dhcp6_option_parse_ip6addrs(optval, optlen, &lease->dns,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering log_dhcp6_client(client, "Invalid DNS server option: %s",
3ee897d6c2401effbc82f5eef35fce405781d6c8Lennart Poetteringint sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, struct in6_addr **addrs) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringsd_dhcp6_lease *sd_dhcp6_lease_ref(sd_dhcp6_lease *lease) {
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering assert_se(REFCNT_INC(lease->n_ref) >= 2);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringsd_dhcp6_lease *sd_dhcp6_lease_unref(sd_dhcp6_lease *lease) {
3ee897d6c2401effbc82f5eef35fce405781d6c8Lennart Poettering if (lease && REFCNT_DEC(lease->n_ref) == 0) {