#define SET_FIELD_LSA_STRING(new, current, mod, field, flag) \
if (new.field != NULL && \
- !strequal_w(current->field.string, new.field)) { \
+ !strequal_m(current->field.string, new.field)) { \
\
mod->field = talloc_strdup(mem_ctx, new.field); \
if (mod->field == NULL) return NT_STATUS_NO_MEMORY; \
} \
}
+#define SET_FIELD_UINT32(new, current, mod, field, flag) \
+ if (current->field != new.field) { \
+ mod->field = new.field; \
+ mod->fields |= flag; \
+ }
+
+#define SET_FIELD_ACCT_FLAGS(new, current, mod, field, flag) \
+ if (new.field) { \
+ if (current->field != new.field) { \
+ mod->field = new.field; \
+ mod->fields |= flag; \
+ } \
+ }
+
+enum libnet_UserInfo_level {
+ USER_INFO_BY_NAME=0,
+ USER_INFO_BY_SID
+};
struct libnet_UserInfo {
struct {
- const char *user_name;
const char *domain_name;
+ enum libnet_UserInfo_level level;
+ union {
+ const char *user_name;
+ const struct dom_sid *user_sid;
+ } data;
} in;
struct {
+ struct dom_sid *user_sid;
+ struct dom_sid *primary_group_sid;
const char *account_name;
const char *full_name;
const char *description;
struct timeval *last_logoff;
struct timeval *last_password_change;
uint32_t acct_flags;
-
const char *error_string;
} out;
};
struct {
const char *domain_name;
int page_size;
- uint resume_index;
+ uint32_t resume_index;
} in;
struct {
int count;
- uint resume_index;
+ uint32_t resume_index;
struct userlist {
const char *sid;