Lines Matching refs:option

10   (at your option) any later version.
270 struct sd_dhcp_raw_option *option = lease->private_options;
272 LIST_REMOVE(options, lease->private_options, option);
274 free(option->data);
275 free(option);
290 static int lease_parse_u32(const uint8_t *option, size_t len, uint32_t *ret, uint32_t min) {
291 assert(option);
297 *ret = unaligned_read_be32((be32_t*) option);
304 static int lease_parse_u16(const uint8_t *option, size_t len, uint16_t *ret, uint16_t min) {
305 assert(option);
311 *ret = unaligned_read_be16((be16_t*) option);
318 static int lease_parse_be32(const uint8_t *option, size_t len, be32_t *ret) {
319 assert(option);
325 memcpy(ret, option, 4);
329 static int lease_parse_string(const uint8_t *option, size_t len, char **ret) {
330 assert(option);
342 if (memchr(option, 0, len - 1))
345 string = strndup((const char *) option, len);
356 static int lease_parse_domain(const uint8_t *option, size_t len, char **ret) {
360 assert(option);
363 r = lease_parse_string(option, len, &name);
388 static int lease_parse_in_addrs(const uint8_t *option, size_t len, struct in_addr **ret, size_t *n_ret) {
389 assert(option);
405 addresses = newdup(struct in_addr, option, n_addresses);
418 const uint8_t *option, size_t len,
423 assert(option || len <= 0);
441 r = in_addr_default_prefixlen((struct in_addr*) option, &route->dst_prefixlen);
447 assert_se(lease_parse_be32(option, 4, &addr.s_addr) >= 0);
449 option += 4;
451 assert_se(lease_parse_be32(option, 4, &route->gw_addr.s_addr) >= 0);
452 option += 4;
463 const uint8_t *option, size_t len,
466 assert(option || len <= 0);
474 /* option format: (subnet-mask-width significant-subnet-octets gateway-ip)* */
485 dst_octets = (*option == 0 ? 0 : ((*option - 1) / 8) + 1);
486 route->dst_prefixlen = *option;
487 option++;
495 memcpy(&route->dst_addr.s_addr, option, dst_octets);
496 option += dst_octets;
502 assert_se(lease_parse_be32(option, 4, &route->gw_addr.s_addr) >= 0);
503 option += 4;
512 int dhcp_lease_parse_options(uint8_t code, uint8_t len, const void *option, void *userdata) {
521 r = lease_parse_u32(option, len, &lease->lifetime, 1);
528 r = lease_parse_be32(option, len, &lease->server_address);
535 r = lease_parse_be32(option, len, &lease->subnet_mask);
543 r = lease_parse_be32(option, len, &lease->broadcast);
552 r = lease_parse_be32(option, 4, &lease->router);
559 r = lease_parse_in_addrs(option, len, &lease->dns, &lease->dns_size);
565 r = lease_parse_in_addrs(option, len, &lease->ntp, &lease->ntp_size);
571 r = lease_parse_routes(option, len, &lease->static_route, &lease->static_route_size, &lease->static_route_allocated);
577 r = lease_parse_u16(option, len, &lease->mtu, 68);
583 r = lease_parse_domain(option, len, &lease->domainname);
592 r = lease_parse_domain(option, len, &lease->hostname);
601 r = lease_parse_string(option, len, &lease->root_path);
607 r = lease_parse_u32(option, len, &lease->t1, 1);
613 r = lease_parse_u32(option, len, &lease->t2, 1);
620 option, len,
631 r = lease_parse_string(option, len, &tz);
633 log_debug_errno(r, "Failed to parse timezone option, ignoring: %m");
656 p = memdup(option, len);
668 r = dhcp_lease_insert_private_option(lease, code, option, len);
675 log_debug("Ignoring option DHCP option %"PRIu8" while parsing.", code);
683 struct sd_dhcp_raw_option *cur, *option;
691 log_debug("Ignoring duplicate option, tagged %i.", tag);
696 option = new(struct sd_dhcp_raw_option, 1);
697 if (!option)
700 option->tag = tag;
701 option->length = len;
702 option->data = memdup(data, len);
703 if (!option->data) {
704 free(option);
708 LIST_INSERT_BEFORE(options, lease->private_options, cur, option);
729 struct sd_dhcp_raw_option *option;
850 LIST_FOREACH(options, option, lease->private_options) {
853 xsprintf(key, "OPTION_%" PRIu8, option->tag);
854 r = serialize_dhcp_option(f, key, option->data, option->length);
1073 log_debug_errno(r, "Failed to parse private DHCP option %s, ignoring: %m", options[i]);