Merge branch 'master' of ssh://git.samba.org/data/git/samba into regsrv
[kai/samba.git] / source3 / librpc / idl / libnetapi.idl
index 875906f32bd3868ede9dd3779b78fa22f985ba27..f2f4a16c1243b13ae9ff4e5477f7010ab3dd945d 100644 (file)
@@ -25,28 +25,66 @@ interface libnetapi
                uint32 sub_auths[MAXSUBAUTHS];
        } domsid;
 
+       /*******************************************/
+       /* NetJoinDomain                           */
+       /*******************************************/
+
+       typedef [public,bitmap32bit] bitmap {
+               NETSETUP_JOIN_DOMAIN                    = 0x00000001,
+               NETSETUP_ACCT_CREATE                    = 0x00000002,
+               NETSETUP_ACCT_DELETE                    = 0x00000004,
+               NETSETUP_WIN9X_UPGRADE                  = 0x00000010,
+               NETSETUP_DOMAIN_JOIN_IF_JOINED          = 0x00000020,
+               NETSETUP_JOIN_UNSECURE                  = 0x00000040,
+               NETSETUP_MACHINE_PWD_PASSED             = 0x00000080,
+               NETSETUP_DEFER_SPN_SET                  = 0x00000100,
+               NETSETUP_JOIN_DC_ACCOUNT                = 0x00000200,
+               NETSETUP_JOIN_WITH_NEW_NAME             = 0x00000400,
+               NETSETUP_INSTALL_INVOCATION             = 0x00040000,
+               NETSETUP_IGNORE_UNSUPPORTED_FLAGS       = 0x10000000
+       } NetJoinFlags;
+
        [nopush,nopull] NET_API_STATUS NetJoinDomain(
                [in,unique] string *server,
                [in,ref] string *domain,
                [in,unique] string *account_ou,
                [in,unique] string *account,
                [in,unique] string *password,
-               [in] uint32 join_flags
+               [in] NetJoinFlags join_flags
                );
 
+       /*******************************************/
+       /* NetUnjoinDomain                         */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetUnjoinDomain(
                [in,unique] string *server_name,
                [in,unique] string *account,
                [in,unique] string *password,
-               [in] uint32 unjoin_flags
+               [in] NetJoinFlags unjoin_flags
                );
 
+       /*******************************************/
+       /* NetGetJoinInformation                   */
+       /*******************************************/
+
+       typedef enum {
+               NetSetupUnknownStatus = 0,
+               NetSetupUnjoined = 1,
+               NetSetupWorkgroupName = 2,
+               NetSetupDomainName = 3
+       } NETSETUP_JOIN_STATUS;
+
        [nopush,nopull] NET_API_STATUS NetGetJoinInformation(
                [in,unique] string *server_name,
                [out] string **name_buffer,
                [out] uint16 *name_type
                );
 
+       /*******************************************/
+       /* NetGetJoinableOUs                       */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetGetJoinableOUs(
                [in,unique] string *server_name,
                [in,ref] string *domain,
@@ -56,6 +94,52 @@ interface libnetapi
                [out] string ***ous
                );
 
+       /*******************************************/
+       /* NetRenameMachineInDomain                */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetRenameMachineInDomain(
+               [in] string server_name,
+               [in] string new_machine_name,
+               [in] string account,
+               [in] string password,
+               [in] uint32 rename_options
+               );
+
+       /*******************************************/
+       /* NetServerGetInfo                        */
+       /*******************************************/
+
+       [public] typedef struct {
+               uint32 sv100_platform_id;
+               string sv100_name;
+       } SERVER_INFO_100;
+
+       [public] typedef struct {
+               uint32 sv101_platform_id;
+               string sv101_name;
+               uint32 sv101_version_major;
+               uint32 sv101_version_minor;
+               uint32 sv101_type;
+               string sv101_comment;
+       } SERVER_INFO_101;
+
+       [public] typedef struct {
+               uint32 sv102_platform_id;
+               string sv102_name;
+               uint32 sv102_version_major;
+               uint32 sv102_version_minor;
+               uint32 sv102_type;
+               string sv102_comment;
+               uint32 sv102_users;
+               uint32 sv102_disc;
+               boolean8 sv102_hidden;
+               uint32 sv102_announce;
+               uint32 sv102_anndelta;
+               uint32 sv102_licenses;
+               string sv102_userpath;
+       } SERVER_INFO_102;
+
        [public] typedef struct {
                string sv1005_comment;
        } SERVER_INFO_1005;
@@ -66,6 +150,10 @@ interface libnetapi
                [out] uint8 **buffer
                );
 
+       /*******************************************/
+       /* NetServerSetInfo                        */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetServerSetInfo(
                [in,unique] string *server_name,
                [in] uint32 level,
@@ -73,18 +161,30 @@ interface libnetapi
                [out] uint32 *parm_error
                );
 
+       /*******************************************/
+       /* NetGetDCName                            */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetGetDCName(
                [in,unique] string *server_name,
                [in,unique] string *domain_name,
                [out] uint8 **buffer
                );
 
+       /*******************************************/
+       /* NetGetAnyDCName                         */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetGetAnyDCName(
                [in,unique] string *server_name,
                [in,unique] string *domain_name,
                [out] uint8 **buffer
                );
 
+       /*******************************************/
+       /* DsGetDcName                             */
+       /*******************************************/
+
        [public] typedef struct {
                string domain_controller_name;
                string domain_controller_address;
@@ -106,10 +206,19 @@ interface libnetapi
                [out,ref] DOMAIN_CONTROLLER_INFO **dc_info
                );
 
+       /*******************************************/
+       /* NetUserAdd                              */
+       /*******************************************/
+
        [public] typedef struct {
                string usri0_name;
        } USER_INFO_0;
 
+       /* priv */
+       const int USER_PRIV_GUEST       = 0;
+       const int USER_PRIV_USER        = 1;
+       const int USER_PRIV_ADMIN       = 2;
+
        [public] typedef struct {
                string usri1_name;
                string usri1_password;
@@ -121,6 +230,298 @@ interface libnetapi
                string usri1_script_path;
        } USER_INFO_1;
 
+       /* auth_flags in USER_INFO_2 */
+
+       const int AF_OP_PRINT           = 0x1;
+       const int AF_OP_COMM            = 0x2;
+       const int AF_OP_SERVER          = 0x4;
+       const int AF_OP_ACCOUNTS        = 0x8;
+       const int AF_SETTABLE_BITS      = (AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS);
+
+       const int USER_MAXSTORAGE_UNLIMITED = (uint32_t)-1L;
+
+       [public] typedef struct {
+               string usri2_name;
+               string usri2_password;
+               uint32 usri2_password_age;
+               uint32 usri2_priv;
+               string usri2_home_dir;
+               string usri2_comment;
+               uint32 usri2_flags;
+               string usri2_script_path;
+               uint32 usri2_auth_flags;
+               string usri2_full_name;
+               string usri2_usr_comment;
+               string usri2_parms;
+               string usri2_workstations;
+               uint32 usri2_last_logon;
+               uint32 usri2_last_logoff;
+               uint32 usri2_acct_expires;
+               uint32 usri2_max_storage;
+               uint32 usri2_units_per_week;
+               uint8 *usri2_logon_hours;
+               uint32 usri2_bad_pw_count;
+               uint32 usri2_num_logons;
+               string usri2_logon_server;
+               uint32 usri2_country_code;
+               uint32 usri2_code_page;
+       } USER_INFO_2;
+
+       [public] typedef struct {
+               string usri3_name;
+               uint32 usri3_password_age;
+               uint32 usri3_priv;
+               string usri3_home_dir;
+               string usri3_comment;
+               uint32 usri3_flags;
+               string usri3_script_path;
+               uint32 usri3_auth_flags;
+               string usri3_full_name;
+               string usri3_usr_comment;
+               string usri3_parms;
+               string usri3_workstations;
+               uint32 usri3_last_logon;
+               uint32 usri3_last_logoff;
+               uint32 usri3_acct_expires;
+               uint32 usri3_max_storage;
+               uint32 usri3_units_per_week;
+               uint8 *usri3_logon_hours;
+               uint32 usri3_bad_pw_count;
+               uint32 usri3_num_logons;
+               string usri3_logon_server;
+               uint32 usri3_country_code;
+               uint32 usri3_code_page;
+               uint32 usri3_user_id;
+               uint32 usri3_primary_group_id;
+               string usri3_profile;
+               string usri3_home_dir_drive;
+               uint32 usri3_password_expired;
+       } USER_INFO_3;
+
+       [public] typedef struct {
+               string usri4_name;
+               string usri4_password;
+               uint32 usri4_password_age;
+               uint32 usri4_priv;
+               string usri4_home_dir;
+               string usri4_comment;
+               uint32 usri4_flags;
+               string usri4_script_path;
+               uint32 usri4_auth_flags;
+               string usri4_full_name;
+               string usri4_usr_comment;
+               string usri4_parms;
+               string usri4_workstations;
+               uint32 usri4_last_logon;
+               uint32 usri4_last_logoff;
+               uint32 usri4_acct_expires;
+               uint32 usri4_max_storage;
+               uint32 usri4_units_per_week;
+               uint8 *usri4_logon_hours;
+               uint32 usri4_bad_pw_count;
+               uint32 usri4_num_logons;
+               string usri4_logon_server;
+               uint32 usri4_country_code;
+               uint32 usri4_code_page;
+               domsid *usri4_user_sid;
+               uint32 usri4_primary_group_id;
+               string usri4_profile;
+               string usri4_home_dir_drive;
+               uint32 usri4_password_expired;
+       } USER_INFO_4;
+
+       [public] typedef struct {
+               string usri10_name;
+               string usri10_comment;
+               string usri10_usr_comment;
+               string usri10_full_name;
+       } USER_INFO_10;
+
+       [public] typedef struct {
+               string usri11_name;
+               string usri11_comment;
+               string usri11_usr_comment;
+               string usri11_full_name;
+               uint32 usri11_priv;
+               uint32 usri11_auth_flags;
+               uint32 usri11_password_age;
+               string usri11_home_dir;
+               string usri11_parms;
+               uint32 usri11_last_logon;
+               uint32 usri11_last_logoff;
+               uint32 usri11_bad_pw_count;
+               uint32 usri11_num_logons;
+               string usri11_logon_server;
+               uint32 usri11_country_code;
+               string usri11_workstations;
+               uint32 usri11_max_storage;
+               uint32 usri11_units_per_week;
+               uint8 *usri11_logon_hours;
+               uint32 usri11_code_page;
+       } USER_INFO_11;
+
+       [public] typedef struct {
+               string usri20_name;
+               string usri20_full_name;
+               string usri20_comment;
+               uint32 usri20_flags;
+               uint32 usri20_user_id;
+       } USER_INFO_20;
+
+       const int ENCRYPTED_PWLEN = 16;
+
+       [public] typedef struct {
+               uint8 usri21_password[ENCRYPTED_PWLEN];
+       } USER_INFO_21;
+
+       [public] typedef struct {
+               string usri22_name;
+               uint8 usri22_password[ENCRYPTED_PWLEN];
+               uint32 usri22_password_age;
+               uint32 usri22_priv;
+               string usri22_home_dir;
+               string usri22_comment;
+               uint32 usri22_flags;
+               uint32 usri22_script_path;
+               uint32 usri22_auth_flags;
+               string usri22_full_name;
+               string usri22_usr_comment;
+               string usri22_parms;
+               string usri22_workstations;
+               uint32 usri22_last_logon;
+               uint32 usri22_last_logoff;
+               uint32 usri22_acct_expires;
+               uint32 usri22_max_storage;
+               uint32 usri22_units_per_week;
+               uint8 *usri22_logon_hours;
+               uint32 usri22_bad_pw_count;
+               uint32 usri22_num_logons;
+               string usri22_logon_server;
+               uint32 usri22_country_code;
+               uint32 usri22_code_page;
+       } USER_INFO_22;
+
+       [public] typedef struct {
+               string usri23_name;
+               string usri23_full_name;
+               string usri23_comment;
+               uint32 usri23_flags;
+               domsid *usri23_user_sid;
+       } USER_INFO_23;
+
+       [public] typedef struct {
+               string usri1003_password;
+       } USER_INFO_1003;
+
+       [public] typedef struct {
+               uint32 usri1005_priv;
+       } USER_INFO_1005;
+
+       [public] typedef struct {
+               string usri1006_home_dir;
+       } USER_INFO_1006;
+
+       [public] typedef struct {
+               string usri1007_comment;
+       } USER_INFO_1007;
+
+       [public] typedef struct {
+               uint32 usri1008_flags;
+       } USER_INFO_1008;
+
+       [public] typedef struct {
+               string usri1009_script_path;
+       } USER_INFO_1009;
+
+       [public] typedef struct {
+               uint32 usri1010_auth_flags;
+       } USER_INFO_1010;
+
+       [public] typedef struct {
+               string usri1011_full_name;
+       } USER_INFO_1011;
+
+       [public] typedef struct {
+               string usri1012_usr_comment;
+       } USER_INFO_1012;
+
+       [public] typedef struct {
+               string usri1013_parms;
+       } USER_INFO_1013;
+
+       [public] typedef struct {
+               string usri1014_workstations;
+       } USER_INFO_1014;
+
+       [public] typedef struct {
+               uint32 usri1017_acct_expires;
+       } USER_INFO_1017;
+
+       [public] typedef struct {
+               uint32 usri1018_max_storage;
+       } USER_INFO_1018;
+
+       [public] typedef struct {
+               uint32 usri1020_units_per_week;
+               uint8 *usri1020_logon_hours;
+       } USER_INFO_1020;
+
+       [public] typedef struct {
+               string usri1023_logon_server;
+       } USER_INFO_1023;
+
+       [public] typedef struct {
+               uint32 usri1024_country_code;
+       } USER_INFO_1024;
+
+       [public] typedef struct {
+               uint32 usri1025_code_page;
+       } USER_INFO_1025;
+
+       [public] typedef struct {
+               uint32 usri1051_primary_group_id;
+       } USER_INFO_1051;
+
+       [public] typedef struct {
+               string usri1052_profile;
+       } USER_INFO_1052;
+
+       [public] typedef struct {
+               string usri1053_home_dir_drive;
+       } USER_INFO_1053;
+
+       [public] typedef struct {
+               string usriX_name;
+               string usriX_password;
+               uint32 usriX_password_age;
+               uint32 usriX_priv;
+               string usriX_home_dir;
+               string usriX_comment;
+               uint32 usriX_flags;
+               string usriX_script_path;
+               uint32 usriX_auth_flags;
+               string usriX_full_name;
+               string usriX_usr_comment;
+               string usriX_parms;
+               string usriX_workstations;
+               uint32 usriX_last_logon;
+               uint32 usriX_last_logoff;
+               uint32 usriX_acct_expires;
+               uint32 usriX_max_storage;
+               uint32 usriX_units_per_week;
+               uint8 *usriX_logon_hours;
+               uint32 usriX_bad_pw_count;
+               uint32 usriX_num_logons;
+               string usriX_logon_server;
+               uint32 usriX_country_code;
+               uint32 usriX_code_page;
+               string usriX_profile;
+               string usriX_home_dir_drive;
+               uint32 usriX_user_id;
+               uint32 usriX_primary_group_id;
+               uint32 usriX_password_expired;
+       } USER_INFO_X;
+
        [nopush,nopull] NET_API_STATUS NetUserAdd(
                [in,unique] string *server_name,
                [in] uint32 level,
@@ -128,11 +529,25 @@ interface libnetapi
                [out,ref] uint32 *parm_error
                );
 
+       /*******************************************/
+       /* NetUserDel                              */
+       /*******************************************/
+
        [nopush,nopull] NET_API_STATUS NetUserDel(
                [in,unique] string *server_name,
                [in,ref] string *user_name
                );
 
+       /*******************************************/
+       /* NetUserEnum                             */
+       /*******************************************/
+
+       const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x0001;
+       const int FILTER_NORMAL_ACCOUNT = 0x0002;
+       const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x0008;
+       const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x0010;
+       const int FILTER_SERVER_TRUST_ACCOUNT = 0x0020;
+
        [nopush,nopull] NET_API_STATUS NetUserEnum(
                [in,unique] string *server_name,
                [in] uint32 level,
@@ -144,6 +559,175 @@ interface libnetapi
                [in,out,ref] uint32 *resume_handle
                );
 
+       /*******************************************/
+       /* NetUserChangePassword                   */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetUserChangePassword(
+               [in] string domain_name,
+               [in] string user_name,
+               [in] string old_password,
+               [in] string new_password
+               );
+
+       /*******************************************/
+       /* NetUserGetInfo                          */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetUserGetInfo(
+               [in] string server_name,
+               [in] string user_name,
+               [in] uint32 level,
+               [out] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetUserSetInfo                          */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetUserSetInfo(
+               [in] string server_name,
+               [in] string user_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [out] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetUserGetGroups                        */
+       /*******************************************/
+
+       [public] typedef struct {
+               string grui0_name;
+       } GROUP_USERS_INFO_0;
+
+       [public] typedef struct {
+               string grui1_name;
+               uint32 grui1_attributes;
+       } GROUP_USERS_INFO_1;
+
+       [nopush,nopull] NET_API_STATUS NetUserGetGroups(
+               [in] string server_name,
+               [in] string user_name,
+               [in] uint32 level,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out,ref] uint32 *entries_read,
+               [out,ref] uint32 *total_entries
+               );
+
+       /*******************************************/
+       /* NetUserSetGroups                        */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetUserSetGroups(
+               [in] string server_name,
+               [in] string user_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [in] uint32 num_entries
+               );
+
+       /*******************************************/
+       /* NetUserGetLocalGroups                   */
+       /*******************************************/
+
+       const int LG_INCLUDE_INDIRECT = 0x0001;
+
+       typedef struct {
+               string lgrui0_name;
+       } LOCALGROUP_USERS_INFO_0;
+
+       [nopush,nopull] NET_API_STATUS NetUserGetLocalGroups(
+               [in] string server_name,
+               [in] string user_name,
+               [in] uint32 level,
+               [in] uint32 flags,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out,ref] uint32 *entries_read,
+               [out,ref] uint32 *total_entries
+               );
+
+       /*******************************************/
+       /* NetUserModalsGet                        */
+       /*******************************************/
+
+       const int TIMEQ_FOREVER = (uint32_t)-1L;
+
+       typedef struct {
+               uint32 usrmod0_min_passwd_len;
+               uint32 usrmod0_max_passwd_age;
+               uint32 usrmod0_min_passwd_age;
+               uint32 usrmod0_force_logoff;
+               uint32 usrmod0_password_hist_len;
+       } USER_MODALS_INFO_0;
+
+       typedef struct {
+               uint32 usrmod1_role;
+               string usrmod1_primary;
+       } USER_MODALS_INFO_1;
+
+       typedef struct {
+               string usrmod2_domain_name;
+               domsid *usrmod2_domain_id;
+       } USER_MODALS_INFO_2;
+
+       typedef struct {
+               uint32 usrmod3_lockout_duration;
+               uint32 usrmod3_lockout_observation_window;
+               uint32 usrmod3_lockout_threshold;
+       } USER_MODALS_INFO_3;
+
+       typedef struct {
+               uint32 usrmod1001_min_passwd_len;
+       } USER_MODALS_INFO_1001;
+
+       typedef struct {
+               uint32 usrmod1002_max_passwd_age;
+       } USER_MODALS_INFO_1002;
+
+       typedef struct {
+               uint32 usrmod1003_min_passwd_age;
+       } USER_MODALS_INFO_1003;
+
+       typedef struct {
+               uint32 usrmod1004_force_logoff;
+       } USER_MODALS_INFO_1004;
+
+       typedef struct {
+               uint32 usrmod1005_password_hist_len;
+       } USER_MODALS_INFO_1005;
+
+       typedef struct {
+               uint32 usrmod1006_role;
+       } USER_MODALS_INFO_1006;
+
+       typedef struct {
+               string usrmod1007_primary;
+       } USER_MODALS_INFO_1007;
+
+       [nopush,nopull] NET_API_STATUS NetUserModalsGet(
+               [in] string server_name,
+               [in] uint32 level,
+               [out,ref] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetUserModalsSet                        */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetUserModalsSet(
+               [in] string server_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [out,ref] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetQueryDisplayInformation              */
+       /*******************************************/
+
        [public] typedef struct {
                string usri1_name;
                string usri1_comment;
@@ -179,6 +763,10 @@ interface libnetapi
                [out,ref,noprint] void **buffer
                );
 
+       /*******************************************/
+       /* NetGroupAdd                             */
+       /*******************************************/
+
        typedef struct {
                string grpi0_name;
        } GROUP_INFO_0;
@@ -198,14 +786,454 @@ interface libnetapi
        typedef struct {
                string grpi3_name;
                string grpi3_comment;
-               domsid grpi3_group_sid;
+               domsid *grpi3_group_sid;
                uint32 grpi3_attributes;
        } GROUP_INFO_3;
 
+       typedef struct {
+               string grpi1002_comment;
+       } GROUP_INFO_1002;
+
+       typedef struct {
+               uint32 grpi1005_attributes;
+       } GROUP_INFO_1005;
+
        [nopush,nopull] NET_API_STATUS NetGroupAdd(
                [in] string server_name,
                [in] uint32 level,
-               [in] uint8 *buf,
+               [in] uint8 *buffer,
+               [out] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetGroupDel                             */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupDel(
+               [in] string server_name,
+               [in] string group_name
+               );
+
+       /*******************************************/
+       /* NetGroupEnum                            */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupEnum(
+               [in] string server_name,
+               [in] uint32 level,
+               [out,ref] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out,ref] uint32 *entries_read,
+               [out,ref] uint32 *total_entries,
+               [in,out,ref] uint32 *resume_handle
+               );
+
+       /*******************************************/
+       /* NetGroupSetInfo                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupSetInfo(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
                [out] uint32 *parm_err
                );
+
+       /*******************************************/
+       /* NetGroupGetInfo                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupGetInfo(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [out] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetGroupAddUser                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupAddUser(
+               [in] string server_name,
+               [in] string group_name,
+               [in] string user_name
+               );
+
+       /*******************************************/
+       /* NetGroupDelUser                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupDelUser(
+               [in] string server_name,
+               [in] string group_name,
+               [in] string user_name
+               );
+
+       /*******************************************/
+       /* NetGroupGetUsers                        */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupGetUsers(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out,ref] uint32 *entries_read,
+               [out,ref] uint32 *total_entries,
+               [in,out,ref] uint32 *resume_handle
+               );
+
+       /*******************************************/
+       /* NetGroupSetUsers                        */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetGroupSetUsers(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [in] uint32 num_entries
+               );
+
+       /*******************************************/
+       /* NetLocalGroupAdd                        */
+       /*******************************************/
+
+       typedef struct {
+               string lgrpi0_name;
+       } LOCALGROUP_INFO_0;
+
+       typedef struct {
+               string lgrpi1_name;
+               string lgrpi1_comment;
+       } LOCALGROUP_INFO_1;
+
+       typedef struct {
+               string lgrpi1002_comment;
+       } LOCALGROUP_INFO_1002;
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupAdd(
+               [in] string server_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [out,ref] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetLocalGroupDel                        */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupDel(
+               [in] string server_name,
+               [in] string group_name
+               );
+
+       /*******************************************/
+       /* NetLocalGroupGetInfo                    */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupGetInfo(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [out,ref] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetLocalGroupSetInfo                    */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupSetInfo(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in,ref] uint8 *buffer,
+               [out,ref] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetLocalGroupEnum                       */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupEnum(
+               [in] string server_name,
+               [in] uint32 level,
+               [out,ref] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out,ref] uint32 *entries_read,
+               [out,ref] uint32 *total_entries,
+               [in,out,ref] uint32 *resume_handle
+               );
+
+       /*******************************************/
+       /* NetLocalGroupAddMembers                 */
+       /*******************************************/
+
+       typedef enum {
+               SidTypeUser             = 1,
+               SidTypeGroup            = 2,
+               SidTypeDomain           = 3,
+               SidTypeAlias            = 4,
+               SidTypeWellKnownGroup   = 5,
+               SidTypeDeletedAccount   = 6,
+               SidTypeInvalid          = 7,
+               SidTypeUnknown          = 8,
+               SidTypeComputer         = 9,
+               SidTypeLabel            = 10
+       } SID_NAME_USE;
+
+       typedef struct {
+               domsid *lgrmi0_sid;
+       } LOCALGROUP_MEMBERS_INFO_0;
+
+       typedef struct {
+               domsid *lgrmi1_sid;
+               SID_NAME_USE lgrmi1_sidusage;
+               string lgrmi1_name;
+       } LOCALGROUP_MEMBERS_INFO_1;
+
+       typedef struct {
+               domsid *lgrmi2_sid;
+               SID_NAME_USE lgrmi2_sidusage;
+               string lgrmi2_domainandname;
+       } LOCALGROUP_MEMBERS_INFO_2;
+
+       typedef struct {
+               string lgrmi3_domainandname;
+       } LOCALGROUP_MEMBERS_INFO_3;
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupAddMembers(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [in] uint32 total_entries
+               );
+
+       /*******************************************/
+       /* NetLocalGroupDelMembers                 */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupDelMembers(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [in] uint32 total_entries
+               );
+
+       /*******************************************/
+       /* NetLocalGroupGetMembers                 */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupGetMembers(
+               [in] string server_name,
+               [in] string local_group_name,
+               [in] uint32 level,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out] uint32 *entries_read,
+               [out] uint32 *total_entries,
+               [in,out] uint32 *resume_handle
+               );
+
+       /*******************************************/
+       /* NetLocalGroupSetMembers                 */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetLocalGroupSetMembers(
+               [in] string server_name,
+               [in] string group_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [in] uint32 total_entries
+               );
+
+       /*******************************************/
+       /* NetRemoteTOD                            */
+       /*******************************************/
+
+       typedef struct {
+               uint32 tod_elapsedt;
+               uint32 tod_msecs;
+               uint32 tod_hours;
+               uint32 tod_mins;
+               uint32 tod_secs;
+               uint32 tod_hunds;
+               int32 tod_timezone;
+               uint32 tod_tinterval;
+               uint32 tod_day;
+               uint32 tod_month;
+               uint32 tod_year;
+               uint32 tod_weekday;
+       } TIME_OF_DAY_INFO;
+
+       [nopush,nopull] NET_API_STATUS NetRemoteTOD(
+               [in] string server_name,
+               [out,ref] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetShareAdd                             */
+       /*******************************************/
+
+       typedef struct {
+               string shi0_netname;
+       } SHARE_INFO_0;
+
+       typedef struct {
+               string shi1_netname;
+               uint32 shi1_type;
+               string shi1_remark;
+       } SHARE_INFO_1;
+
+       typedef struct {
+               string shi2_netname;
+               uint32 shi2_type;
+               string shi2_remark;
+               uint32 shi2_permissions;
+               uint32 shi2_max_uses;
+               uint32 shi2_current_uses;
+               string shi2_path;
+               string shi2_passwd;
+       } SHARE_INFO_2;
+
+       typedef struct {
+               string shi501_netname;
+               uint32 shi501_type;
+               string shi501_remark;
+               uint32 shi501_flags;
+       } SHARE_INFO_501;
+
+       typedef struct {
+               string shi1004_remark;
+       } SHARE_INFO_1004;
+
+       const int CSC_MASK = 0x30;
+
+       typedef [public,bitmap32bit] bitmap {
+               SHI1005_FLAGS_DFS                               = 0x01,
+               SHI1005_FLAGS_DFS_ROOT                          = 0x02,
+               CSC_CACHE_MANUAL_REINT                          = 0x00,
+               CSC_CACHE_AUTO_REINT                            = 0x10,
+               CSC_CACHE_VDO                                   = 0x20,
+               CSC_CACHE_NONE                                  = 0x30,
+               SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS          = 0x0100,
+               SHI1005_FLAGS_FORCE_SHARED_DELETE               = 0x0200,
+               SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING           = 0x0400,
+               SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM       = 0x0800
+       } SHARE_INFO_1005_FLAGS;
+
+       typedef struct {
+               SHARE_INFO_1005_FLAGS shi1005_flags;
+       } SHARE_INFO_1005;
+
+       typedef struct {
+               uint32 shi1006_max_uses;
+       } SHARE_INFO_1006;
+
+       [nopush,nopull] NET_API_STATUS NetShareAdd(
+               [in] string server_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [out] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetShareDel                             */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetShareDel(
+               [in] string server_name,
+               [in] string net_name,
+               [in] uint32 reserved
+               );
+
+       /*******************************************/
+       /* NetShareEnum                            */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetShareEnum(
+               [in] string server_name,
+               [in] uint32 level,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out] uint32 *entries_read,
+               [out] uint32 *total_entries,
+               [in,out] uint32 *resume_handle
+               );
+
+       /*******************************************/
+       /* NetShareGetInfo                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetShareGetInfo(
+               [in] string server_name,
+               [in] string net_name,
+               [in] uint32 level,
+               [out] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetShareSetInfo                         */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetShareSetInfo(
+               [in] string server_name,
+               [in] string net_name,
+               [in] uint32 level,
+               [in] uint8 *buffer,
+               [out] uint32 *parm_err
+               );
+
+       /*******************************************/
+       /* NetFileClose                            */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetFileClose(
+               [in] string server_name,
+               [in] uint32 fileid
+               );
+
+       /*******************************************/
+       /* NetFileGetInfo                          */
+       /*******************************************/
+
+       typedef struct {
+               uint32 fi2_id;
+       } FILE_INFO_2;
+
+       typedef struct {
+               uint32 fi3_id;
+               uint32 fi3_permissions;
+               uint32 fi3_num_locks;
+               string fi3_pathname;
+               string fi3_username;
+       } FILE_INFO_3;
+
+       [nopush,nopull] NET_API_STATUS NetFileGetInfo(
+               [in] string server_name,
+               [in] uint32 fileid,
+               [in] uint32 level,
+               [out] uint8 **buffer
+               );
+
+       /*******************************************/
+       /* NetFileEnum                             */
+       /*******************************************/
+
+       [nopush,nopull] NET_API_STATUS NetFileEnum(
+               [in] string server_name,
+               [in] string base_path,
+               [in] string user_name,
+               [in] uint32 level,
+               [out] uint8 **buffer,
+               [in] uint32 prefmaxlen,
+               [out] uint32 *entries_read,
+               [out] uint32 *total_entries,
+               [in,out] uint32 *resume_handle
+               );
 }