diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/cifs/cifs.h |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/cifs/cifs.h')
-rwxr-xr-x | sys/src/cmd/cifs/cifs.h | 638 |
1 files changed, 638 insertions, 0 deletions
diff --git a/sys/src/cmd/cifs/cifs.h b/sys/src/cmd/cifs/cifs.h new file mode 100755 index 000000000..a600ed7d4 --- /dev/null +++ b/sys/src/cmd/cifs/cifs.h @@ -0,0 +1,638 @@ +/* cifs.h */ + +enum { + Proot = 1, /* LSBs of qid.path for root dir */ + Pinfo = 2, /* LSBs of qid.path for info files */ + Pshare = 4, /* LSBs of qid.path for share dirs */ + NBHDRLEN = 4, /* length of a netbios header */ + T2HDRLEN = 64, /* Transaction2 header length */ + NO_UID = 0xffff, /* initial UID on connect */ + NO_TID = 0xffff, /* initial TID on connect */ + MTU = 0xefff, /* our MTU */ + CACHETIME = 2, /* seconds read-ahead is valid for */ + CIFS_FNAME_MAX = 0xff, /* max file path component len */ + OVERHEAD = 80, /* max packet overhead when reading & writing */ + IDLE_TIME = 10, /* keepalive send rate in mins */ + NBNSTOUT = 300, /* Netbios Name Service Timeout (300ms x 3retrys) */ + NBRPCTOUT = 45*60*1000, /* Netbios RPC Timeout (45sec) */ + MAX_SHARES = 4096, /* static table of shares attached */ + RAP_ERR_MOREINFO= 234, /* non-error code, more info to be fetched */ + MAX_DFS_PATH = 512, /* MS says never more than 250 chars... */ +}; + +enum { + SMB_COM_CREATE_DIRECTORY = 0x00, + SMB_COM_DELETE_DIRECTORY = 0x01, + SMB_COM_OPEN = 0x02, + SMB_COM_CREATE = 0x03, + SMB_COM_CLOSE = 0x04, + SMB_COM_FLUSH = 0x05, + SMB_COM_DELETE = 0x06, + SMB_COM_RENAME = 0x07, + SMB_COM_QUERY_INFORMATION = 0x08, + SMB_COM_SET_INFORMATION = 0x09, + SMB_COM_READ = 0x0A, + SMB_COM_WRITE = 0x0B, + SMB_COM_LOCK_BYTE_RANGE = 0x0C, + SMB_COM_UNLOCK_BYTE_RANGE = 0x0D, + SMB_COM_CREATE_TEMPORARY = 0x0E, + SMB_COM_CREATE_NEW = 0x0F, + SMB_COM_CHECK_DIRECTORY = 0x10, + SMB_COM_PROCESS_EXIT = 0x11, + SMB_COM_SEEK = 0x12, + SMB_COM_LOCK_AND_READ = 0x13, + SMB_COM_WRITE_AND_UNLOCK = 0x14, + SMB_COM_READ_RAW = 0x1A, + SMB_COM_READ_MPX = 0x1B, + SMB_COM_READ_MPX_SECONDARY = 0x1C, + SMB_COM_WRITE_RAW = 0x1D, + SMB_COM_WRITE_MPX = 0x1E, + SMB_COM_WRITE_MPX_SECONDARY = 0x1F, + SMB_COM_WRITE_COMPLETE = 0x20, + SMB_COM_QUERY_SERVER = 0x21, + SMB_COM_SET_INFORMATION2 = 0x22, + SMB_COM_QUERY_INFORMATION2 = 0x23, + SMB_COM_LOCKING_ANDX = 0x24, + SMB_COM_TRANSACTION = 0x25, + SMB_COM_TRANSACTION_SECONDARY = 0x26, + SMB_COM_IOCTL = 0x27, + SMB_COM_IOCTL_SECONDARY = 0x28, + SMB_COM_COPY = 0x29, + SMB_COM_MOVE = 0x2A, + SMB_COM_ECHO = 0x2B, + SMB_COM_WRITE_AND_CLOSE = 0x2C, + SMB_COM_OPEN_ANDX = 0x2D, + SMB_COM_READ_ANDX = 0x2E, + SMB_COM_WRITE_ANDX = 0x2F, + SMB_COM_NEW_FILE_SIZE = 0x30, + SMB_COM_CLOSE_AND_TREE_DISC = 0x31, + SMB_COM_TRANSACTION2 = 0x32, + SMB_COM_TRANSACTION2_SECONDARY = 0x33, + SMB_COM_FIND_CLOSE2 = 0x34, + SMB_COM_FIND_NOTIFY_CLOSE = 0x35, + SMB_COM_TREE_CONNECT = 0x70, + SMB_COM_TREE_DISCONNECT = 0x71, + SMB_COM_NEGOTIATE = 0x72, + SMB_COM_SESSION_SETUP_ANDX = 0x73, + SMB_COM_LOGOFF_ANDX = 0x74, + SMB_COM_TREE_CONNECT_ANDX = 0x75, + SMB_COM_QUERY_INFORMATION_DISK = 0x80, + SMB_COM_SEARCH = 0x81, + SMB_COM_FIND = 0x82, + SMB_COM_FIND_UNIQUE = 0x83, + SMB_COM_FIND_CLOSE = 0x84, + SMB_COM_NT_TRANSACT = 0xA0, + SMB_COM_NT_TRANSACT_SECONDARY = 0xA1, + SMB_COM_NT_CREATE_ANDX = 0xA2, + SMB_COM_NT_CANCEL = 0xA4, + SMB_COM_NT_RENAME = 0xA5, + SMB_COM_OPEN_PRINT_FILE = 0xC0, + SMB_COM_WRITE_PRINT_FILE = 0xC1, + SMB_COM_CLOSE_PRINT_FILE = 0xC2, + SMB_COM_GET_PRINT_QUEUE = 0xC3, + SMB_COM_READ_BULK = 0xD8, + SMB_COM_WRITE_BULK = 0xD9, + SMB_COM_WRITE_BULK_DATA = 0xDA, + + TRANS2_OPEN2 = 0x00, + TRANS2_FIND_FIRST2 = 0x01, + TRANS2_FIND_NEXT2 = 0x02, + TRANS2_QUERY_FS_INFORMATION = 0x03, + TRANS2_QUERY_PATH_INFORMATION = 0x05, + TRANS2_SET_PATH_INFORMATION = 0x06, + TRANS2_QUERY_FILE_INFORMATION = 0x07, + TRANS2_SET_FILE_INFORMATION = 0x08, + TRANS2_CREATE_DIRECTORY = 0x0D, + TRANS2_SESSION_SETUP = 0x0E, + TRANS2_GET_DFS_REFERRAL = 0x10, + + NT_TRANSACT_CREATE = 0x01, + NT_TRANSACT_IOCTL = 0x02, + NT_TRANSACT_SET_SECURITY_DESC = 0x03, + NT_TRANSACT_NOTIFY_CHANGE = 0x04, + NT_TRANSACT_RENAME = 0x05, + NT_TRANSACT_QUERY_SECURITY_DESC = 0x06 +}; + +enum { /* CIFS flags */ + FL_CASELESS_NAMES = 1<<3, + FL_CANNONICAL_NAMES = 1<<4, + + FL2_KNOWS_LONG_NAMES = 1<<0, + FL2_PACKET_SIGNATURES = 1<<2, + FL2_HAS_LONG_NAMES = 1<<6, + FL2_EXTENDED_SECURITY = 1<<11, + FL2_DFS = 1<<12, + FL2_PAGEING_IO = 1<<13, /* allow read of exec only files */ + FL2_NT_ERRCODES = 1<<14, + FL2_UNICODE = 1<<15, +}; + +enum { /* Capabilities Negoiated */ + CAP_RAW_MODE = 1, + CAP_MPX_MODE = 1<<1, + CAP_UNICODE = 1<<2, + CAP_LARGE_FILES = 1<<3, /* 64 bit files */ + CAP_NT_SMBS = 1<<4, + CAP_RPC_REMOTE_APIS = 1<<5, + CAP_STATUS32 = 1<<6, + CAP_L2_OPLOCKS = 1<<7, + CAP_LOCK_READ = 1<<8, + CAP_NT_FIND = 1<<9, + CAP_DFS = 1<<12, + CAP_INFO_PASSTHRU = 1<<13, + CAP_LARGE_READX = 1<<14, + CAP_LARGE_WRITEX = 1<<15, + CAP_UNIX = 1<<23, + CAP_BULK_TRANSFER = 1<<29, + CAP_COMPRESSED = 1<<30, + CAP_EX_SECURE = 1<<31 +}; + +enum { /* string prefixes */ + STR_DIALECT = 2, + STR_PATH = 3, + STR_ASCII = 4, +}; + +enum { /* optional support bits in treeconnect */ + SMB_SUPPROT_SEARCH_BITS = 1, + SMB_SHARE_IS_IN_DFS = 2, +}; + +enum { /* DFS referal header flags */ + DFS_HEADER_ROOT = 1, /* Server type, returns root targets */ + DFS_HEADER_STORAGE = 2, /* server has storage, no more referals */ + DFS_HEADER_FAILBACK = 4, /* target failback enabled */ +}; + +enum { /* DFS referal entry flags */ + DFS_SERVER_ROOT = 1, /* Server type, returns root targets */ + DFS_REFERAL_LIST = 0x200, /* reply is a list (v3 only) */ + DFS_REFERAL_SET = 0x400, /* target is a member of a set */ +}; + +enum { /* share types */ + STYPE_DISKTREE = 0, + STYPE_PRINTQ = 1, + STYPE_DEVICE = 2, + STYPE_IPC = 3, + STYPE_SPECIAL = 4, + STYPE_TEMP = 5, +}; + +enum { /* Security */ + SECMODE_USER = 0x01, /* i.e. not share level security */ + SECMODE_PW_ENCRYPT = 0x02, + SECMODE_SIGN_ENABLED = 0x04, + SECMODE_SIGN_REQUIRED = 0x08, +}; + +enum { /* file access rights */ + DELETE = 0x00010000, + SYNCHRONIZE = 0x00100000, + + READ_CONTROL = 0x00020000, + GENERIC_ALL = 0x10000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_WRITE = 0x40000000, + GENERIC_READ = 0x80000000, + + ATTR_READONLY = 0x0001, + ATTR_HIDDEN = 0x0002, + ATTR_SYSTEM = 0x0004, + ATTR_VOLUME = 0x0008, + ATTR_DIRECTORY = 0x0010, + ATTR_ARCHIVE = 0x0020, + ATTR_DEVICE = 0x0040, + ATTR_NORMAL = 0x0080, + ATTR_TEMPORARY = 0x0100, + ATTR_SPARSE = 0x0200, + ATTR_REPARSE = 0x0400, + ATTR_COMPRESSED = 0x0800, + ATTR_OFFLINE = 0x100, /* offline storage */ + ATTR_NOT_CONTENT_INDEXED= 0x2000, + ATTR_ENCRYPTED = 0x4000, + ATTR_POSIX_SEMANTICS = 0x01000000, + ATTR_BACKUP_SEMANTICS = 0x02000000, + ATTR_DELETE_ON_CLOSE = 0x04000000, + ATTR_SEQUENTIAL_SCAN = 0x08000000, + ATTR_RANDOM_ACCESS = 0x10000000, + ATTR_NO_BUFFERING = 0x20000000, + ATTR_WRITE_THROUGH = 0x80000000, + + /* ShareAccess flags */ + FILE_NO_SHARE = 0, + FILE_SHARE_READ = 1, + FILE_SHARE_WRITE = 2, + FILE_SHARE_DELETE = 4, + FILE_SHARE_ALL = 7, + + /* CreateDisposition flags */ + FILE_SUPERSEDE = 0, + FILE_OPEN = 1, + FILE_CREATE = 2, + FILE_OPEN_IF = 3, + FILE_OVERWRITE = 4, + FILE_OVERWRITE_IF = 5, + + /* CreateOptions */ + FILE_DIRECTORY_FILE = 0x00000001, + FILE_WRITE_THROUGH = 0x00000002, + FILE_SEQUENTIAL_ONLY = 0x00000004, + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, + FILE_NON_DIRECTORY_FILE = 0x00000040, + FILE_CREATE_TREE_CONNECTION = 0x00000080, + FILE_COMPLETE_IF_OPLOCKED = 0x00000100, + FILE_NO_EA_KNOWLEDGE = 0x00000200, + FILE_OPEN_FOR_RECOVERY = 0x00000400, + FILE_EIGHT_DOT_THREE_ONLY = 0x00000400, /* samba source says so... */ + FILE_RANDOM_ACCESS = 0x00000800, + FILE_DELETE_ON_CLOSE = 0x00001000, + FILE_OPEN_BY_FILE_ID = 0x00002000, + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, + FILE_NO_COMPRESSION = 0x00008000, + + /* open/create result codes */ + FILE_WAS_OPENED = 1, + FILE_WAS_CREATED = 2, + FILE_WAS_OVERWRITTEN = 3, + + /* ImpersonationLevel flags */ + SECURITY_ANONYMOUS = 0, + SECURITY_IDENTIFICATION = 1, + SECURITY_IMPERSONATION = 2, + SECURITY_DELEGATION = 3, + + /* SecurityFlags */ + SECURITY_CONTEXT_TRACKING = 1, + SECURITY_EFFECTIVE_ONLY = 2, + + /* security descriptor bitmask */ + QUERY_OWNER_SECURITY_INFORMATION = 1, + QUERY_GROUP_SECURITY_INFORMATION = 2, + QUERY_DACL_SECURITY_INFORMATION = 4, + QUERY_SACL_SECURITY_INFORMATION = 8, + +}; + +enum { /* PathInfo/FileInfo infolevels */ + SMB_INFO_STANDARD = 0x1, + SMB_INFO_IS_NAME_VALID = 0x6, + SMB_QUERY_FILE_BASIC_INFO = 0x101, + SMB_QUERY_FILE_STANDARD_INFO = 0x102, + SMB_QUERY_FILE_NAME_INFO = 0x104, + SMB_QUERY_FILE_ALLOCATION_INFO = 0x105, + SMB_QUERY_FILE_END_OF_FILE_INFO = 0x106, + SMB_QUERY_FILE_ALL_INFO = 0x107, + SMB_QUERY_ALT_NAME_INFO = 0x108, + SMB_QUERY_FILE_STREAM_INFO = 0x109, + SMB_QUERY_FILE_COMPRESSION_INFO = 0x10b, + SMB_QUERY_FILE_UNIX_BASIC = 0x200, + SMB_QUERY_FILE_UNIX_LINK = 0x201, + + SMB_SET_FILE_BASIC_INFO = 0x101, + SMB_SET_FILE_DISPOSITION_INFO = 0x102, + SMB_SET_FILE_ALLOCATION_INFO = 0x103, + SMB_SET_FILE_END_OF_FILE_INFO = 0x104, + SMB_SET_FILE_UNIX_BASIC = 0x200, + SMB_SET_FILE_UNIX_LINK = 0x201, + SMB_SET_FILE_UNIX_HLINK = 0x203, + SMB_SET_FILE_BASIC_INFO2 = 0x3ec, + SMB_SET_FILE_RENAME_INFORMATION = 0x3f2, + SMB_SET_FILE_ALLOCATION_INFO2 = 0x3fb, + SMB_SET_FILE_END_OF_FILE_INFO2 = 0x3fc, + + /* Find File infolevels */ + SMB_FIND_FILE_DIRECTORY_INFO = 0x101, + SMB_FIND_FILE_FULL_DIRECTORY_INFO= 0x102, + SMB_FIND_FILE_NAMES_INFO = 0x103, + SMB_FIND_FILE_BOTH_DIRECTORY_INFO= 0x104, + SMB_FIND_FILE_UNIX = 0x202, + + /* Trans2 FindFirst & FindNext */ + CIFS_SEARCH_CLOSE_ALWAYS = 0x0001, + CIFS_SEARCH_CLOSE_AT_END = 0x0002, + CIFS_SEARCH_RETURN_RESUME = 0x0004, + CIFS_SEARCH_CONTINUE_FROM_LAST = 0x0008, + CIFS_SEARCH_BACKUP_SEARCH = 0x0010, + + /* Trans2 FsInfo */ + SMB_INFO_ALLOCATION = 0x1, + SMB_INFO_VOLUME = 0x2, + SMB_QUERY_FS_VOLUME_INFO = 0x102, + SMB_QUERY_FS_SIZE_INFO = 0x103, + SMB_QUERY_FS_DEVICE_INFO = 0x104, + SMB_QUERY_FS_ATTRIBUTE_INFO = 0x105, + SMB_QUERY_CIFS_UNIX_INFO = 0x200, +}; + +enum { /* things to search for in server lookups */ + LOCAL_AUTHORATIVE_ONLY = 0x40000000, + LIST_DOMAINS_ONLY = 0x80000000, + ALL_LEARNT_IN_DOMAIN = 0xFFFFFFFF +}; + +typedef struct { + char *user; /* username */ + char *windom; /* remote server's domain name */ + char *resp[2]; /* ASCII/Unicode or LM/NTLM keys */ + int len[2]; /* length of above */ + uchar *mackey[2]; /* Message Authentication key */ +} Auth; + +typedef struct { + int fd; /* File descriptor for I/O */ + int nbt; /* am using cifs over netbios */ + int trn; /* TRN (unique RPC) ID */ + int uid; /* user (authentication) ID */ + int seq; /* sequence number */ + int seqrun; /* sequence numbering active */ + int caps; /* server capabilities */ + int support; /* support bits */ + int flags; /* SMB flags */ + int flags2; /* SMB flags 2 */ + int nocache; /* disable write behind caching in server */ + int pid; /* process ID */ + int mid; /* multiplex ID */ + int mtu; /* max size of packet */ + int tz; /* Timezone, mins from UTC */ + int isguest; /* logged in as guest */ + int secmode; /* security mode */ + int macidx; /* which MAC is in use, -1 is none */ + uchar chal[0xff +1]; /* server's challange for authentication */ + int challen; /* length of challange */ + long slip; /* time difference between the server and us */ + uvlong lastfind; /* nsec when last find peformed */ + QLock seqlock; /* sequence number increment */ + QLock rpclock; /* actual remote procedure call */ + char *cname; /* remote hosts called name (for info) */ + char *remos; /* remote hosts OS (for info) */ + Auth *auth; /* authentication info */ +} Session; + +typedef struct { + Session *s; + + int tid; /* tree ID received from server */ + int seq; /* sequence number expected in reply */ + + uchar *seqbase; /* cifs: pos of sequence number in packet */ + uchar *wordbase; /* cifs: base of words section of data */ + uchar *bytebase; /* cifs: base of bytes section of data */ + uchar *tbase; /* transactions: start of trans packet */ + uchar *tsetup; /* transactions: start of setup section */ + uchar *tparam; /* transactions: start of params section */ + uchar *tdata; /* transactions: start of data section */ + + uchar *eop; /* received end of packet */ + uchar *pos; /* current pos in packet */ + uchar *buf; /* packet buffer, must be last entry in struct */ +} Pkt; + +typedef struct { + char *name; + int tid; /* not part of the protocol, housekeeping */ + int options; /* not part of the protocol, housekeeping */ +} Share; + +typedef struct { + long created; /* last access time */ + long accessed; /* last access time */ + long written; /* last written time */ + long changed; /* change time */ + uvlong size; /* file size */ + long attribs; /* attributes */ + char name[CIFS_FNAME_MAX +1]; /* name */ +} FInfo; + +typedef struct { + char *wrkstn; + char *user; + long sesstime; + long idletime; +} Sessinfo; + +typedef struct { + char *name; +} Namelist; + +typedef struct { + char *user; + char *comment; + char *user_comment; + char *fullname; +} Userinfo; + +typedef struct { + char *name; + int type; + char *comment; + int perms; + int maxusrs; + int activeusrs; + char *path; + char *passwd; +} Shareinfo2; + +typedef struct { + char *name; + int major; + int minor; + int type; + char *comment; +} Serverinfo; + +typedef struct { + int type; /* o=unknown, 1=CIFS, 2=netware 3=domain */ + int flags; /* 1 == strip off consumed chars before resubmitting */ + int ttl; /* time to live of this info in secs */ + int prox; /* lower value is preferred */ + char *path; /* new path */ + char *addr; /* new server */ +} Refer; + +typedef struct { + char *node; + char *user; + char *langroup; + int major; + int minor; + char *pridom; + char *otherdoms; +} Wrkstainfo; + +typedef struct { + int ident; + int perms; + int locks; + char *path; + char *user; +} Fileinfo; + +extern int Active; +extern int Checkcase; +extern int Dfstout; +extern char *Debug; +extern char *Host; +extern Session *Sess; +extern Share Ipc; + +extern Share Shares[MAX_SHARES]; +extern int Nshares; + +/* main.c */ +Qid mkqid(char *, int, long, int, long); + +/* auth.c */ +Auth *getauth(char *, char *, char *, int, uchar *, int); +void autherr(void); +int macsign(Pkt *, int); + +/* cifs.c */ +Session *cifsdial(char *, char *, char *); +void cifsclose(Session *); +Pkt *cifshdr(Session *, Share *, int); +void pbytes(Pkt *); +int cifsrpc(Pkt *); +int CIFSnegotiate(Session *, long *, char *, int, char *, int); +int CIFSsession(Session *); +int CIFStreeconnect(Session *, char *, char *, Share *); +int CIFSlogoff(Session *); +int CIFStreedisconnect(Session *, Share *); +int CIFSdeletefile(Session *, Share *, char *); +int CIFSdeletedirectory(Session *, Share *, char *); +int CIFScreatedirectory(Session *, Share *, char *); +int CIFSrename(Session *, Share *, char *, char *); +int CIFS_NT_opencreate(Session *, Share *, char *, int, int, int, int, int, int, int *, FInfo *); +int CIFS_SMB_opencreate(Session *, Share *, char *, int, int, int, int *); +vlong CIFSwrite(Session *, Share *, int, uvlong, void *, vlong); +vlong CIFSread(Session *, Share *, int, uvlong, void *, vlong, vlong); +int CIFSflush(Session *, Share *, int); +int CIFSclose(Session *, Share *, int); +int CIFSfindclose2(Session *, Share *, int); +int CIFSecho(Session *); +int CIFSsetinfo(Session *, Share *, char *, FInfo *); +void goff(Pkt *, uchar *, char *, int); + +/* dfs.c */ +char *mapfile(char *); +int mapshare(char *, Share **); +int redirect(Session *, Share *s, char *); +int dfscacheinfo(Fmt *); +char *trimshare(char *); + +/* doserrstr.c */ +char *doserrstr(uint); + +/* fs.c */ +int shareinfo(Fmt *); +int conninfo(Fmt *); +int sessioninfo(Fmt *); +int userinfo(Fmt *); +int groupinfo(Fmt *); +int domaininfo(Fmt *); +int workstationinfo(Fmt *); +int dfsrootinfo(Fmt *); +int openfileinfo(Fmt *); +int dfsrootinfo(Fmt *); +int filetableinfo(Fmt *); /* is in main.c due to C scope */ + +/* info.c */ +int walkinfo(char *); +int numinfo(void); +int dirgeninfo(int, Dir *); +int makeinfo(int); +int readinfo(int, char *, int, int); +void freeinfo(int); + +/* main.c */ +void usage(void); +void dmpkey(char *, void *, int); +void main(int, char **); + +/* misc.c */ +char *strupr(char *); +char *strlwr(char *); + +/* netbios.c */ +void Gmem(uchar **, void *, int); +int calledname(char *, char *); +int nbtdial(char *, char *, char *); +void nbthdr(Pkt *); +int nbtrpc(Pkt *); +void xd(char *, void *, int); + +/* nterrstr.c */ +char *nterrstr(uint); + +/* pack.c */ +void *pmem(Pkt *, void *, int); +void *ppath(Pkt *, char *); +void *pstr(Pkt *, char *); +void *pascii(Pkt *, char *); +void *pl64(Pkt *, uvlong); +void *pb32(Pkt *, uint); +void *pl32(Pkt *, uint); +void *pb16(Pkt *, uint); +void *pl16(Pkt *, uint); +void *p8(Pkt *, uint); +void *pname(Pkt *, char *, char); +void *pvtime(Pkt *, uvlong); +void *pdatetime(Pkt *, long); +void gmem(Pkt *, void *, int); +void gstr(Pkt *, char *, int); +void gascii(Pkt *, char *, int); +uvlong gl64(Pkt *); +uvlong gb48(Pkt *); +uint gb32(Pkt *); +uint gl32(Pkt *); +uint gb16(Pkt *); +uint gl16(Pkt *); +uint g8(Pkt *); +long gdatetime(Pkt *); +long gvtime(Pkt *); +void gconv(Pkt *, int, char *, int); + +/* raperrstr.c */ +char *raperrstr(uint); + +/* sid2name.c */ +void upd_names(Session *, Share *, char *, Dir *); + +/* trans.c */ +int RAPshareenum(Session *, Share *, Share **); +int RAPshareinfo(Session *, Share *, char *, Shareinfo2 *); + +int RAPsessionenum(Session *, Share *, Sessinfo **); + +int RAPgroupenum(Session *, Share *, Namelist **); +int RAPgroupusers(Session *, Share *, char *, Namelist **); + +int RAPuserenum(Session *, Share *, Namelist **); +int RAPuserenum2(Session *, Share *, Namelist **); +int RAPuserinfo(Session *, Share *, char *, Userinfo *); + +int RAPServerenum2(Session *, Share *, char *, int, int *, Serverinfo **); +int RAPServerenum3(Session *, Share *, char *, int, int, Serverinfo *); + +int RAPFileenum2(Session *, Share *, char *, char *, Fileinfo **); + +/* trans2.c */ +int T2findfirst(Session *, Share *, int, char *, int *, long *, FInfo *); +int T2findnext(Session *, Share *, int, char *, int *, long *, FInfo *, int); +int T2queryall(Session *, Share *, char *, FInfo *); +int T2querystandard(Session *, Share *, char *, FInfo *); +int T2setpathinfo(Session *, Share *, char *, FInfo *); +int T2setfilelength(Session *, Share *, int, FInfo *); +int T2fsvolumeinfo(Session *, Share *, long *, long *, char *, int); +int T2fssizeinfo(Session *, Share *, uvlong *, uvlong *); +int T2getdfsreferral(Session *, Share *, char *, int *, int *, Refer *, int); + +/* transnt.c */ +int TNTquerysecurity(Session *, Share *, int, char **, char **); + +/* ping.c */ +int ping(char *, int); |