2014-02-05 02:13:52 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
# pragma once
/***
This file is part of systemd .
Copyright ( C ) 2013 Intel Corporation . All rights reserved .
Copyright ( C ) 2014 Tom Gundersen
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Lesser General Public License for more details .
You should have received a copy of the GNU Lesser General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
# include <stdint.h>
# include <linux/if_packet.h>
# include "refcnt.h"
2014-05-19 00:02:42 +04:00
# include "util.h"
2014-02-05 02:13:52 +04:00
# include "dhcp-protocol.h"
# include "sd-dhcp-client.h"
2014-06-28 02:00:06 +04:00
struct sd_dhcp_route {
struct in_addr dst_addr ;
struct in_addr gw_addr ;
2014-11-01 21:02:44 +03:00
unsigned char dst_prefixlen ;
2014-06-28 02:00:06 +04:00
} ;
2014-02-05 02:13:52 +04:00
struct sd_dhcp_lease {
RefCount n_ref ;
2014-05-21 00:02:49 +04:00
int32_t time_offset ;
2014-02-05 02:13:52 +04:00
uint32_t t1 ;
uint32_t t2 ;
uint32_t lifetime ;
2014-05-21 00:02:49 +04:00
uint32_t mtu_aging_timeout ;
2014-02-05 02:13:52 +04:00
be32_t address ;
be32_t server_address ;
be32_t subnet_mask ;
be32_t router ;
2014-03-03 20:13:59 +04:00
be32_t next_server ;
2014-05-21 00:02:49 +04:00
be32_t broadcast ;
2014-02-05 02:13:52 +04:00
struct in_addr * dns ;
size_t dns_size ;
2014-04-29 14:17:27 +04:00
struct in_addr * ntp ;
size_t ntp_size ;
2014-05-21 00:02:49 +04:00
struct in_addr * policy_filter ;
size_t policy_filter_size ;
2014-06-28 02:00:06 +04:00
struct sd_dhcp_route * static_route ;
2014-05-21 00:02:49 +04:00
size_t static_route_size ;
2014-06-28 02:00:06 +04:00
size_t static_route_allocated ;
2014-05-21 00:02:49 +04:00
uint16_t boot_file_size ;
uint16_t mdr ;
2014-02-05 02:13:52 +04:00
uint16_t mtu ;
2014-05-21 00:02:49 +04:00
uint8_t ttl ;
bool ip_forward ;
bool ip_forward_non_local ;
2014-02-05 02:13:52 +04:00
char * domainname ;
char * hostname ;
2014-03-03 18:43:02 +04:00
char * root_path ;
2014-11-19 02:13:12 +03:00
uint8_t * client_id ;
size_t client_id_len ;
2015-07-09 19:04:01 +03:00
uint8_t * vendor_specific ;
size_t vendor_specific_len ;
2014-02-05 02:13:52 +04:00
} ;
int dhcp_lease_new ( sd_dhcp_lease * * ret ) ;
int dhcp_lease_parse_options ( uint8_t code , uint8_t len , const uint8_t * option ,
void * user_data ) ;
2014-03-19 19:05:44 +04:00
int dhcp_lease_set_default_subnet_mask ( sd_dhcp_lease * lease ) ;
2014-11-19 02:13:12 +03:00
int dhcp_lease_set_client_id ( sd_dhcp_lease * lease , const uint8_t * client_id ,
size_t client_id_len ) ;
2014-02-05 02:13:52 +04:00
DEFINE_TRIVIAL_CLEANUP_FUNC ( sd_dhcp_lease * , sd_dhcp_lease_unref ) ;
# define _cleanup_dhcp_lease_unref_ _cleanup_(sd_dhcp_lease_unrefp)