root/source4/libnet/libnet_user.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* 
   2    Unix SMB/CIFS implementation.
   3    
   4    Copyright (C) Rafal Szczesniak <mimir@samba.org> 2005
   5    
   6    This program is free software; you can redistribute it and/or modify
   7    it under the terms of the GNU General Public License as published by
   8    the Free Software Foundation; either version 3 of the License, or
   9    (at your option) any later version.
  10    
  11    This program is distributed in the hope that it will be useful,
  12    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14    GNU General Public License for more details.
  15    
  16    You should have received a copy of the GNU General Public License
  17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18 */
  19 
  20 
  21 struct libnet_CreateUser {
  22         struct {
  23                 const char *user_name;
  24                 const char *domain_name;
  25         } in;
  26         struct {
  27                 const char *error_string;
  28         } out;
  29 };
  30 
  31 
  32 struct libnet_DeleteUser {
  33         struct {
  34                 const char *user_name;
  35                 const char *domain_name;
  36         } in;
  37         struct {
  38                 const char *error_string;
  39         } out;
  40 };
  41 
  42 
  43 struct libnet_ModifyUser {
  44         struct {
  45                 const char *user_name;
  46                 const char *domain_name;
  47 
  48                 const char *account_name;
  49                 const char *full_name;
  50                 const char *description;
  51                 const char *home_directory;
  52                 const char *home_drive;
  53                 const char *comment;
  54                 const char *logon_script;
  55                 const char *profile_path;
  56                 struct timeval *acct_expiry;
  57                 struct timeval *allow_password_change;
  58                 struct timeval *force_password_change;
  59                 struct timeval *last_password_change;
  60                 uint32_t acct_flags;
  61         } in;
  62         struct {
  63                 const char *error_string;
  64         } out;
  65 };
  66 
  67 
  68 #define SET_FIELD_LSA_STRING(new, current, mod, field, flag) \
  69         if (new.field != NULL && \
  70             !strequal_m(current->field.string, new.field)) { \
  71                 \
  72                 mod->field = talloc_strdup(mem_ctx, new.field); \
  73                 if (mod->field == NULL) return NT_STATUS_NO_MEMORY; \
  74                 \
  75                 mod->fields |= flag; \
  76         }
  77 
  78 #define SET_FIELD_NTTIME(new, current, mod, field, flag) \
  79         if (new.field != 0) { \
  80                 NTTIME newval = timeval_to_nttime(new.field); \
  81                 if (newval != current->field) { \
  82                         mod->field = talloc_memdup(mem_ctx, new.field, sizeof(*new.field)); \
  83                         if (mod->field == NULL) return NT_STATUS_NO_MEMORY; \
  84                         mod->fields |= flag; \
  85                 } \
  86         }
  87 
  88 #define SET_FIELD_UINT32(new, current, mod, field, flag) \
  89         if (current->field != new.field) { \
  90                 mod->field = new.field; \
  91                 mod->fields |= flag; \
  92         }
  93 
  94 #define SET_FIELD_ACCT_FLAGS(new, current, mod, field, flag) \
  95         if (new.field) { \
  96                 if (current->field != new.field) {      \
  97                         mod->field = new.field;         \
  98                         mod->fields |= flag;            \
  99                 }                                       \
 100         }
 101 
 102 enum libnet_UserInfo_level {
 103         USER_INFO_BY_NAME=0,
 104         USER_INFO_BY_SID
 105 };
 106 
 107 struct libnet_UserInfo {
 108         struct {
 109                 const char *domain_name;
 110                 enum libnet_UserInfo_level level;
 111                 union {
 112                         const char *user_name;
 113                         const struct dom_sid *user_sid;
 114                 } data;
 115         } in;
 116         struct {
 117                 struct dom_sid *user_sid;
 118                 struct dom_sid *primary_group_sid;
 119                 const char *account_name;
 120                 const char *full_name;
 121                 const char *description;
 122                 const char *home_directory;
 123                 const char *home_drive;
 124                 const char *comment;
 125                 const char *logon_script;
 126                 const char *profile_path;
 127                 struct timeval *acct_expiry;
 128                 struct timeval *allow_password_change;
 129                 struct timeval *force_password_change;
 130                 struct timeval *last_logon;
 131                 struct timeval *last_logoff;
 132                 struct timeval *last_password_change;
 133                 uint32_t acct_flags;
 134                 const char *error_string;
 135         } out;
 136 };
 137 
 138 
 139 struct libnet_UserList {
 140         struct {
 141                 const char *domain_name;
 142                 int page_size;
 143                 uint resume_index;
 144         } in;
 145         struct {
 146                 int count;
 147                 uint resume_index;
 148 
 149                 struct userlist {
 150                         const char *sid;
 151                         const char *username;
 152                 } *users;
 153 
 154                 const char *error_string;
 155         } out;
 156 };

/* [<][>][^][v][top][bottom][index][help] */