Esempio n. 1
0
int
cap_dns_family_limit(cap_channel_t *chan, const int *families,
    size_t nfamilies)
{
	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, "family");
	for (i = 0; i < nfamilies; i++) {
		nvlist_addf_number(limits, (uint64_t)families[i],
		    "family%u", i);
	}
	return (cap_limit_set(chan, limits));
}
Esempio n. 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));
}
Esempio n. 3
0
void
nvlist_add_number(nvlist_t *nvl, const char *name, uint64_t value)
{

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