summaryrefslogtreecommitdiffstats
path: root/include/sys/sid.h
blob: f798d24a8f8383892dd1f5df0a2f7b69e7702d8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef _SPL_SID_H
#define _SPL_SID_H

typedef struct ksiddomain {
	uint_t		kd_ref;
	uint_t		kd_len;
	char		*kd_name;
	avl_node_t	kd_link;
} ksiddomain_t;

static inline ksiddomain_t *
ksid_lookupdomain(const char *dom)
{
        ksiddomain_t *kd;
	int len = strlen(dom);

        kd = kmem_zalloc(sizeof(ksiddomain_t), KM_SLEEP);
        kd->kd_name = kmem_zalloc(len + 1, KM_SLEEP);
	memcpy(kd->kd_name, dom, len);

        return (kd);
}

static inline void
ksiddomain_rele(ksiddomain_t *ksid)
{
	kmem_free(ksid->kd_name, strlen(ksid->kd_name) + 1);
        kmem_free(ksid, sizeof(ksiddomain_t));
}

#endif /* _SPL_SID_H */