NFSACL GETACL / SETACL структуры

У меня есть прокси-сервер между клиентом и сервером.

Я использую XDR для чтения и изменения сообщений NFS между ними

например, если я хочу отредактировать размер файла и получить атрибуты ответа, я использую структуру и функцию

GETATTR3res

bool_t xdr_GETATTR3res (XDR * xdrs, GETATTR3res * objp);

Теперь я хочу использовать тот же метод, чтобы изменить ответы для

RPC:

Программа: NFSACL (100227)

Версия программы: 3

Процедура: GETACL (1) и SETACL (2)

я хочу отредактировать поле (fattr3) с помощью xdr

либо функция XDR для NFSACL, либо даже деконструированная функция XDR для полей, которые имеют процедуры NFSACL

1 ответ

Решение

Я нашел этот список структур, которые с меньшей функцией XDR могут быть использованы для изменения атрибутов

struct GETACL3args {
    nfs_fh3 fh;
    uint32 mask;
};
typedef struct GETACL3args GETACL3args;

struct GETACL3resok {
    post_op_attr attr;
    vsecattr_t acl;
};
typedef struct GETACL3resok GETACL3resok;

struct GETACL3resfail {
    post_op_attr attr;
};
typedef struct GETACL3resfail GETACL3resfail;

struct GETACL3res {
    nfsstat3 status;
    union {
        GETACL3resok ok;
        GETACL3resfail fail;
    } res_u;
};
typedef struct GETACL3res GETACL3res;

struct SETACL3args {
    nfs_fh3 fh;
    vsecattr_t acl;
};
typedef struct SETACL3args SETACL3args;

struct SETACL3resok {
    post_op_attr attr;
};
typedef struct SETACL3resok SETACL3resok;

struct SETACL3resfail {
    post_op_attr attr;
};
typedef struct SETACL3resfail SETACL3resfail;

struct SETACL3res {
    nfsstat3 status;
    union {
        SETACL3resok ok;
        SETACL3resfail fail;
    } res_u;
};
typedef struct SETACL3res SETACL3res;

и используя xdr_post_op_attr для декодирования и возврата обратно

Другие вопросы по тегам