1ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman#include "perm.h"
2ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman
3ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashmanvoid permissive_usage() {
4ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    fprintf(stderr, "\tpermissive\n");
5ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman}
6ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman
7ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashmanstatic int list_permissive(policydb_t * policydb)
8ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman{
9ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    struct ebitmap_node *n;
10ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    unsigned int bit;
11ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman
12ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    /*
13ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman     * iterate over all domains and check if domain is in permissive
14ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman     */
15ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    ebitmap_for_each_bit(&policydb->permissive_map, n, bit)
16ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    {
17ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman        if (ebitmap_node_get_bit(n, bit)) {
18ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman            printf("%s\n", policydb->p_type_val_to_name[bit -1]);
19ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman        }
20ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    }
21ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    return 0;
22ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman}
23ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman
24ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashmanint permissive_func (int argc, __attribute__ ((unused)) char **argv, policydb_t *policydb) {
25ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    if (argc != 1) {
26ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman        USAGE_ERROR = true;
27ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman        return -1;
28ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    }
29ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman    return list_permissive(policydb);
30ef4fd30672ebfeac1a0ad04f65deb7b38050b818dcashman}
31