static int link_update_mdns_support(Link *l) { _cleanup_free_ char *b = NULL; int r; assert(l); r = sd_network_link_get_mdns(l->ifindex, &b); if (r == -ENODATA) { r = 0; goto clear; } if (r < 0) goto clear; l->mdns_support = resolve_support_from_string(b); if (l->mdns_support < 0) { r = -EINVAL; goto clear; } return 0; clear: l->mdns_support = RESOLVE_SUPPORT_NO; return r; }
int config_parse_resolve( const char* unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { ResolveSupport *resolve = data; int k; assert(filename); assert(lvalue); assert(rvalue); assert(resolve); /* Our enum shall be a superset of booleans, hence first try * to parse as boolean, and then as enum */ k = parse_boolean(rvalue); if (k > 0) *resolve = RESOLVE_SUPPORT_YES; else if (k == 0) *resolve = RESOLVE_SUPPORT_NO; else { ResolveSupport s; s = resolve_support_from_string(rvalue); if (s < 0){ log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse %s= option, ignoring: %s", lvalue, rvalue); return 0; } *resolve = s; } return 0; }