Author: metze Date: 2004-11-06 10:07:08 +0000 (Sat, 06 Nov 2004) New Revision: 3577
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3577 Log: add a torture_join_domain_ads_dc() function, which will join as a w2k dc joins a ads domain (this is currently not fully implmented, I just have listed the steps we need to do) metze Modified: branches/SAMBA_4_0/source/torture/rpc/testjoin.c Changeset: Modified: branches/SAMBA_4_0/source/torture/rpc/testjoin.c =================================================================== --- branches/SAMBA_4_0/source/torture/rpc/testjoin.c 2004-11-06 09:35:56 UTC (rev 3576) +++ branches/SAMBA_4_0/source/torture/rpc/testjoin.c 2004-11-06 10:07:08 UTC (rev 3577) @@ -270,3 +270,97 @@ talloc_free(join); } + + +struct test_join_ads_dc { + struct test_join *join; +}; + +void *torture_join_domain_ads_dc(const char *machine_name, + const char *domain, + const char **machine_password) +{ + struct test_join_ads_dc *join; + + join = talloc_p(NULL, struct test_join_ads_dc); + if (join == NULL) { + return NULL; + } + + join->join = torture_join_domain(machine_name, domain, + ACB_SVRTRUST, + machine_password); + + if (!join->join) { + return NULL; + } + + /* do netlogon DrsEnumerateDomainTrusts */ + + /* modify userAccountControl from 4096 to 532480 */ + + /* modify RDN to OU=Domain Controllers and skip the $ from server name */ + + /* ask objectVersion of Schema Partition */ + + /* ask rIDManagerReferenz of the Domain Partition */ + + /* ask fsMORoleOwner of the RID-Manager$ object + * returns CN=NTDS Settings,CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ... + */ + + /* ask for dnsHostName of CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ... */ + + /* ask for objectGUID of CN=NTDS Settings,CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ... */ + + /* ask for * of CN=Default-First-Site-Name, ... */ + + /* search (&(|(objectClass=user)(objectClass=computer))(sAMAccountName=<machine_name>$)) in Domain Partition + * attributes : distinguishedName, userAccountControl + */ + + /* ask * for CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... + * should fail with noSuchObject + */ + + /* add CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... + * + * objectClass = server + * systemFlags = 50000000 + * serverReferenz = CN=<machine_name>,OU=Domain Controllers,... + */ + + /* ask for * of CN=NTDS Settings,CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name, ... + * should fail with noSuchObject + */ + + /* search for (ncname=<domain_nc>) in CN=Partitions,CN=Configuration,... + * attributes: ncName, dnsRoot + */ + + /* modify add CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... + * serverReferenz = CN=<machine_name>,OU=Domain Controllers,... + * should fail with attributeOrValueExists + */ + + /* modify replace CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... + * serverReferenz = CN=<machine_name>,OU=Domain Controllers,... + */ + + /* DsReplicaAdd to create the CN=NTDS Settings,CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name, ... + * needs to be tested + */ + + return join; +} + +void torture_leave_domain_ads_dc(void *join_ctx) +{ + struct test_join_ads_dc *join = join_ctx; + + if (join->join) { + torture_leave_domain(join->join); + } + + talloc_free(join); +}