123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638 |
- /* 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);
|