r9037: New fields in usermod function - allow_password_change and
authorRafal Szczesniak <mimir@samba.org>
Thu, 4 Aug 2005 02:51:26 +0000 (02:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:31:10 +0000 (13:31 -0500)
force_password_change datetime.

rafal
(This used to be commit dfa2cc6c4ed8273b1d3ee604954c81c75f0890bd)

source4/libnet/composite.h
source4/libnet/userman.c
source4/torture/libnet/userman.c

index 169b65f2150107e6cacd6271ebf36687209d3155..85aa1c08e1002602a6a5e862b35e0d24e1fb5bb6 100644 (file)
@@ -67,6 +67,7 @@ struct libnet_rpc_userdel {
 #define USERMOD_FIELD_PROFILE_PATH    ( 0x00000200 )
 #define USERMOD_FIELD_ACCT_EXPIRY     ( 0x00004000 )
 #define USERMOD_FIELD_ALLOW_PASS_CHG  ( 0x00008000 )
+#define USERMOD_FIELD_FORCE_PASS_CHG  ( 0x00010000 )
 #define USERMOD_FIELD_ACCT_FLAGS      ( 0x00100000 )
 
 struct libnet_rpc_usermod {
@@ -85,6 +86,7 @@ struct libnet_rpc_usermod {
                        const char *profile_path;
                        struct timeval *acct_expiry;
                        struct timeval *allow_password_change;
+                       struct timeval *force_password_change;
                } change;
        } in;
 };
index 59cb804ae98fc2cc3412e2dfe76066d45f6785a4..3482bba18e0c2500aec64e7fdc7ad04e61a87021 100644 (file)
@@ -546,6 +546,19 @@ static uint32_t usermod_setfields(struct usermod_state *s, uint16_t *level,
 
                        } else {
                                s->stage = USERMOD_QUERY;
+                               return s->change.fields;
+                       }
+
+               } else if (s->change.fields & USERMOD_FIELD_FORCE_PASS_CHG) {
+                       *level = 3;
+
+                       if (s->stage == USERMOD_QUERY) {
+                               i->info3.force_password_change = timeval_to_nttime(s->change.force_password_change);
+                               s->change.fields ^= USERMOD_FIELD_FORCE_PASS_CHG;
+
+                       } else {
+                               s->stage = USERMOD_QUERY;
+                               return s->change.fields;
                        }
 
                } else if (s->change.fields & USERMOD_FIELD_LOGON_SCRIPT) {
index 14d46a83830ae5661569fe8b75060ec0f70f51c7..169e7fa4a6774be6a0cea5f4a23660d6c6b79d3b 100644 (file)
@@ -418,15 +418,19 @@ BOOL torture_usermod(void)
        int i;
 
        struct timeval expiry = { 12345, 67890 };
+       struct timeval allow  = { 67890, 12345 };
+       struct timeval force  = { 33333, 55444 };
 
        struct usermod_change changes[] = {
-               { USERMOD_FIELD_ACCOUNT_NAME, "changed", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
-               { USERMOD_FIELD_FULL_NAME,    NULL, "Testing full account name", NULL, NULL, NULL, NULL, NULL, NULL },
-               { USERMOD_FIELD_DESCRIPTION,  NULL, NULL, "Description of tested account", NULL, NULL, NULL, NULL, NULL },
-               { USERMOD_FIELD_COMMENT,      NULL, NULL, NULL, "Comment for the tested account", NULL, NULL, NULL, NULL },
-               { USERMOD_FIELD_LOGON_SCRIPT, NULL, NULL, NULL, NULL, "test_logon.cmd", NULL, NULL, NULL },
-               { USERMOD_FIELD_PROFILE_PATH, NULL, NULL, NULL, NULL, NULL, "\\\\TESTSRV\\profiles\\test", NULL, NULL },
-               { USERMOD_FIELD_ACCT_EXPIRY,  NULL, NULL, NULL, NULL, NULL, NULL, &expiry, NULL }
+               { USERMOD_FIELD_ACCOUNT_NAME,   "changed", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_FULL_NAME,      NULL, "Testing full account name", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_DESCRIPTION,    NULL, NULL, "Description of tested account", NULL, NULL, NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_COMMENT,        NULL, NULL, NULL, "Comment for the tested account", NULL, NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_LOGON_SCRIPT,   NULL, NULL, NULL, NULL, "test_logon.cmd", NULL, NULL, NULL, NULL },
+               { USERMOD_FIELD_PROFILE_PATH,   NULL, NULL, NULL, NULL, NULL, "\\\\TESTSRV\\profiles\\test", NULL, NULL, NULL },
+               { USERMOD_FIELD_ACCT_EXPIRY,    NULL, NULL, NULL, NULL, NULL, NULL, &expiry, NULL, NULL },
+               { USERMOD_FIELD_ALLOW_PASS_CHG, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &allow, NULL },
+               { USERMOD_FIELD_FORCE_PASS_CHG, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &force }
        };
        
        mem_ctx = talloc_init("test_userdel");