Exemple #1
0
int
cap_dns_type_limit(cap_channel_t *chan, const char * const *types,
    size_t ntypes)
{
	nvlist_t *limits;
	unsigned int i;

	if (cap_limit_get(chan, &limits) < 0)
		return (-1);
	if (limits == NULL)
		limits = nvlist_create(0);
	else
		limit_remove(limits, "type");
	for (i = 0; i < ntypes; i++)
		nvlist_addf_string(limits, types[i], "type%u", i);
	return (cap_limit_set(chan, limits));
}
Exemple #2
0
int
cap_pwd_limit_users(cap_channel_t *chan, const char * const *names,
    size_t nnames, uid_t *uids, size_t nuids)
{
	nvlist_t *limits, *users;
	unsigned int i;

	if (cap_limit_get(chan, &limits) < 0)
		return (-1);
	if (limits == NULL) {
		limits = nvlist_create(0);
	} else {
		if (nvlist_exists_nvlist(limits, "users"))
			nvlist_free_nvlist(limits, "users");
	}
	users = nvlist_create(0);
	for (i = 0; i < nuids; i++)
		nvlist_addf_number(users, (uint64_t)uids[i], "uid%u", i);
	for (i = 0; i < nnames; i++)
		nvlist_addf_string(users, names[i], "name%u", i);
	nvlist_move_nvlist(limits, "users", users);
	return (cap_limit_set(chan, limits));
}
Exemple #3
0
void
nvlist_add_string(nvlist_t *nvl, const char *name, const char *value)
{

	nvlist_addf_string(nvl, value, "%s", name);
}