1/*
2 * Policy capability support functions
3 */
4
5#include <string.h>
6#include <sepol/policydb/polcaps.h>
7
8static const char *polcap_names[] = {
9	"network_peer_controls",	/* POLICYDB_CAPABILITY_NETPEER */
10	"open_perms",			/* POLICYDB_CAPABILITY_OPENPERM */
11	"extended_socket_class",	/* POLICYDB_CAPABILITY_EXTSOCKCLASS */
12	"always_check_network",		/* POLICYDB_CAPABILITY_ALWAYSNETWORK */
13	"cgroup_seclabel",		/* POLICYDB_CAPABILITY_SECLABEL */
14	"nnp_nosuid_transition",	/* POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION */
15	NULL
16};
17
18int sepol_polcap_getnum(const char *name)
19{
20	int capnum;
21
22	for (capnum = 0; capnum <= POLICYDB_CAPABILITY_MAX; capnum++) {
23		if (polcap_names[capnum] == NULL)
24			continue;
25		if (strcasecmp(polcap_names[capnum], name) == 0)
26			return capnum;
27	}
28	return -1;
29}
30
31const char *sepol_polcap_getname(unsigned int capnum)
32{
33	if (capnum > POLICYDB_CAPABILITY_MAX)
34		return NULL;
35
36	return polcap_names[capnum];
37}
38