-static int monitor_rkey_from_json(JsonVariant *v, DnsResourceKey **ret_key) {
- _cleanup_(dns_resource_key_unrefp) DnsResourceKey *key = NULL;
- uint16_t type = 0, class = 0;
- const char *name = NULL;
- int r;
-
- JsonDispatch dispatch_table[] = {
- { "class", JSON_VARIANT_INTEGER, json_dispatch_uint16, PTR_TO_SIZE(&class), JSON_MANDATORY },
- { "type", JSON_VARIANT_INTEGER, json_dispatch_uint16, PTR_TO_SIZE(&type), JSON_MANDATORY },
- { "name", JSON_VARIANT_STRING, json_dispatch_const_string, PTR_TO_SIZE(&name), JSON_MANDATORY },
- {}
- };
-
- assert(v);
- assert(ret_key);
-
- r = json_dispatch(v, dispatch_table, NULL, 0, NULL);
- if (r < 0)
- return r;
-
- key = dns_resource_key_new(class, type, name);
- if (!key)
- return -ENOMEM;
-
- *ret_key = TAKE_PTR(key);
- return 0;
-}
-