"XAUTH_CLIENT",
"DATABASE",
"FETCHER",
+ "RESOLVER",
"CUSTOM",
);
case FEATURE_NONCE_GEN:
case FEATURE_DATABASE:
case FEATURE_FETCHER:
+ case FEATURE_RESOLVER:
/* put these special cases in their (type-specific) buckets */
data = chunk_empty;
break;
case FEATURE_RNG:
return a->arg.rng_quality <= b->arg.rng_quality;
case FEATURE_NONCE_GEN:
+ case FEATURE_RESOLVER:
return TRUE;
case FEATURE_PRIVKEY:
case FEATURE_PRIVKEY_GEN:
case FEATURE_PRF:
case FEATURE_DH:
case FEATURE_NONCE_GEN:
+ case FEATURE_RESOLVER:
case FEATURE_PRIVKEY:
case FEATURE_PRIVKEY_GEN:
case FEATURE_PUBKEY:
}
break;
case FEATURE_NONCE_GEN:
+ case FEATURE_RESOLVER:
if (asprintf(&str, "%N", plugin_feature_names, feature->type) > 0)
{
return str;
lib->fetcher->add_fetcher(lib->fetcher, reg->arg.reg.f,
feature->arg.fetcher);
break;
+ case FEATURE_RESOLVER:
+ lib->resolver->add_resolver(lib->resolver, reg->arg.reg.f);
+ break;
default:
break;
}
case FEATURE_FETCHER:
lib->fetcher->remove_fetcher(lib->fetcher, reg->arg.reg.f);
break;
+ case FEATURE_RESOLVER:
+ lib->resolver->remove_resolver(lib->resolver, reg->arg.reg.f);
+ break;
default:
break;
}
FEATURE_DATABASE,
/** fetcher_t */
FEATURE_FETCHER,
+ /** resolver_t */
+ FEATURE_RESOLVER,
/** custom feature, described with a string */
FEATURE_CUSTOM,
} type;
#define _PLUGIN_FEATURE_EAP_PEER(kind, type) __PLUGIN_FEATURE(kind, EAP_PEER, .eap = type)
#define _PLUGIN_FEATURE_DATABASE(kind, type) __PLUGIN_FEATURE(kind, DATABASE, .database = type)
#define _PLUGIN_FEATURE_FETCHER(kind, type) __PLUGIN_FEATURE(kind, FETCHER, .fetcher = type)
+#define _PLUGIN_FEATURE_RESOLVER(kind, ...) __PLUGIN_FEATURE(kind, RESOLVER, .custom = NULL)
#define _PLUGIN_FEATURE_CUSTOM(kind, name) __PLUGIN_FEATURE(kind, CUSTOM, .custom = name)
#define _PLUGIN_FEATURE_XAUTH_SERVER(kind, name) __PLUGIN_FEATURE(kind, XAUTH_SERVER, .xauth = name)
#define _PLUGIN_FEATURE_XAUTH_PEER(kind, name) __PLUGIN_FEATURE(kind, XAUTH_PEER, .xauth = name)
#define _PLUGIN_FEATURE_REGISTER_CONTAINER_ENCODE(type, f, final)__PLUGIN_FEATURE_REGISTER_BUILDER(type, f, final)
#define _PLUGIN_FEATURE_REGISTER_DATABASE(type, f) __PLUGIN_FEATURE_REGISTER(type, f)
#define _PLUGIN_FEATURE_REGISTER_FETCHER(type, f) __PLUGIN_FEATURE_REGISTER(type, f)
+#define _PLUGIN_FEATURE_REGISTER_RESOLVER(type, f) __PLUGIN_FEATURE_REGISTER(type, f)
#define _PLUGIN_FEATURE_CALLBACK(_cb, _data) (plugin_feature_t){ FEATURE_CALLBACK, FEATURE_NONE, .arg.cb = { .f = _cb, .data = _data } }