1/* 2 * include/linux/nfsd/syscall.h 3 * 4 * This file holds all declarations for the knfsd syscall interface. 5 * 6 * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> 7 */ 8 9#ifndef NFSD_SYSCALL_H 10#define NFSD_SYSCALL_H 11 12#include <linux/types.h> 13#include <linux/nfsd/export.h> 14 15/* 16 * Version of the syscall interface 17 */ 18#define NFSCTL_VERSION 0x0201 19 20/* 21 * These are the commands understood by nfsctl(). 22 */ 23#define NFSCTL_SVC 0 /* This is a server process. */ 24#define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */ 25#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */ 26#define NFSCTL_EXPORT 3 /* export a file system. */ 27#define NFSCTL_UNEXPORT 4 /* unexport a file system. */ 28/*#define NFSCTL_UGIDUPDATE 5 / * update a client's uid/gid map. DISCARDED */ 29/*#define NFSCTL_GETFH 6 / * get an fh by ino DISCARDED */ 30#define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */ 31#define NFSCTL_GETFS 8 /* get an fh by path with max FH len */ 32 33/* SVC */ 34struct nfsctl_svc { 35 unsigned short svc_port; 36 int svc_nthreads; 37}; 38 39/* ADDCLIENT/DELCLIENT */ 40struct nfsctl_client { 41 char cl_ident[NFSCLNT_IDMAX+1]; 42 int cl_naddr; 43 struct in_addr cl_addrlist[NFSCLNT_ADDRMAX]; 44 int cl_fhkeytype; 45 int cl_fhkeylen; 46 unsigned char cl_fhkey[NFSCLNT_KEYMAX]; 47}; 48 49/* EXPORT/UNEXPORT */ 50struct nfsctl_export { 51 char ex_client[NFSCLNT_IDMAX+1]; 52 char ex_path[NFS_MAXPATHLEN+1]; 53 __kernel_old_dev_t ex_dev; 54 __kernel_ino_t ex_ino; 55 int ex_flags; 56 __kernel_uid_t ex_anon_uid; 57 __kernel_gid_t ex_anon_gid; 58}; 59 60/* GETFD */ 61struct nfsctl_fdparm { 62 struct sockaddr gd_addr; 63 char gd_path[NFS_MAXPATHLEN+1]; 64 int gd_version; 65}; 66 67/* GETFS - GET Filehandle with Size */ 68struct nfsctl_fsparm { 69 struct sockaddr gd_addr; 70 char gd_path[NFS_MAXPATHLEN+1]; 71 int gd_maxlen; 72}; 73 74/* 75 * This is the argument union. 76 */ 77struct nfsctl_arg { 78 int ca_version; /* safeguard */ 79 union { 80 struct nfsctl_svc u_svc; 81 struct nfsctl_client u_client; 82 struct nfsctl_export u_export; 83 struct nfsctl_fdparm u_getfd; 84 struct nfsctl_fsparm u_getfs; 85 /* 86 * The following dummy member is needed to preserve binary compatibility 87 * on platforms where alignof(void*)>alignof(int). It's needed because 88 * this union used to contain a member (u_umap) which contained a 89 * pointer. 90 */ 91 void *u_ptr; 92 } u; 93#define ca_svc u.u_svc 94#define ca_client u.u_client 95#define ca_export u.u_export 96#define ca_getfd u.u_getfd 97#define ca_getfs u.u_getfs 98}; 99 100union nfsctl_res { 101 __u8 cr_getfh[NFS_FHSIZE]; 102 struct knfsd_fh cr_getfs; 103}; 104 105 106#endif /* NFSD_SYSCALL_H */ 107