【问题标题】:NFSACL GETACL / SETACL structesNFS ACL SET ACL/SETACL 结构
【发布时间】:2015-08-20 08:20:44
【问题描述】:

我在客户端和服务器之间有一个代理服务器。

我使用 XDR 读取和修改它们之间的 NFS 消息

例如,如果我想编辑文件大小并获取属性回复 我使用结构和函数

GETATTR3res

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

现在我想用同样的方法来修改回复

RPC:

程序:NFSACL (100227)

程序版本:3

程序:GETACL (1) 和 SETACL (2)

我想用 xdr 编辑 (fattr3) 属性字段

NFSACL 的 XDR 函数,甚至 NFSACL 过程具有的字段的解构 XDR 函数

【问题讨论】:

  • 当然,您可以通过在nfs_prot.x 上运行 rpcgen 来更明智地获取此信息,其中包含 RPC 定义本身

标签: c acl rpc nfs xdr


【解决方案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 进行解码和回传

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2020-05-23
    • 2014-06-17
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多