10
#include <util/member.h>
11
#include <fs/xattr_list.h>
12
#include <kernel/task/resource/security.h>
13
#include <security/smac/smac.h>
15
#include <kernel/task/resource/idesc.h>
17
static struct xattr_list *sock_xattr_list(struct idesc *idesc) {
22
sock = member_cast_out(idesc, struct sock, idesc);
24
return &sock->sock_xattr.xattr_list;
27
static int sock_getxattr(struct idesc *idesc, const char *name, void *value,
29
return getxattr_generic(sock_xattr_list(idesc), name, value, size);
32
static int sock_setxattr(struct idesc *idesc, const char *name,
33
const void *value, size_t size, int flags) {
34
return setxattr_generic(sock_xattr_list(idesc), name, value, size, flags);
37
static int sock_listxattr(struct idesc *idesc, char *list, size_t size) {
38
return listxattr_generic(sock_xattr_list(idesc), list, size);
41
static int sock_removexattr(struct idesc *idesc, const char *name) {
42
return removexattr_generic(sock_xattr_list(idesc), name);
45
static const struct idesc_xattrops sock_xattrops = {
46
.getxattr = sock_getxattr,
47
.setxattr = sock_setxattr,
48
.listxattr = sock_listxattr,
49
.removexattr = sock_removexattr,
52
void sock_xattr_init(struct sock *sock) {
53
sock->idesc.idesc_xattrops = &sock_xattrops;
55
xattr_list_init(&sock->sock_xattr.xattr_list);