sd-dhcp-lease.c   sd-dhcp-lease.c 
skipping to change at line 71 skipping to change at line 71
assert_return(mtu, -EINVAL); assert_return(mtu, -EINVAL);
if (lease->mtu) if (lease->mtu)
*mtu = lease->mtu; *mtu = lease->mtu;
else else
return -ENOENT; return -ENOENT;
return 0; return 0;
} }
int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, struct in_addr **addr, size _t *addr_size) { int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, const struct in_addr **addr ) {
assert_return(lease, -EINVAL); assert_return(lease, -EINVAL);
assert_return(addr, -EINVAL); assert_return(addr, -EINVAL);
assert_return(addr_size, -EINVAL);
if (lease->dns_size) { if (lease->dns_size) {
*addr_size = lease->dns_size;
*addr = lease->dns; *addr = lease->dns;
return lease->dns_size;
} else } else
return -ENOENT; return -ENOENT;
return 0; return 0;
} }
int sd_dhcp_lease_get_ntp(sd_dhcp_lease *lease, struct in_addr **addr, size _t *addr_size) { int sd_dhcp_lease_get_ntp(sd_dhcp_lease *lease, const struct in_addr **addr ) {
assert_return(lease, -EINVAL); assert_return(lease, -EINVAL);
assert_return(addr, -EINVAL); assert_return(addr, -EINVAL);
assert_return(addr_size, -EINVAL);
if (lease->ntp_size) { if (lease->ntp_size) {
*addr_size = lease->ntp_size;
*addr = lease->ntp; *addr = lease->ntp;
return lease->ntp_size;
} else } else
return -ENOENT; return -ENOENT;
return 0; return 0;
} }
int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainn ame) { int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainn ame) {
assert_return(lease, -EINVAL); assert_return(lease, -EINVAL);
assert_return(domainname, -EINVAL); assert_return(domainname, -EINVAL);
skipping to change at line 174 skipping to change at line 172
int sd_dhcp_lease_get_next_server(sd_dhcp_lease *lease, struct in_addr *add r) { int sd_dhcp_lease_get_next_server(sd_dhcp_lease *lease, struct in_addr *add r) {
assert_return(lease, -EINVAL); assert_return(lease, -EINVAL);
assert_return(addr, -EINVAL); assert_return(addr, -EINVAL);
addr->s_addr = lease->next_server; addr->s_addr = lease->next_server;
return 0; return 0;
} }
int sd_dhcp_lease_get_routes(sd_dhcp_lease *lease, struct sd_dhcp_route **r int sd_dhcp_lease_get_routes(sd_dhcp_lease *lease, struct sd_dhcp_route **r
outes, outes) {
size_t *routes_size) {
assert_return(lease, -EINVAL); assert_return(lease, -EINVAL);
assert_return(routes, -EINVAL); assert_return(routes, -EINVAL);
assert_return(routes_size, -EINVAL);
if (lease->static_route_size) { if (lease->static_route_size) {
*routes = lease->static_route; *routes = lease->static_route;
*routes_size = lease->static_route_size; return lease->static_route_size;
} else } else
return -ENOENT; return -ENOENT;
return 0; return 0;
} }
sd_dhcp_lease *sd_dhcp_lease_ref(sd_dhcp_lease *lease) { sd_dhcp_lease *sd_dhcp_lease_ref(sd_dhcp_lease *lease) {
if (lease) if (lease)
assert_se(REFCNT_INC(lease->n_ref) >= 2); assert_se(REFCNT_INC(lease->n_ref) >= 2);
skipping to change at line 520 skipping to change at line 516
lease_parse_u8(option, len, &lease->ttl, 1); lease_parse_u8(option, len, &lease->ttl, 1);
break; break;
case DHCP_OPTION_BOOT_FILE_SIZE: case DHCP_OPTION_BOOT_FILE_SIZE:
lease_parse_u16(option, len, &lease->boot_file_size, 0); lease_parse_u16(option, len, &lease->boot_file_size, 0);
break; break;
case DHCP_OPTION_DOMAIN_NAME: case DHCP_OPTION_DOMAIN_NAME:
r = lease_parse_string(option, len, &lease->domainname); {
_cleanup_free_ char *domainname = NULL;
r = lease_parse_string(option, len, &domainname);
if (r < 0) if (r < 0)
return r; return r;
break; if (!hostname_is_valid(domainname) || is_localhost(domainna
me))
break;
free(lease->domainname);
lease->domainname = domainname;
domainname = NULL;
break;
}
case DHCP_OPTION_HOST_NAME: case DHCP_OPTION_HOST_NAME:
r = lease_parse_string(option, len, &lease->hostname); {
_cleanup_free_ char *hostname = NULL;
r = lease_parse_string(option, len, &hostname);
if (r < 0) if (r < 0)
return r; return r;
break; if (!hostname_is_valid(hostname) || is_localhost(hostname))
break;
free(lease->hostname);
lease->hostname = hostname;
hostname = NULL;
break;
}
case DHCP_OPTION_ROOT_PATH: case DHCP_OPTION_ROOT_PATH:
r = lease_parse_string(option, len, &lease->root_path); r = lease_parse_string(option, len, &lease->root_path);
if (r < 0) if (r < 0)
return r; return r;
break; break;
case DHCP_OPTION_RENEWAL_T1_TIME: case DHCP_OPTION_RENEWAL_T1_TIME:
lease_parse_u32(option, len, &lease->t1, 1); lease_parse_u32(option, len, &lease->t1, 1);
skipping to change at line 590 skipping to change at line 606
lease->n_ref = REFCNT_INIT; lease->n_ref = REFCNT_INIT;
*ret = lease; *ret = lease;
return 0; return 0;
} }
int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file) { int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file) {
_cleanup_free_ char *temp_path = NULL; _cleanup_free_ char *temp_path = NULL;
_cleanup_fclose_ FILE *f = NULL; _cleanup_fclose_ FILE *f = NULL;
struct in_addr address; struct in_addr address;
struct in_addr *addresses; const struct in_addr *addresses;
size_t addresses_size;
const char *string; const char *string;
uint16_t mtu; uint16_t mtu;
struct sd_dhcp_route *routes; struct sd_dhcp_route *routes;
size_t routes_size;
int r; int r;
assert(lease); assert(lease);
assert(lease_file); assert(lease_file);
r = fopen_temporary(lease_file, &f, &temp_path); r = fopen_temporary(lease_file, &f, &temp_path);
if (r < 0) if (r < 0)
goto finish; goto finish;
fchmod(fileno(f), 0644); fchmod(fileno(f), 0644);
skipping to change at line 638 skipping to change at line 652
inet_ntoa(address)); inet_ntoa(address));
r = sd_dhcp_lease_get_next_server(lease, &address); r = sd_dhcp_lease_get_next_server(lease, &address);
if (r >= 0) if (r >= 0)
fprintf(f, "NEXT_SERVER=%s\n", inet_ntoa(address)); fprintf(f, "NEXT_SERVER=%s\n", inet_ntoa(address));
r = sd_dhcp_lease_get_mtu(lease, &mtu); r = sd_dhcp_lease_get_mtu(lease, &mtu);
if (r >= 0) if (r >= 0)
fprintf(f, "MTU=%" PRIu16 "\n", mtu); fprintf(f, "MTU=%" PRIu16 "\n", mtu);
r = sd_dhcp_lease_get_dns(lease, &addresses, &addresses_size); fputs("DNS=", f);
r = sd_dhcp_lease_get_dns(lease, &addresses);
if (r >= 0) if (r >= 0)
serialize_in_addrs(f, "DNS", addresses, addresses_size); serialize_in_addrs(f, addresses, r);
fputs("\n", f);
r = sd_dhcp_lease_get_ntp(lease, &addresses, &addresses_size); fputs("NTP=", f);
r = sd_dhcp_lease_get_ntp(lease, &addresses);
if (r >= 0) if (r >= 0)
serialize_in_addrs(f, "NTP", addresses, addresses_size); serialize_in_addrs(f, addresses, r);
fputs("\n", f);
r = sd_dhcp_lease_get_domainname(lease, &string); r = sd_dhcp_lease_get_domainname(lease, &string);
if (r >= 0) if (r >= 0)
fprintf(f, "DOMAINNAME=%s\n", string); fprintf(f, "DOMAINNAME=%s\n", string);
r = sd_dhcp_lease_get_hostname(lease, &string); r = sd_dhcp_lease_get_hostname(lease, &string);
if (r >= 0) if (r >= 0)
fprintf(f, "HOSTNAME=%s\n", string); fprintf(f, "HOSTNAME=%s\n", string);
r = sd_dhcp_lease_get_root_path(lease, &string); r = sd_dhcp_lease_get_root_path(lease, &string);
if (r >= 0) if (r >= 0)
fprintf(f, "ROOT_PATH=%s\n", string); fprintf(f, "ROOT_PATH=%s\n", string);
r = sd_dhcp_lease_get_routes(lease, &routes, &routes_size); r = sd_dhcp_lease_get_routes(lease, &routes);
if (r >= 0) if (r >= 0)
serialize_dhcp_routes(f, "ROUTES", routes, routes_size); serialize_dhcp_routes(f, "ROUTES", routes, r);
r = 0; r = 0;
fflush(f); fflush(f);
if (ferror(f) || rename(temp_path, lease_file) < 0) { if (ferror(f) || rename(temp_path, lease_file) < 0) {
r = -errno; r = -errno;
unlink(lease_file); unlink(lease_file);
unlink(temp_path); unlink(temp_path);
} }
skipping to change at line 753 skipping to change at line 771
if (next_server) { if (next_server) {
r = inet_pton(AF_INET, next_server, &addr); r = inet_pton(AF_INET, next_server, &addr);
if (r < 0) if (r < 0)
return r; return r;
lease->next_server = addr.s_addr; lease->next_server = addr.s_addr;
} }
if (dns) { if (dns) {
r = deserialize_in_addrs(&lease->dns, &lease->dns_size, dns ); r = deserialize_in_addrs(&lease->dns, dns);
if (r < 0) if (r < 0)
return r; return r;
lease->dns_size = r;
} }
if (ntp) { if (ntp) {
r = deserialize_in_addrs(&lease->ntp, &lease->ntp_size, dns ); r = deserialize_in_addrs(&lease->ntp, ntp);
if (r < 0) if (r < 0)
return r; return r;
lease->ntp_size = r;
} }
if (mtu) { if (mtu) {
uint16_t u; uint16_t u;
if (sscanf(mtu, "%" SCNu16, &u) > 0) if (sscanf(mtu, "%" SCNu16, &u) > 0)
lease->mtu = u; lease->mtu = u;
} }
if (routes) { if (routes) {
r = deserialize_dhcp_routes(&lease->static_route, &lease->s tatic_route_size, r = deserialize_dhcp_routes(&lease->static_route, &lease->s tatic_route_size,
 End of changes. 29 change blocks. 
26 lines changed or deleted 49 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/