2001-10-19 20:34:10 +04:00
/*
Samba Unix / Linux SMB client library
RAP ( SMB Remote Procedure Calls ) defines and structures
Copyright ( C ) Steve French 2001 ( sfrench @ us . ibm . com )
Copyright ( C ) Jim McDonough 2001 ( jmcd @ us . ibm . com )
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2001-10-19 20:34:10 +04:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2001-10-19 20:34:10 +04:00
*/
2001-10-20 02:01:55 +04:00
# ifndef _RAP_H_
# define _RAP_H_
2001-10-19 20:34:10 +04:00
/*****************************************************/
/* */
/* Additional RAP functionality */
/* */
/* RAP is the original SMB RPC, documented */
/* by Microsoft and X/Open in the 1990s and */
/* supported by most SMB/CIFS servers although */
/* it is unlikely that any one implementation */
/* supports all RAP command codes since some */
/* are quite obsolete and a few are specific */
/* to a particular network operating system */
/* */
/* Although it has largely been replaced */
/* for complex remote admistration and management */
/* (of servers) by the relatively newer */
/* DCE/RPC based remote API (which better handles */
/* large >64K data structures), there are many */
/* important administrative and resource location */
/* tasks and user tasks (e.g. password change) */
/* that are performed via RAP. */
/* */
/* Although a few of the RAP calls are implemented */
/* in the Samba client library already (clirap.c) */
/* the new ones are in clirap2.c for easy patching */
/* and integration and a corresponding header */
/* file, rap.h, has been created. */
/* */
/* This is based on data from the CIFS spec */
/* and the LAN Server and LAN Manager */
/* Programming Reference books and published */
/* RAP document and CIFS forum postings and */
/* lots of trial and error. Additional */
/* background information is available from the */
/* X/Open reference book in their PC Interworking */
/* series "IPC for SMB" and also from the */
/* interoperability documentation in */
/* ftp://ftp.microsoft.com/developr/drg/cifs */
/* */
/* Function names changed from API_ (as they are */
/* in the CIFS specification to RAP_ in order */
/* to avoid confusion with other API calls */
/* sent via DCE RPC */
/* */
/*****************************************************/
/*****************************************************/
/* */
/* Although without pound defines (of this header) */
/* cifsrap.c already includes support for: */
/* */
/* WshareEnum (API number 0, level 1) */
/* NetServerEnum2 (API num 104, level 1) */
/* WWkstaUserLogon (132) */
/* SamOEMchgPasswordUser2_P (214) */
/* */
/* and cifsprint.c already includes support for: */
/* */
/* WPrintJobEnum (API num 76, level 2) */
/* WPrintJobDel (API num 81) */
/* */
/*****************************************************/
# define RAP_WshareEnum 0
# define RAP_WshareGetInfo 1
# define RAP_WshareSetInfo 2
# define RAP_WshareAdd 3
# define RAP_WshareDel 4
# define RAP_NetShareCheck 5
# define RAP_WsessionEnum 6
# define RAP_WsessionGetInfo 7
# define RAP_WsessionDel 8
# define RAP_WconnectionEnum 9
# define RAP_WfileEnum 10
# define RAP_WfileGetInfo 11
# define RAP_WfileClose 12
# define RAP_WserverGetInfo 13
# define RAP_WserverSetInfo 14
# define RAP_WserverDiskEnum 15
# define RAP_WserverAdminCommand 16
# define RAP_NetAuditOpen 17
# define RAP_WauditClear 18
# define RAP_NetErrorLogOpen 19
# define RAP_WerrorLogClear 20
# define RAP_NetCharDevEnum 21
# define RAP_NetCharDevGetInfo 22
# define RAP_WCharDevControl 23
# define RAP_NetCharDevQEnum 24
# define RAP_NetCharDevQGetInfo 25
# define RAP_WCharDevQSetInfo 26
# define RAP_WCharDevQPurge 27
# define RAP_WCharDevQPurgeSelf 28
# define RAP_WMessageNameEnum 29
# define RAP_WMessageNameGetInfo 30
# define RAP_WMessageNameAdd 31
# define RAP_WMessageNameDel 32
# define RAP_WMessageNameFwd 33
# define RAP_WMessageNameUnFwd 34
# define RAP_WMessageBufferSend 35
# define RAP_WMessageFileSend 36
# define RAP_WMessageLogFileSet 37
# define RAP_WMessageLogFileGet 38
# define RAP_WServiceEnum 39
# define RAP_WServiceInstall 40
# define RAP_WServiceControl 41
# define RAP_WAccessEnum 42
# define RAP_WAccessGetInfo 43
# define RAP_WAccessSetInfo 44
# define RAP_WAccessAdd 45
# define RAP_WAccessDel 46
# define RAP_WGroupEnum 47
# define RAP_WGroupAdd 48
# define RAP_WGroupDel 49
# define RAP_WGroupAddUser 50
# define RAP_WGroupDelUser 51
# define RAP_WGroupGetUsers 52
# define RAP_WUserEnum 53
# define RAP_WUserAdd 54
# define RAP_WUserDel 55
# define RAP_WUserGetInfo 56
# define RAP_WUserSetInfo 57
# define RAP_WUserPasswordSet 58
# define RAP_WUserGetGroups 59
# define RAP_WWkstaSetUID 62
# define RAP_WWkstaGetInfo 63
# define RAP_WWkstaSetInfo 64
# define RAP_WUseEnum 65
# define RAP_WUseAdd 66
# define RAP_WUseDel 67
# define RAP_WUseGetInfo 68
# define RAP_WPrintQEnum 69
# define RAP_WPrintQGetInfo 70
# define RAP_WPrintQSetInfo 71
# define RAP_WPrintQAdd 72
# define RAP_WPrintQDel 73
# define RAP_WPrintQPause 74
# define RAP_WPrintQContinue 75
# define RAP_WPrintJobEnum 76
# define RAP_WPrintJobGetInfo 77
# define RAP_WPrintJobSetInfo_OLD 78
# define RAP_WPrintJobDel 81
# define RAP_WPrintJobPause 82
# define RAP_WPrintJobContinue 83
# define RAP_WPrintDestEnum 84
# define RAP_WPrintDestGetInfo 85
# define RAP_WPrintDestControl 86
# define RAP_WProfileSave 87
# define RAP_WProfileLoad 88
# define RAP_WStatisticsGet 89
# define RAP_WStatisticsClear 90
# define RAP_NetRemoteTOD 91
# define RAP_WNetBiosEnum 92
# define RAP_WNetBiosGetInfo 93
# define RAP_NetServerEnum 94
# define RAP_I_NetServerEnum 95
# define RAP_WServiceGetInfo 96
# define RAP_WPrintQPurge 103
# define RAP_NetServerEnum2 104
# define RAP_WAccessGetUserPerms 105
# define RAP_WGroupGetInfo 106
# define RAP_WGroupSetInfo 107
# define RAP_WGroupSetUsers 108
# define RAP_WUserSetGroups 109
# define RAP_WUserModalsGet 110
# define RAP_WUserModalsSet 111
# define RAP_WFileEnum2 112
# define RAP_WUserAdd2 113
# define RAP_WUserSetInfo2 114
# define RAP_WUserPasswordSet2 115
# define RAP_I_NetServerEnum2 116
# define RAP_WConfigGet2 117
# define RAP_WConfigGetAll2 118
# define RAP_WGetDCName 119
# define RAP_NetHandleGetInfo 120
# define RAP_NetHandleSetInfo 121
# define RAP_WStatisticsGet2 122
# define RAP_WBuildGetInfo 123
# define RAP_WFileGetInfo2 124
# define RAP_WFileClose2 125
# define RAP_WNetServerReqChallenge 126
# define RAP_WNetServerAuthenticate 127
# define RAP_WNetServerPasswordSet 128
# define RAP_WNetAccountDeltas 129
# define RAP_WNetAccountSync 130
# define RAP_WUserEnum2 131
# define RAP_WWkstaUserLogon 132
# define RAP_WWkstaUserLogoff 133
# define RAP_WLogonEnum 134
# define RAP_WErrorLogRead 135
# define RAP_NetPathType 136
# define RAP_NetPathCanonicalize 137
# define RAP_NetPathCompare 138
# define RAP_NetNameValidate 139
# define RAP_NetNameCanonicalize 140
# define RAP_NetNameCompare 141
# define RAP_WAuditRead 142
# define RAP_WPrintDestAdd 143
# define RAP_WPrintDestSetInfo 144
# define RAP_WPrintDestDel 145
# define RAP_WUserValidate2 146
# define RAP_WPrintJobSetInfo 147
# define RAP_TI_NetServerDiskEnum 148
# define RAP_TI_NetServerDiskGetInfo 149
# define RAP_TI_FTVerifyMirror 150
# define RAP_TI_FTAbortVerify 151
# define RAP_TI_FTGetInfo 152
# define RAP_TI_FTSetInfo 153
# define RAP_TI_FTLockDisk 154
# define RAP_TI_FTFixError 155
# define RAP_TI_FTAbortFix 156
# define RAP_TI_FTDiagnoseError 157
# define RAP_TI_FTGetDriveStats 158
# define RAP_TI_FTErrorGetInfo 160
# define RAP_NetAccessCheck 163
# define RAP_NetAlertRaise 164
# define RAP_NetAlertStart 165
# define RAP_NetAlertStop 166
# define RAP_NetAuditWrite 167
# define RAP_NetIRemoteAPI 168
# define RAP_NetServiceStatus 169
# define RAP_NetServerRegister 170
# define RAP_NetServerDeregister 171
# define RAP_NetSessionEntryMake 172
# define RAP_NetSessionEntryClear 173
# define RAP_NetSessionEntryGetInfo 174
# define RAP_NetSessionEntrySetInfo 175
# define RAP_NetConnectionEntryMake 176
# define RAP_NetConnectionEntryClear 177
# define RAP_NetConnectionEntrySetInfo 178
# define RAP_NetConnectionEntryGetInfo 179
# define RAP_NetFileEntryMake 180
# define RAP_NetFileEntryClear 181
# define RAP_NetFileEntrySetInfo 182
# define RAP_NetFileEntryGetInfo 183
# define RAP_AltSrvMessageBufferSend 184
# define RAP_AltSrvMessageFileSend 185
# define RAP_wI_NetRplWkstaEnum 186
# define RAP_wI_NetRplWkstaGetInfo 187
# define RAP_wI_NetRplWkstaSetInfo 188
# define RAP_wI_NetRplWkstaAdd 189
# define RAP_wI_NetRplWkstaDel 190
# define RAP_wI_NetRplProfileEnum 191
# define RAP_wI_NetRplProfileGetInfo 192
# define RAP_wI_NetRplProfileSetInfo 193
# define RAP_wI_NetRplProfileAdd 194
# define RAP_wI_NetRplProfileDel 195
# define RAP_wI_NetRplProfileClone 196
# define RAP_wI_NetRplBaseProfileEnum 197
# define RAP_WIServerSetInfo 201
# define RAP_WPrintDriverEnum 205
# define RAP_WPrintQProcessorEnum 206
# define RAP_WPrintPortEnum 207
# define RAP_WNetWriteUpdateLog 208
# define RAP_WNetAccountUpdate 209
# define RAP_WNetAccountConfirmUpdate 210
# define RAP_WConfigSet 211
# define RAP_WAccountsReplicate 212
# define RAP_SamOEMChgPasswordUser2_P 214
# define RAP_NetServerEnum3 215
# define RAP_WprintDriverGetInfo 250
# define RAP_WprintDriverSetInfo 251
# define RAP_WaliasAdd 252
# define RAP_WaliasDel 253
# define RAP_WaliasGetInfo 254
# define RAP_WaliasSetInfo 255
# define RAP_WaliasEnum 256
# define RAP_WuserGetLogonAsn 257
# define RAP_WuserSetLogonAsn 258
# define RAP_WuserGetAppSel 259
# define RAP_WuserSetAppSel 260
# define RAP_WappAdd 261
# define RAP_WappDel 262
# define RAP_WappGetInfo 263
# define RAP_WappSetInfo 264
# define RAP_WappEnum 265
# define RAP_WUserDCDBInit 266
# define RAP_WDASDAdd 267
# define RAP_WDASDDel 268
# define RAP_WDASDGetInfo 269
# define RAP_WDASDSetInfo 270
# define RAP_WDASDEnum 271
# define RAP_WDASDCheck 272
# define RAP_WDASDCtl 273
# define RAP_WuserRemoteLogonCheck 274
# define RAP_WUserPasswordSet3 275
# define RAP_WCreateRIPLMachine 276
# define RAP_WDeleteRIPLMachine 277
# define RAP_WGetRIPLMachineInfo 278
# define RAP_WSetRIPLMachineInfo 279
# define RAP_WEnumRIPLMachine 280
# define RAP_I_ShareAdd 281
# define RAP_AliasEnum 282
# define RAP_WaccessApply 283
# define RAP_WPrt16Query 284
# define RAP_WPrt16Set 285
# define RAP_WUserDel100 286
# define RAP_WUserRemoteLogonCheck2 287
# define RAP_WRemoteTODSet 294
# define RAP_WprintJobMoveAll 295
# define RAP_W16AppParmAdd 296
# define RAP_W16AppParmDel 297
# define RAP_W16AppParmGet 298
# define RAP_W16AppParmSet 299
# define RAP_W16RIPLMachineCreate 300
# define RAP_W16RIPLMachineGetInfo 301
# define RAP_W16RIPLMachineSetInfo 302
# define RAP_W16RIPLMachineEnum 303
# define RAP_W16RIPLMachineListParmEnum 304
# define RAP_W16RIPLMachClassGetInfo 305
# define RAP_W16RIPLMachClassEnum 306
# define RAP_W16RIPLMachClassCreate 307
# define RAP_W16RIPLMachClassSetInfo 308
# define RAP_W16RIPLMachClassDelete 309
# define RAP_W16RIPLMachClassLPEnum 310
# define RAP_W16RIPLMachineDelete 311
# define RAP_W16WSLevelGetInfo 312
# define RAP_WserverNameAdd 313
# define RAP_WserverNameDel 314
# define RAP_WserverNameEnum 315
# define RAP_I_WDASDEnum 316
# define RAP_WDASDEnumTerminate 317
# define RAP_WDASDSetInfo2 318
# define MAX_API 318
/* Parameter description strings for RAP calls */
/* Names are defined name for RAP call with _REQ */
/* appended to end. */
# define RAP_WFileEnum2_REQ "zzWrLehb8g8"
# define RAP_WFileGetInfo2_REQ "DWrLh"
# define RAP_WFileClose2_REQ "D"
# define RAP_NetGroupEnum_REQ "WrLeh"
# define RAP_NetGroupAdd_REQ "WsT"
# define RAP_NetGroupDel_REQ "z"
# define RAP_NetGroupAddUser_REQ "zz"
# define RAP_NetGroupDelUser_REQ "zz"
# define RAP_NetGroupGetUsers_REQ "zWrLeh"
# define RAP_NetGroupSetUsers_REQ "zWsTW"
# define RAP_NetUserAdd2_REQ "WsTWW"
# define RAP_NetUserEnum_REQ "WrLeh"
# define RAP_NetUserEnum2_REQ "WrLDieh"
2001-11-04 00:13:42 +03:00
# define RAP_NetUserGetGroups_REQ "zWrLeh"
# define RAP_NetUserSetGroups_REQ "zWsTW"
# define RAP_NetUserPasswordSet_REQ "zb16b16w"
# define RAP_NetUserPasswordSet2_REQ "zb16b16WW"
# define RAP_SAMOEMChgPasswordUser2_REQ "B516B16"
# define RAP_NetUserValidate2_REQ "Wb62WWrLhWW"
2001-10-19 20:34:10 +04:00
# define RAP_NetServerEnum2_REQ "WrLehDz"
# define RAP_WserverGetInfo_REQ "WrLh"
2001-11-04 00:13:42 +03:00
# define RAP_NetWkstatGetInfo "WrLh"
2001-10-19 20:34:10 +04:00
# define RAP_WShareAdd_REQ "WsT"
# define RAP_WShareEnum_REQ "WrLeh"
# define RAP_WShareDel_REQ "zW"
# define RAP_WWkstaGetInfo_REQ "WrLh"
# define RAP_NetPrintQEnum_REQ "WrLeh"
# define RAP_NetPrintQGetInfo_REQ "zWrLh"
2001-11-04 00:13:42 +03:00
# define RAP_NetServerAdminCommand_REQ "zhrLeh"
# define RAP_NetServiceEnum_REQ "WrLeh"
# define RAP_NetServiceControl_REQ "zWWrL"
# define RAP_NetServiceInstall_REQ "zF88sg88T"
# define RAP_NetServiceGetInfo_REQ "zWrLh"
2001-10-19 20:34:10 +04:00
# define RAP_NetSessionEnum_REQ "WrLeh"
# define RAP_NetSessionGetInfo_REQ "zWrLh"
# define RAP_NetSessionDel_REQ "zW"
# define RAP_NetConnectionEnum_REQ "zWrLeh"
# define RAP_NetWkstaUserLogoff_REQ "zzWb38WrLh"
/* Description strings for returned data in RAP calls */
/* I use all caps here in part to avoid accidental */
/* name collisions */
# define RAP_FILE_INFO_L2 "D"
# define RAP_FILE_INFO_L3 "DWWzz"
# define RAP_GROUP_INFO_L0 "B21"
# define RAP_GROUP_INFO_L1 "B21Bz"
# define RAP_GROUP_USERS_INFO_0 "B21"
# define RAP_GROUP_USERS_INFO_1 "B21BN"
# define RAP_USER_INFO_L0 "B21"
# define RAP_USER_INFO_L1 "B21BB16DWzzWz"
# define RAP_SERVER_INFO_L0 "B16"
# define RAP_SERVER_INFO_L1 "B16BBDz"
# define RAP_SERVER_INFO_L2 "B16BBDzDDDWWzWWWWWWWB21BzWWWWWWWWWWWWWWWWWWWWWWz"
# define RAP_SERVER_INFO_L3 "B16BBDzDDDWWzWWWWWWWB21BzWWWWWWWWWWWWWWWWWWWWWWzDWz"
2001-11-04 00:13:42 +03:00
# define RAP_SERVICE_INFO_L0 "B16"
# define RAP_SERVICE_INFO_L2 "B16WDWB64"
2001-10-19 20:34:10 +04:00
# define RAP_SHARE_INFO_L0 "B13"
# define RAP_SHARE_INFO_L1 "B13BWz"
# define RAP_SHARE_INFO_L2 "B13BWzWWWzB9B"
# define RAP_PRINTQ_INFO_L2 "B13BWWWzzzzzWN"
# define RAP_SMB_PRINT_JOB_L1 "WB21BB16B10zWWzDDz"
# define RAP_SESSION_INFO_L2 "zzWWWDDDz"
# define RAP_CONNECTION_INFO_L1 "WWWWDzz"
# define RAP_USER_LOGOFF_INFO_L1 "WDW"
# define RAP_WKSTA_INFO_L1 "WDzzzzBBDWDWWWWWWWWWWWWWWWWWWWzzWzzW"
# define RAP_WKSTA_INFO_L10 "zzzBBzz"
/* BB explicit packing would help in structs below */
/* sizes of fixed-length fields, including null terminator */
# define RAP_GROUPNAME_LEN 21
# define RAP_USERNAME_LEN 21
# define RAP_SHARENAME_LEN 13
# define RAP_UPASSWD_LEN 16 /* user password */
# define RAP_SPASSWD_LEN 9 /* share password */
# define RAP_MACHNAME_LEN 16
2001-11-04 00:13:42 +03:00
# define RAP_SRVCNAME_LEN 16
# define RAP_SRVCCMNT_LEN 64
2001-10-19 20:34:10 +04:00
# define RAP_DATATYPE_LEN 10
typedef struct rap_group_info_1
{
char group_name [ RAP_GROUPNAME_LEN ] ;
char reserved1 ;
char * comment ;
} RAP_GROUP_INFO_1 ;
typedef struct rap_user_info_1
{
char user_name [ RAP_USERNAME_LEN ] ;
char reserved1 ;
char passwrd [ RAP_UPASSWD_LEN ] ;
uint32 pwage ;
uint16 priv ;
char * home_dir ;
char * comment ;
uint16 userflags ;
char * logon_script ;
} RAP_USER_INFO_1 ;
2001-11-04 00:13:42 +03:00
typedef struct rap_service_info_2
{
char service_name [ RAP_SRVCNAME_LEN ] ;
uint16 status ;
uint32 installcode ;
uint16 process_num ;
char * comment ;
} RAP_SERVICE_INFO_2 ;
2001-10-19 20:34:10 +04:00
typedef struct rap_share_info_0
{
char share_name [ RAP_SHARENAME_LEN ] ;
} RAP_SHARE_INFO_0 ;
typedef struct rap_share_info_1
{
char share_name [ RAP_SHARENAME_LEN ] ;
char reserved1 ;
uint16 share_type ;
char * comment ;
} RAP_SHARE_INFO_1 ;
typedef struct rap_share_info_2
{
char share_name [ RAP_SHARENAME_LEN ] ;
char reserved1 ;
uint16 share_type ;
char * comment ;
uint16 perms ;
uint16 maximum_users ;
uint16 active_users ;
char * path ;
char password [ RAP_SPASSWD_LEN ] ;
char reserved2 ;
} RAP_SHARE_INFO_2 ;
2001-10-20 02:01:55 +04:00
# endif /* _RAP_H_ */