#include <linux/nfsd/syscall.h>
long nfsservctl(int cmd, struct nfsctl_arg *argp,
                union nfsctl_res *resp);
 
/*
 * nfsctl() によって理解されるコマンド
 */
#define NFSCTL_SVC          0    /* サーバープロセス */
#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */
#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */
#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */
#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */
#define NFSCTL_UGIDUPDATE   5    /* クライアントの UID/GID マップの更新
                                    (Linux 2.4.x とそれ以前のみ) */
#define NFSCTL_GETFH        6    /* (mountd で使用される) ファイルハンドルの
                                    取得 (Linux 2.4.x とそれ以前のみ) */
struct nfsctl_arg {
    int                       ca_version;     /* safeguard */
    union {
        struct nfsctl_svc     u_svc;
        struct nfsctl_client  u_client;
        struct nfsctl_export  u_export;
        struct nfsctl_uidmap  u_umap;
        struct nfsctl_fhparm  u_getfh;
        unsigned int          u_debug;
    } u;
}
union nfsctl_res {
        struct knfs_fh          cr_getfh;
        unsigned int            cr_debug;
};