Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1202 lines
46 KiB

  1. /*++
  2. Copyright (c) 1987-1996 Microsoft Corporation
  3. Module Name:
  4. iniparm.h
  5. Abstract:
  6. Initiail values of startup parameters.
  7. Author:
  8. Ported from Lan Man 2.0
  9. Revision History:
  10. 21-May-1991 (cliffv)
  11. Ported to NT. Converted to NT style.
  12. 07-May-1992 JohnRo
  13. Use net config helpers for NetLogon.
  14. --*/
  15. #ifndef _INIPARM_
  16. #define _INIPARM_
  17. //
  18. // Upon RegistryChangeNotify, all registry values take effect immediately execpt
  19. // as noted below.
  20. //
  21. //
  22. // Pulse period (in seconds):
  23. //
  24. // Defines the typical pulse frequency. All SAM/LSA changes made within this
  25. // time are collected together. After this time, a pulse is sent to each BDC
  26. // needing the changes. No pulse is sent to a BDC that is up to date.
  27. //
  28. #define DEFAULT_PULSE (5*60) // 5 mins
  29. #define MAX_PULSE (48*60*60) // 2 days
  30. #define MIN_PULSE 60 // 1 min
  31. //
  32. // Pulse concurrency (in number of concurrent mailslot messages).
  33. //
  34. // Netlogon sends pulses to individual BDCs. The BDCs respond asking for any
  35. // database changes. To control the maximum load these responses place on the
  36. // PDC, the PDC will only have this many pulses "pending" at once. The PDC
  37. // should be sufficiently powerful to support this many concurrent replication
  38. // RPC calls.
  39. //
  40. // Increasing this number increases the load on the PDC.
  41. // Decreasing this number increases the time it takes for a domain with a
  42. // large number of BDC to get a SAM/LSA change.
  43. #define DEFAULT_PULSECONCURRENCY 10
  44. #define MAX_PULSECONCURRENCY 500
  45. #define MIN_PULSECONCURRENCY 1
  46. //
  47. // Maximum pulse period (in seconds):
  48. //
  49. // Defines the maximum pulse frequency. Every BDC will be sent at least one
  50. // pulse at this frequency regardless of whether its database is up to date.
  51. //
  52. #define DEFAULT_PULSEMAXIMUM (2*60*60) // 2 hours
  53. #define MAX_PULSEMAXIMUM (48*60*60) // 2 days
  54. #define MIN_PULSEMAXIMUM 60 // 1 min
  55. //
  56. // Pulse timeout period (in seconds):
  57. //
  58. // When a BDC is sent a pulse, it must respond within this time period. If
  59. // not, the BDC is considered to be non-responsive. A non-responsive BDC is
  60. // not counted against the "Pulse Concurrency" limit allowing the PDC to
  61. // send a pulse to another BDC in the domain.
  62. //
  63. // If this number is too large, a domain with a large number of non-responsive
  64. // BDCs will take a long time to complete a partial replication.
  65. //
  66. // If this number is too small, a slow BDC may be falsely accused of being
  67. // non-responsive. When the BDC finally does respond, it will partial
  68. // replicate from the PDC unduly increasing the load on the PDC.
  69. //
  70. #define DEFAULT_PULSETIMEOUT1 10 // 10 seconds
  71. #define MAX_PULSETIMEOUT1 (2*60) // 2 min
  72. #define MIN_PULSETIMEOUT1 1 // 1 second
  73. //
  74. // Maximum Partial replication timeout (in seconds):
  75. //
  76. // Even though a BDC initially responds to a pulse (as described for
  77. // PULSETIMEOUT1), it must continue making replication progress or the
  78. // BDC will be considered non-responsive. Each time the BDC calls the PDC,
  79. // the BDC is given another PULSETIMEOUT2 seconds to be considered responsive.
  80. //
  81. // If this number is too large, a slow BDC (or one which has its replication
  82. // rate artificially governed) will consume one of the PULSECONCURRENCY slots.
  83. //
  84. // If this number is too small, the load on the PDC will be unduly increased
  85. // because of the large number of BDC doing a partial sync.
  86. //
  87. // NOTE: This parameter only affect the cases where a BDC cannot retrieve all the
  88. // changes to the SAM/LSA database in a single RPC call. This will only
  89. // happen if a large number of changes are made to the database.
  90. #define DEFAULT_PULSETIMEOUT2 (5*60) // 5 minutes
  91. #define MAX_PULSETIMEOUT2 (1*60*60) // 1 hour
  92. #define MIN_PULSETIMEOUT2 (1*60) // 1 minute
  93. //
  94. // BDC random backoff (in seconds):
  95. //
  96. // When the BDC receives a pulse, it will back off between zero and RANDOMIZE
  97. // seconds before calling the PDC. In Lanman and NT 3.1, the pulse was
  98. // broadcast to all BDCs simultaneously and the BDCs used this mechanism to
  99. // ensure they didn't overload the PDC. As of NT 3.5x, the pulse is sent
  100. // to individual BDCs so this parameter should be minimized.
  101. //
  102. // This parameter should be smaller than PULSETIMEOUT1.
  103. //
  104. // Consider that the time to replicate a SAM/LSA change to all the BDCs in a
  105. // domain will be greater than:
  106. //
  107. // ((RANDOMIZE/2) * NumberOfBdcsInDomain) / PULSECONCURRENCY
  108. //
  109. #define DEFAULT_RANDOMIZE 1 // 1 secs
  110. #define MAX_RANDOMIZE 120 // 2 mins
  111. #define MIN_RANDOMIZE 0 // 0 secs
  112. //
  113. // ChangeLogSize (in bytes) [NOTE: This parameter is NOT read from the GP section]
  114. //
  115. // This is the size of the Change Log file. Each change to the SAM/LSA database
  116. // is represented by an entry in the change log. The changelog is maintained
  117. // as a circular buffer with the oldest entry being overwritten by the newest
  118. // entry. If a BDC does a partial sync and requests an entry that has been
  119. // overwritten, the BDC is forced to do a full sync.
  120. //
  121. // The minimum (and typical) size of an entry is 32 bytes. Some entries are
  122. // larger. (e.g., a 64K changelog holds about 2000 changes)
  123. //
  124. // This parameter need only be set larger if:
  125. //
  126. // a) full syncs are prohibitively expensive, AND
  127. // b) one or more BDCs are expected to not request a partial sync within 2000
  128. // changes.
  129. //
  130. // For instance, if a BDC dials in nightly to do a partial sync and on some
  131. // days 4000 changes are made to the SAM/LSA database, this parameter should
  132. // be set to 128K.
  133. //
  134. // This parameter need only be set on the PDC. If a different PDC is promoted,
  135. // it should be set on that PDC also.
  136. //
  137. #define DEFAULT_CHANGELOGSIZE (64*1024)
  138. #define MAX_CHANGELOGSIZE (4*1024*1024)
  139. #define MIN_CHANGELOGSIZE (64*1024)
  140. //
  141. // MaximumMailslotMessages (in number of messages)
  142. //
  143. // This parameter determines the maximum number of mailslot messages that will
  144. // be queued to the netlogon service. Even though the Netlogon service is
  145. // designed to process incoming mailslot messages immediately, the netlogon
  146. // service can get backed up processing requests.
  147. //
  148. // Each mailslot message consumes about 1500 bytes of non-paged pool until it
  149. // is process. By setting this parameter low, you can govern the maximum
  150. // amount of non-paged pool that can be consumed.
  151. //
  152. // If you set this parameter too low, netlogon may miss important incoming
  153. // mailslot messages.
  154. //
  155. // Upon RegistryChangeNotify, changes to this value are ignored.
  156. #define DEFAULT_MAXIMUMMAILSLOTMESSAGES 500
  157. #define MAX_MAXIMUMMAILSLOTMESSAGES 0xFFFFFFFF
  158. #define MIN_MAXIMUMMAILSLOTMESSAGES 1
  159. //
  160. // MailslotMessageTimeout (in seconds)
  161. //
  162. // This parameter specifies the maximum acceptable age of an incoming
  163. // mailslot message. If netlogon receives a mailslot messages that arrived
  164. // longer ago than this, it will ignore the message. This allows netlogon
  165. // to process messages that are more recent. The theory is that the client
  166. // that originally sent the older mailslot message is no longer waiting for
  167. // the response so we shouldn't bother sending a response.
  168. //
  169. // If you set this parameter too low, netlogon will ignore important incoming
  170. // mailslot messages.
  171. //
  172. // Ideally, netlogon processes each mailslot message in a fraction of a second.
  173. // This parameter is only significant if the NTAS server is overloaded.
  174. //
  175. #define DEFAULT_MAILSLOTMESSAGETIMEOUT 10
  176. #define MAX_MAILSLOTMESSAGETIMEOUT 0xFFFFFFFF
  177. #define MIN_MAILSLOTMESSAGETIMEOUT 5
  178. //
  179. // MailslotDuplicateTimeout (in seconds)
  180. //
  181. // This parameter specifies the interval over which duplicate incoming
  182. // mailslot messages will be ignored. Netlogon compares each mailslot
  183. // message received with the previous mailslot message received. If the
  184. // previous message was received within this many seconds and the messages
  185. // are identical, this message will be ignored. The theory is that the
  186. // duplicate messages are caused by clients sending on multiple transports and
  187. // that netlogon needs to only reply on one of those transports saving network
  188. // bandwidth.
  189. //
  190. // Set this parameter to zero to disable this feature. You should disable this
  191. // feature if your network is configured such that this machine can see
  192. // certain incoming mailslot messages but can't respond to them. For instance,
  193. // a PDC may be separated from an NT workstation by a bridge/router.
  194. // The bridge/router might filter outgoing NBF broadcasts, but allow incoming
  195. // one. As such, netlogon might respond to an NBF mailslot message (only to
  196. // be filtered out by the bridge/router) and not respond to a subsequent NBT
  197. // mailslot message. Disabling this feature (or preferably reconfiguring the
  198. // bridge/router) solves this problem.
  199. //
  200. // If you set this parameter too high, netlogon will ignore retry attempts
  201. // from a client.
  202. //
  203. #define DEFAULT_MAILSLOTDUPLICATETIMEOUT 2
  204. #define MAX_MAILSLOTDUPLICATETIMEOUT 5
  205. #define MIN_MAILSLOTDUPLICATETIMEOUT 0
  206. //
  207. // ExpectedDialupDelay (in seconds)
  208. //
  209. // This parameter specifies the time it takes for a dialup router to dial when
  210. // sending a message from this client machine to a domain trusted by this client
  211. // machine. Typically, netlogon assumes a domain controller is reachable in a
  212. // short (e.g., 15 seconds) time period. Setting ExpectedDialupDelay informs
  213. // Netlogon to expect an ADDITIONAL delay of the time specified.
  214. //
  215. // Currently, netlogon adjusts the following two times based on the
  216. // ExpectedDialupDelay:
  217. //
  218. // 1) When discovering a DC in a trusted domain, Netlogon sends a 3 mailslot
  219. // messages to the trusted domain at ( 5 + ExpectedDialupDelay/3 ) second
  220. // intervals Synchronous discoveries will not be timed out for 3 times that
  221. // interval.
  222. // 2) An API call over a secure channel to a discovered DC will timeout only
  223. // after (45 + ExpectedDialupDelay) seconds.
  224. //
  225. // This parameter should remain zero unless a dialup router exists between this
  226. // machine and its trusted domain.
  227. //
  228. // If this parameter is set too high, legitimate cases where no DC is available in
  229. // a trusted domain will take an extraordinary amount of time to detect.
  230. //
  231. #define DEFAULT_EXPECTEDDIALUPDELAY 0
  232. #define MAX_EXPECTEDDIALUPDELAY (10*60) // 10 minutes
  233. #define MIN_EXPECTEDDIALUPDELAY 0
  234. //
  235. // ScavengeInterval (in seconds)
  236. //
  237. // This parameter adjusts the interval at which netlogon performs the following
  238. // scavenging operations:
  239. //
  240. // * Checks to see if a password on a secure channel needs to be changed.
  241. //
  242. // * Checks to see if a secure channel has been idle for a long time.
  243. //
  244. // * On DCs, sends a mailslot message to each trusted domain for a DC hasn't been
  245. // discovered.
  246. //
  247. // * On PDC, attempts to add the <DomainName>[1B] netbios name if it hasn't
  248. // already been successfully added.
  249. //
  250. // * On PDC, refreshes forest trust info for all forest trusts if enough time
  251. // has passed since the last refresh. (See FtInfoUpdateInterval)
  252. //
  253. // None of these operations are critical. 15 minutes is optimal in all but extreme
  254. // cases. For instance, if a DC is separated from a trusted domain by an
  255. // expensive (e.g., ISDN) line, this parameter might be adjusted upward to avoid
  256. // frequent automatic discovery of DCs in a trusted domain.
  257. //
  258. #define DEFAULT_SCAVENGEINTERVAL (15*60) // 15 minutes
  259. #define MAX_SCAVENGEINTERVAL (48*60*60) // 2 days
  260. #define MIN_SCAVENGEINTERVAL 60 // 1 minute
  261. //
  262. // LdapSrvPriority
  263. //
  264. // This parameter specifies the "priority" of this DC. A client trying to
  265. // discover a DC in this domain MUST attempt to contact the target DC with the
  266. // lowest-numbered priority. DCs with the same priority SHOULD be tried in
  267. // pseudorandom order.
  268. //
  269. // This value is published on all LDAP SRV records written by the Netlogon service.
  270. //
  271. #define DEFAULT_LDAPSRVPRIORITY 0
  272. #define MAX_LDAPSRVPRIORITY 65535
  273. #define MIN_LDAPSRVPRIORITY 0
  274. //
  275. // LdapSrvWeight
  276. //
  277. // This parameter specifies the "Weight" of this DC. When selecting a DC among
  278. // those that have the same priority, the chance of trying this one first SHOULD
  279. // be proportional to its weight. By convention, a weight of 100 should be used
  280. // if all DCs have the same weight.
  281. //
  282. // This value is published on all LDAP SRV records written by the Netlogon service.
  283. //
  284. #define DEFAULT_LDAPSRVWEIGHT 100
  285. #define MAX_LDAPSRVWEIGHT 65535
  286. #define MIN_LDAPSRVWEIGHT 0
  287. //
  288. // LdapSrvPort
  289. //
  290. // This parameter specifies the TCP and UDP port number the LDAP server listens on.
  291. //
  292. // This value is published on all LDAP SRV records written by the Netlogon service.
  293. //
  294. #define DEFAULT_LDAPSRVPORT 389
  295. #define MAX_LDAPSRVPORT 65535
  296. #define MIN_LDAPSRVPORT 0
  297. //
  298. // LdapGcSrvPort
  299. //
  300. // This parameter specifies the TCP and UDP port number the LDAP server listens
  301. // on for Global Catalog queries.
  302. //
  303. // This value is published on all LDAP SRV records written by the Netlogon service.
  304. //
  305. #define DEFAULT_LDAPGCSRVPORT 3268
  306. #define MAX_LDAPGCSRVPORT 65535
  307. #define MIN_LDAPGCSRVPORT 0
  308. //
  309. // KdcSrvPort
  310. //
  311. // This parameter specifies the TCP port number the KDC server listens on.
  312. //
  313. // This value is published on all KDC SRV records written by the Netlogon service.
  314. //
  315. #define DEFAULT_KDCSRVPORT 88
  316. #define MAX_KDCSRVPORT 65535
  317. #define MIN_KDCSRVPORT 0
  318. //
  319. // KerbIsDoneWithJoinDomainEntry (dword) [NOTE: This parameter is NOT read from the GP section]
  320. //
  321. // This is a private registry between joindomain, kerberos and netlogon.
  322. // IF set to 1, it specifies that Kerberos is done reading the join domain
  323. // entry dumped by join domain and netlogon should delete it.
  324. //
  325. // Defaults to 0
  326. #define DEFAULT_KERBISDDONEWITHJOIN 0
  327. #define MAX_KERBISDDONEWITHJOIN 1
  328. #define MIN_KERBISDDONEWITHJOIN 0
  329. //
  330. // DnsTtl (in seconds)
  331. //
  332. // This parameter specifies the "Time To Live" for all DNS records registered
  333. // by Netlogon. The "Time To Live" specifies the amount of time a client
  334. // can safely cache the DNS record.
  335. //
  336. // A value of zero indicates that the record will not be cached on the client.
  337. //
  338. // One should not pick a value that is too large. Consider a client that gets
  339. // the DNS records for the DCs in a domain. If a particular DC is down at the
  340. // time of the query, the client will not become aware of that DC even if all
  341. // the other DCs become unavailable.
  342. //
  343. #define DEFAULT_DNSTTL (10 * 60) // 10 minutes
  344. #define MAX_DNSTTL 0x7FFFFFFF
  345. #define MIN_DNSTTL 0
  346. //
  347. // DnsRefreshInterval (in seconds)
  348. //
  349. // This parameter specifies how frequently Netlogon will re-register DNS
  350. // names that have already been registered.
  351. //
  352. // DNS is a distributed service. There are certain failure conditions where a
  353. // dynamically registered name gets lost.
  354. //
  355. // The actual refresh interval starts at 5 minutes then doubles until it
  356. // reaches DnsRefreshInterval.
  357. //
  358. #define DEFAULT_DNSREFRESHINTERVAL (24 * 60 * 60) // 24 hours
  359. #define MAX_DNSREFRESHINTERVAL (0xFFFFFFFF / 1000) // 49 days
  360. #define MIN_DNSREFRESHINTERVAL (5 * 60) // 5 minutes
  361. //
  362. // DnsFailedDeregisterTimeout (in seconds)
  363. //
  364. // Netlogon tries to deregister DNS records which were registered in the past
  365. // but are no longer needed. If a failure occurs to deregister, Netlogon will
  366. // retry to deregister at the scavenging time. This parameter specifies the
  367. // timeout when Netlogon should give up deregistering a particular DNS record
  368. // after a consecutive series of failed deregistrations on a given service start.
  369. //
  370. #define DEFAULT_DNSFAILEDDEREGTIMEOUT (48 * 60 * 60) // 48 hours.
  371. #define MAX_DNSFAILEDDEREGTIMEOUT 0xFFFFFFFF // Infinite (never give up).
  372. // Any period larger than
  373. // 0xFFFFFFFF/1000 sec = 49 days
  374. // will be treated as infinity.
  375. #define MIN_DNSFAILEDDEREGTIMEOUT 0 // Give up after the first failure
  376. //
  377. // MaximumPasswordAge (in days)
  378. //
  379. // This parameter gives the maximum amount of time that can pass
  380. // before a machine account's password must be changed on the PDC.
  381. //
  382. #define DEFAULT_MAXIMUMPASSWORDAGE (30) // 30 days
  383. #define MIN_MAXIMUMPASSWORDAGE (1) // 1 day
  384. #define MAX_MAXIMUMPASSWORDAGE (1000000) // 1,000,000 days
  385. //
  386. // SiteName
  387. //
  388. // This parameter specifies the name of the site this machine is in. This
  389. // value overrides any dynamically determined value.
  390. //
  391. // This parameter is only used on Member Workstations and Member Servers.
  392. //
  393. //
  394. // DynamicSiteName [NOTE: This parameter is NOT read from the GP section]
  395. //
  396. // This parameter specifies the name of the site this machine is in. This
  397. // value is dynamically determined and should not be changed.
  398. //
  399. // This parameter is only used on Member Workstations and Member Servers.
  400. //
  401. //
  402. // SiteCoverage
  403. //
  404. // A multivalued property listing the sites that this DC registers itself for.
  405. // This DC considers itself 'close' to the sites listed.
  406. //
  407. // This list is in addition to:
  408. // the site this DC is actually in.
  409. // the list of sites determined as described by the AutoSiteCoverage parameter.
  410. //
  411. //
  412. // GcSiteCoverage
  413. //
  414. // A multivalued property listing the sites that this DC registers itself for in
  415. // its role as a GC
  416. // This DC considers itself 'close' to the sites listed.
  417. //
  418. // This list is in addition to:
  419. // the site this DC is actually in.
  420. //
  421. //
  422. // NdncSiteCoverage
  423. //
  424. // A multivalued property listing the sites that this LDAP server registers itself for in
  425. // its role as a non-domain NC (NDNC)
  426. // This LDAP server considers itself 'close' to the sites listed.
  427. //
  428. // This list is in addition to:
  429. // the site this LDAP server is actually in.
  430. //
  431. // To specify for which NDNC a given site is covered, the site name should contain
  432. // backslash so that the name preceding the backslash is the NDNC name and the name
  433. // following the backslash is the name of the site that is covered for the given NDNC.
  434. // For example:
  435. //
  436. // Ndnc1\Site1A
  437. // Ndnc1\Site1B
  438. // Ndnc2\Site2A
  439. // Ndnc2\Site2B
  440. //
  441. // In this example this LDAP server will cover Site1A and Site1B for clients from NDNC
  442. // Ndnc1. Similarly, it will cover Site2A and Site2B for clients from NDNC Ndnc2.
  443. // If the backslash is absent, it will be assumed that the given site is covered
  444. // for all NDNCs this LDAP server services.
  445. //
  446. //
  447. // AutoSiteCoverage (Boolean)
  448. //
  449. // Specifies whether the site coverage for this DC should be automatically
  450. // determined
  451. //
  452. // If TRUE, the sites this DC covers is determined by the following algorithm.
  453. // For each site that has no DCs for this domain (the target site), the site
  454. // this DC // is in might be chosen to "cover" the site. The following
  455. // criteria is used:
  456. //
  457. // * Smaller site link cost.
  458. // * For sites where the above is equal, the site having the most DCs is chosen.
  459. // * For sites where the above is equal, the site having the alphabetically least
  460. // name is chosen.
  461. //
  462. // If the site this DC is in is chosen to "cover" the target site, then this DC
  463. // will cover the target site. The above algorithm is repeated for each target site.
  464. //
  465. // The computed list augments the list of covered sites specified by the
  466. // SiteCoverage parameter.
  467. //
  468. // Defaults to TRUE.
  469. //
  470. //
  471. // SiteCoverageRefreshInterval (in seconds)
  472. //
  473. // Specifies how often a DC will refresh its site coverage by reading the info from
  474. // the DS. This value is ignored if automatic site coverage is turned off (i.e. when
  475. // AutoSiteCoverage is set to FALSE). If site coverage changes, the DC will update
  476. // its DNS records acordingly.
  477. //
  478. // Upon registry change, the first site coverage refresh will happen within the
  479. // interval specified.
  480. //
  481. #define DEFAULT_SITECOVERAGEREFRESHINTERVAL (60 * 60) // 1 hour
  482. #define MAX_SITECOVERAGEREFRESHINTERVAL (0xFFFFFFFF / 1000) // 49 days
  483. #define MIN_SITECOVERAGEREFRESHINTERVAL (5 * 60) // 5 minutes
  484. //
  485. // AllowReplInNonMixed
  486. //
  487. // This boolean allows an NT 4.0 (or 3.x) BDC to replicate from this NT 5.0 PDC
  488. // even though this DC is in NonMixed mode.
  489. //
  490. // Upon RegistryChangeNotify, changes to this value are ignored.
  491. #define DEFAULT_ALLOWREPLINNONMIXED 0
  492. //
  493. // SignSecureChannel (Boolean)
  494. //
  495. // Specifies that all outgoing secure channel traffic should be signed.
  496. //
  497. // Defaults to TRUE. If SealSecureChannel is also TRUE, Seal overrides.
  498. //
  499. // Upon RegistryChangeNotify, changes to this value on affect secure channels that
  500. // are setup after the notification is received.
  501. //
  502. // SealSecureChannel (Boolean)
  503. //
  504. // Specifies that all outgoing secure channel traffic should be sealed (encrypted)
  505. //
  506. // Defaults to TRUE.
  507. //
  508. // Upon RegistryChangeNotify, changes to this value on affect secure channels that
  509. // are setup after the notification is received.
  510. //
  511. // RequireSignOrSeal (Boolean)
  512. //
  513. // Requires that all outgoing secure channel traffic should be signed or sealed.
  514. // Without this flag, the ability is negotiated with the DC.
  515. //
  516. // This flag should only be set if ALL of the DCs in ALL trusted domains support
  517. // signing and sealing.
  518. //
  519. // The SignSecureChannel and SealSecureChannel parameters are used to determine
  520. // whether signing or sealing are actually done. It this parameter is true,
  521. // SignSecureChannel is implied to be TRUE.
  522. //
  523. // Defaults to FALSE.
  524. //
  525. // Upon RegistryChangeNotify, changes to this value on affect secure channels that
  526. // are setup after the notification is received.
  527. //
  528. // RequireStrongKey (Boolean)
  529. //
  530. // Requires that all outgoing secure channel traffic should require a strong key.
  531. // Without this flag, the key strength is negotiate with the DC.
  532. //
  533. // This flag should only be set if ALL of the DCs in ALL trusted domains support
  534. // strong keys.
  535. //
  536. // Defaults to FALSE.
  537. //
  538. // Upon RegistryChangeNotify, changes to this value on affect secure channels that
  539. // are setup after the notification is received.
  540. //
  541. // CloseSiteTimeout (in seconds):
  542. //
  543. // If a client cannot find a DC in a site that is close to it, Netlogon will
  544. // periodically try to find a close DC. It will try to find a close DC when:
  545. //
  546. // * An interactive logon uses pass through authentication on the secure channel.
  547. // * CloseSiteTimeout has elapsed since the last attempt, and any other attempt
  548. // is made to use the secure channel (e.g., pass through authentication of
  549. // network logons)
  550. //
  551. // That means that Netlogon only attempts to find a close DC "on demand".
  552. //
  553. // If this number is too large, a client will never try to find a close DC if
  554. // one is not available on boot.
  555. //
  556. // If this number is too small, secure channel traffic will be un-necessarily
  557. // be slowed down by discovery attempts.
  558. //
  559. #define DEFAULT_CLOSESITETIMEOUT (15*60) // 15 minutes
  560. #define MAX_CLOSESITETIMEOUT (0xFFFFFFFF/1000) // 49 days
  561. #define MIN_CLOSESITETIMEOUT (1*60) // 1 minute
  562. //
  563. // SiteNameTimeout (in seconds):
  564. //
  565. // If the age of the site name is more than SiteNameTimeout on the client,
  566. // the client will attempt to synchronize the site name with the server.
  567. // This will be done only when the site name needs to be returned, i.e. on
  568. // demand.
  569. //
  570. #define DEFAULT_SITENAMETIMEOUT (5*60) // 5 minutes
  571. #define MAX_SITENAMETIMEOUT (0xFFFFFFFF/1000) // 49 days
  572. #define MIN_SITENAMETIMEOUT (0) // 0 minutes
  573. //
  574. // Sundry flags
  575. //
  576. #define DEFAULT_DISABLE_PASSWORD_CHANGE 0
  577. #define DEFAULT_REFUSE_PASSWORD_CHANGE 0
  578. #define DEFAULT_SYSVOL L"SYSVOL\\SYSVOL"
  579. #define DEFAULT_SCRIPTS L"\\SCRIPTS"
  580. //
  581. // DuplicateEventlogTimeout (in seconds):
  582. //
  583. // The Netlogon service keeps track of eventlog messages it has logged in the
  584. // past. Any duplicate eventlog message logged within DuplicateEventlogMessage
  585. // seconds will not be logged.
  586. //
  587. // Set this value to zero to have all messages be logged.
  588. //
  589. #define DEFAULT_DUPLICATEEVENTLOGTIMEOUT (4*60*60) // 4 hours
  590. #define MAX_DUPLICATEEVENTLOGTIMEOUT (0xFFFFFFFF/1000) // 49 days
  591. #define MIN_DUPLICATEEVENTLOGTIMEOUT (0) // 0 seconds
  592. //
  593. // SysVolReady (Boolean)
  594. //
  595. // This is a private registry entry that indicates whether the SYSVOL share is
  596. // ready to be shared. It is set by DcPromo, Backup, and FRS at appropriate times
  597. // to inidcate the replication state of the SYSVOL share.
  598. //
  599. // This boolean is only used on a DC.
  600. //
  601. // If 0, the SYSVOL share will not be shared and this DC will not indicate it is
  602. // a DC to DsGetDcName calls.
  603. //
  604. // If non-zero, the SYSVOL share will be shared.
  605. //
  606. //
  607. // UseDynamicDns (Boolean)
  608. //
  609. // Specifies that a DC is to dynamically register DNS names in DNS using
  610. // dynamic DNS. If FALSE, Dynamic DNS is avoided and the records specified
  611. // in %windir%\system32\config\netlogon.dns should be manually registered in DNS.
  612. //
  613. // Defaults to TRUE
  614. //
  615. // RegisterDnsARecords (Boolean)
  616. //
  617. // Specifies that the DC is to register DNS A records for the domain.
  618. // If the DC is a GC, specifies that the DC is to register DNS A records for
  619. // the GC.
  620. //
  621. // If FALSE, the records will not be registered and older LDAP implementations
  622. // (ones that do not support SRV records) will not be able to locate the LDAP
  623. // server on this DC.
  624. //
  625. // Defaults to TRUE
  626. //
  627. // AvoidPdcOnWan (Boolean)
  628. //
  629. // This parameter specifies if BDC should send any validation/synchronization
  630. // requests to PDC. The validation against PDC is normally performed if the
  631. // user does not validate on BDC. This validation will be avoided if AvoidPdcOnWan
  632. // is set to TRUE and PDC and BDC are on different sites. Likewise, if this key is
  633. // set to TRUE and a BDC and the PDC are in different sites, then the new password
  634. // info being updated on a BDC will not be immediately propagated to the PDC. (The
  635. // new password will be replicated on the PDC by DS replication, not by Netlogon.)
  636. //
  637. // Defaults to FALSE.
  638. //
  639. // MaxConcurrentApi (Number of calls)
  640. //
  641. // This parameter specifies the maximum number of concurrent API calls that can
  642. // be active over the secure channel at any one time.
  643. //
  644. // Increasing this parameter may improve throughput on the secure channel.
  645. //
  646. // This parameter currently only affect Logon APIs. They may affect other secure
  647. // channel operations in the future.
  648. //
  649. // Concurrent API calls are only possible if the secure channel is signed or sealed.
  650. //
  651. // If this parameter is set too large, this machine will place an excessive load
  652. // on the DC the secure channel is to.
  653. //
  654. // The default value is 0. Zero will use 1 concurrent API call on member workstations
  655. // and DCs. Zero implies 2 concurrent API calls on member servers
  656. //
  657. //
  658. #define DEFAULT_MAXCONCURRENTAPI 0
  659. #define MAX_MAXCONCURRENTAPI 10
  660. #define MIN_MAXCONCURRENTAPI 0
  661. //
  662. // AvoidDnsDeregOnShutdown (Boolean)
  663. //
  664. // This parameter specifies if DNS record deregistration should be avoided on shutting
  665. // down netlogon. If set to FALSE, it can be used to force such deregistrations for
  666. // debugging or some other purposes. However, setting this value to FALSE may brake the
  667. // DS replication, as the following example shows. Suppose we have two DS intergrated
  668. // DNS servers, A and B which are authoritative for a particular zone and use each other
  669. // as secondary DNS servers for that zone. Suppose Netlogon shuts down on B and deregisters
  670. // its records. That gets propagated to A. Then netlogon is started on B and the records
  671. // are re-registered on B. Now A needs to do its pull ssync from B. To do that, the DS uses
  672. // B's DsaGuid record (of the form <DsaGuid>._msdcs.<DnsForestName>). But the record is
  673. // missing on A and A is authoritative for that zone, so A is not going to find B and cannot
  674. // pull from B.
  675. //
  676. // Defaults to TRUE.
  677. //
  678. // DnsUpdateOnAllAdapters (Boolean)
  679. //
  680. // This parameter specifies whether DNS updates should be sent over all available
  681. // adapters including those where dynamic DNS updates are normally disabled.
  682. // DHCP initiated A record updates are not sent through such adapters.
  683. // An adapter that is connected to external network (e.g. Internet) is normally
  684. // marked as such through the UI.
  685. // However, there may be a need to update Netlogon SRV records through such adapters,
  686. // hence the need for this parameter. Note that not only SRV records, but Netlogon's
  687. // A records as well will be updated through all adapters if this parameter is TRUE,
  688. // but it should not cause any significantly undesired behavior since Netlogon's A
  689. // records are rarely used.
  690. //
  691. // Defaults to FALSE.
  692. //
  693. // DnsAvoidRegisterRecords
  694. //
  695. // A multivalued property listing the mnemonics for names of DNS records which
  696. // this DC should not register. The mnemonics uses the convention for descriptive
  697. // names of records used in the table of all records for this server (see
  698. // NlDcDnsNameTypeDesc[] in nlcommon.h). The descriptive name of each record is
  699. // prefixed by "NlDns". For example, "NlDnsLdapIpAddress", "NlDnsLdapAtSite", etc.
  700. // To avoid registering one of the records, one should use the suffix following
  701. // "NlDns" in the descriptive name of that record. For instance, to skip registering
  702. // the NlDnsLdapIpAddress record, one should enter "LdapIpAddress" as one of the
  703. // values for this maltivalued property.
  704. //
  705. // This is the most flexible way of avoiding DNS registrations for particular
  706. // records. It superceeds all other ways which enable DNS registrations through
  707. // the registry. For instance, if RegisterDnsARecords is expicitly set to 1
  708. // while the A record mnemonic is listed for DnsAvoidRegisterRecords, no A record
  709. // will be registered.
  710. //
  711. //
  712. // NegativeCachePeriod (in seconds):
  713. //
  714. // Specifies the amount of time that DsGetDcName will remember that a DC couldn't
  715. // be found in a domain. If a subsequent attempt is made within this time,
  716. // the DsGetDcName call will immediately fail without attempting to find a DC again.
  717. //
  718. // If this number is too large, a client will never try to find a DC again if the
  719. // DC is initially unavailable
  720. //
  721. // If this number is too small, every call to DsGetDcName will have to attempt
  722. // to find a DC even when none is available.
  723. //
  724. #define DEFAULT_NEGATIVECACHEPERIOD 45 // 45 seconds
  725. #define MIN_NEGATIVECACHEPERIOD 0 // No minimum
  726. #define MAX_NEGATIVECACHEPERIOD (7*24*60*60) // 7 days
  727. //
  728. // BackgroundRetryInitialPeriod (in seconds):
  729. //
  730. // Some applications periodically try to find a DC. If the DC isn't available, these
  731. // periodic retries can be costly in dial-on-demand scenarios. This registry value
  732. // defines the minimum amount of elapsed time before the first retry will occur.
  733. //
  734. // The value only affects callers of DsGetDcName that have specified the
  735. // DS_BACKGROUND_ONLY flag.
  736. //
  737. // If a value smaller than NegativeCachePeriod is specified, NegativeCachePeriod will
  738. // be used.
  739. //
  740. // If this number is too large, a client will never try to find a DC again if the
  741. // DC is initially unavailable
  742. //
  743. // If this number is too small, periodic DC discovery traffic may be excessive in
  744. // cases where the DC will never become available.
  745. //
  746. #define DEFAULT_BACKGROUNDRETRYINITIALPERIOD (10*60) // 10 minutes
  747. #define MIN_BACKGROUNDRETRYINITIALPERIOD 0 // NegativeCachePeriod
  748. #define MAX_BACKGROUNDRETRYINITIALPERIOD (0xFFFFFFFF/1000) // 49 days
  749. //
  750. // BackgroundRetryMaximumPeriod (in seconds):
  751. //
  752. // Some applications periodically try to find a DC. If the DC isn't available, these
  753. // periodic retries can be costly in dial-on-demand scenarios. This registry value
  754. // defines the maximum interval the retries will be backed off to. That is, if
  755. // the first retry is after 10 minutes, the second will be after 20 minutes, then after 40.
  756. // This continues until the retry interval is BackgroundRetryMaximumPeriod. That interval
  757. // will continue until BackgroundRetryQuitTime is reached.
  758. //
  759. // The value only affects callers of DsGetDcName that have specified the
  760. // DS_BACKGROUND_ONLY flag.
  761. //
  762. // If a value smaller that BackgroundRetryInitialPeriod is specified,
  763. // BackgroundRetryInitialPeriod will be used.
  764. //
  765. // If this number is too large, a client will try very infrequently after
  766. // sufficient consecutive failures resulting in a backoff to BackgroundRetryMaximumPeriod.
  767. //
  768. // If this number is too small, periodic DC discovery traffic may be excessive in
  769. // cases where the DC will never become available.
  770. //
  771. #define DEFAULT_BACKGROUNDRETRYMAXIMUMPERIOD (60*60) // 60 minutes
  772. #define MIN_BACKGROUNDRETRYMAXIMUMPERIOD 0 // BackgroundRetryInitialPeriod
  773. #define MAX_BACKGROUNDRETRYMAXIMUMPERIOD (0xFFFFFFFF/1000) // 49 days
  774. //
  775. // BackgroundRetryQuitTime (in seconds):
  776. //
  777. // Some applications periodically try to find a DC. If the DC isn't available, these
  778. // periodic retries can be costly in dial-on-demand scenarios. This registry value
  779. // defines the maximum interval the retries will be backed off to. That is, if
  780. // the first retry is after 10 minutes, the second will be after 20 minutes, then after 40.
  781. // This continues until the retry interval is BackgroundRetryMaximumPeriod. That interval
  782. // will continue until BackgroundRetryQuitTime is reached.
  783. //
  784. // The value only affects callers of DsGetDcName that have specified the
  785. // DS_BACKGROUND_ONLY flag.
  786. //
  787. // If a value smaller that BackgroundRetryMaximumPeriod is specified,
  788. // BackgroundRetryMaximumPeriod will be used.
  789. //
  790. // 0 means to never quit retrying.
  791. //
  792. // If this number is too small, a client will eventually stop trying to find a DC
  793. //
  794. #define DEFAULT_BACKGROUNDRETRYQUITTIME 0 // Infinite
  795. #define MIN_BACKGROUNDRETRYQUITTIME 0 // BackgroundRetryMaximumPeriod
  796. #define MAX_BACKGROUNDRETRYQUITTIME (0xFFFFFFFF/1000) // 49 days
  797. //
  798. // BackgroundSuccessfulRefreshPeriod (in seconds):
  799. //
  800. // When a positive cache entry is old (older than the successful refresh interval),
  801. // the DC discovery routine will ping the cached DC to refresh its info before
  802. // returning that DC to the caller. Here we distiguish between background
  803. // callers which periodically perform DC discovery and the rest of the callers
  804. // because they have different characteristics. Namely, for background callers
  805. // which call the DC locator frequently, the cache refresh shouldn't happen
  806. // frequently to avoid extensive network overhead and load on DCs. In fact,
  807. // the default for background callers is to never refresh the info. If the cached
  808. // DC no longer plays the same role, a background caller will detect this change
  809. // when it performs its operation on that DC in which case it will call us back
  810. // with forced rediscovery bit set.
  811. //
  812. #define DEFAULT_BACKGROUNDREFRESHPERIOD 0xFFFFFFFF // Infinite - never refresh
  813. #define MIN_BACKGROUNDREFRESHPERIOD 0 // Always refresh
  814. #define MAX_BACKGROUNDREFRESHPERIOD 0xFFFFFFFF // Infinite. Any period larger than
  815. // 0xFFFFFFFF/1000 sec = 49 days
  816. // will be treated as infinity
  817. //
  818. // NonBackgroundSuccessfulRefreshPeriod (in seconds):
  819. //
  820. // See the description of BackgroundSuccessfulRefreshPeriod
  821. //
  822. #define DEFAULT_NONBACKGROUNDREFRESHPERIOD 1800 // 30 minutes
  823. #define MIN_NONBACKGROUNDREFRESHPERIOD 0 // Always refresh
  824. #define MAX_NONBACKGROUNDREFRESHPERIOD 0xFFFFFFFF // Infinite. Any period larger than
  825. // 0xFFFFFFFF/1000 sec = 49 days
  826. // will be treated as infinity
  827. //
  828. // MaxLdapServersPinged (DWORD)
  829. //
  830. // This parameter specifies the maximum number of DCs that should be
  831. // pinged using LDAP during a DC discovery attempt. If this value is
  832. // too large, a greater network traffic may be imposed and the DC discovery
  833. // may take longer to return. If this number is too small, it may decrease
  834. // chances for successful DC discovery if none of the pinged DCs responds
  835. // in a timely manner.
  836. //
  837. // The default value of 55 has been chosen so that the discovery attempt
  838. // takes roughly 15 seconds max. We make up to 2 loops through DC addresses
  839. // pinging each address on the list with the following distribution for
  840. // response wait time:
  841. //
  842. // For the first 5 DCs the wait time is 0.4 seconds per ping
  843. // For the next 5 DCs the wait time is 0.2 seconds per ping
  844. // For the rest of 45 DCs the wait time is 0.1 seconds per ping
  845. //
  846. // This will take (5*0.4 + 5*0.2 + 45*0.1) = 7.5 seconds per loop assuming
  847. // that each DC has just one IP address. It will take longer if some DCs have
  848. // more than one IP address.
  849. //
  850. // The rational behind this distribution is that we want to reduce the network
  851. // traffic and reduce chances for network flooding (that is harmful for DCs)
  852. // in case all DCs are slow to respond due to high load. Thus, the first 10 DCs
  853. // have higher chances to be discovered before we impose greater network traffic
  854. // by pinging the rest of DCs. If the first 10 DCs happen to be slow we have to
  855. // reduce the wait timeout to a minimum as we want to cover a reasonable number
  856. // of DCs in the time left.
  857. //
  858. #define DEFAULT_MAXLDAPSERVERSPINGED 55
  859. #define MIN_MAXLDAPSERVERSPINGED 1
  860. #define MAX_MAXLDAPSERVERSPINGED 0xFFFFFFFF
  861. //
  862. // AllowSingleLabelDnsDomain (Boolean)
  863. //
  864. // By default, the DC locator will not attempt DNS specific discovery for single
  865. // labeled domain names. This is done to avoid spurious DNS queries since DNS
  866. // domain names are usually multi labeled. However, this parameter may be used to
  867. // allow DNS specific discoveries for single labeled domain names which may exist
  868. // in a specific customer deployment.
  869. //
  870. // Defaults to FALSE.
  871. //
  872. //
  873. // Nt4Emulator (Boolean)
  874. //
  875. // This parameter specifies whether this DC should emulate the behavior of an NT4.0 DC.
  876. // Emulation of the NT4.0 behavior is desirable when the first Windows 2000 or newer
  877. // DC is promoted to the PDC in an NT4.0 domain with a huge number of alredy existing
  878. // Windows 2000 clients. Unless we emulate the NT4.0 behavior, all the Windows 2000
  879. // clients will stick with the Windows 2000 or newer DC upon learning about the domain
  880. // upgrade thereby potentially overloading the DC.
  881. //
  882. // This parameter is ignored on non-DC. If this parameter is set to TRUE, the following
  883. // takes place on a DC:
  884. //
  885. // * Incoming LDAP locator pings are ignored unless the ping comes
  886. // from an admin machine (see NeutralizeNt4Emulator description below).
  887. //
  888. // * The flags negotiated during the incoming secure channel setup
  889. // will be set to at most what an NT4.0 DC would support unless
  890. // the channel setup comes form an admind machine (see NeutralizeNt4Emulator
  891. // description below).
  892. //
  893. // Defaults to FALSE.
  894. //
  895. //
  896. // NeutralizeNt4Emulator (Boolean)
  897. //
  898. // This parameter specifies whether this machine should indicate in the relevant
  899. // communication with a DC that the DC should avoid the NT4.0 emulation mode (see
  900. // Nt4Emulator description above). If this parameter is TRUE, the machine is said
  901. // to be an admin machine.
  902. //
  903. // Defaults to FALSE on a non-DC. Defaults to TRUE on a DC.
  904. //
  905. //
  906. // DcTcpipPort (DWORD)
  907. //
  908. // This parameter specifies the port number that the netlogon server on the DC
  909. // should register with the RPC endpoint mapper for the TCPIP protocol sequence.
  910. // If this value doesn't exist, netlogon will not specify the port number in
  911. // which case the port will be chosen dynamically by the end point mapper at the
  912. // time a client makes an RPC call to netlogon on the DC.
  913. //
  914. // Note that netlogon registers the port number only on service start up, so registry
  915. // change notifications are ignored for this parameter. Also note that this parameter
  916. // is not stored in the NlGlobalParameters structure. Rather, it is read from the
  917. // registry once at the netlogon service start.
  918. //
  919. // By default, this parameter does not exist. It is ignored on non-DCs.
  920. //
  921. //
  922. // AllowExclusiveSysvolShareAccess
  923. //
  924. // This parameter specifies whether the exclusive access to the Sysvol share
  925. // is allowed. If the exclusive access is allowed, an app with only read
  926. // permission to files on the sysvol share can lock the files by requesting
  927. // exclusive read access, which might prevent Group Policy settings from being
  928. // updated on other clients in the domain. When the exclsuve access needs to
  929. // be allowed because some critical app relies on it, domain administrators
  930. // should ensure that the only applications using the exclusive read capability
  931. // in the domain are those approved by the administrator.
  932. //
  933. // Defaults to FALSE.
  934. //
  935. //
  936. // AllowExclusiveScriptsShareAccess
  937. //
  938. // This parameter specifies whether the exclusive access to the Scripts share
  939. // is allowed. If the exclusive access is allowed, an app with only read
  940. // permission to files on the NETLOGON share can lock the files by requesting
  941. // exclusive read access, which might prevent client machines or users in the
  942. // domain from conforming to administrator specified settings and actions such
  943. // as logon scripts. When the exclsuve access needs to be allowed because some
  944. // critical app relies on it, domain administrators should ensure that the only
  945. // applications using the exclusive read capability in the domain are those
  946. // approved by the administrator.
  947. //
  948. // Defaults to FALSE.
  949. //
  950. //
  951. // FtInfoUpdateInterval (in seconds)
  952. //
  953. // This parameter defines how often forest trust info is to be refreshed on PDC.
  954. // If forest trust info on PDC is older than this time interval, the forest trust
  955. // info will be refreshed at the next scavenging. See ScavengeInterval that defines
  956. // how often scavenging is performed.
  957. //
  958. #define DEFAULT_FTINFO_UPDATE_INTERVAL (24*3600) // 1 day
  959. #define MIN_FTINFO_UPDATE_INTERVAL (3600) // 1 hour
  960. #define MAX_FTINFO_UPDATE_INTERVAL 0xFFFFFFFF // Infinite. Any period larger than
  961. // 0xFFFFFFFF/1000 sec = 49 days
  962. // will be treated as infinity
  963. //
  964. // AvoidLocatorAccountLookup (Boolean)
  965. //
  966. // This parameter specifies whether this DC should perform account lookups
  967. // during DC discovery response processing for queries with account. Excessive
  968. // account lookups may be expensive and can affect the DC performance. Also,
  969. // malicious user can take advantage of this and cause a DoS attack by bombing
  970. // the DC with discoveries with account. In any case, if the performance is
  971. // determined to be affected, account lookups can be avoided by temporarily
  972. // setting this parameter to 1 on the DC in which case the DC will respond to
  973. // the discovery even if the specified account does not exist on the DC. While
  974. // this setting is chosen, clients which legitimately require DC with a particular
  975. // account may get denied service on this DC. After the problem is rectified, the
  976. // setting should be reverted to the default.
  977. //
  978. // Defaults to FALSE
  979. //
  980. //
  981. // Structure to hold all of the parameters.
  982. //
  983. typedef struct _NETLOGON_PARAMETERS {
  984. ULONG DbFlag;
  985. ULONG LogFileMaxSize;
  986. ULONG Pulse;
  987. ULONG PulseMaximum;
  988. ULONG PulseConcurrency;
  989. ULONG PulseTimeout1;
  990. ULONG PulseTimeout2;
  991. BOOL DisablePasswordChange;
  992. BOOL RefusePasswordChange;
  993. ULONG Randomize;
  994. ULONG MaximumMailslotMessages;
  995. ULONG MailslotMessageTimeout;
  996. ULONG MailslotDuplicateTimeout;
  997. ULONG ExpectedDialupDelay;
  998. ULONG ScavengeInterval;
  999. ULONG LdapSrvPriority;
  1000. ULONG LdapSrvWeight;
  1001. ULONG LdapSrvPort;
  1002. ULONG LdapGcSrvPort;
  1003. ULONG KdcSrvPort;
  1004. ULONG DnsTtl;
  1005. ULONG DnsRefreshInterval;
  1006. ULONG CloseSiteTimeout;
  1007. ULONG SiteNameTimeout;
  1008. ULONG DnsFailedDeregisterTimeout;
  1009. ULONG SiteCoverageRefreshInterval;
  1010. ULONG DuplicateEventlogTimeout;
  1011. ULONG KerbIsDoneWithJoinDomainEntry;
  1012. ULONG MaxConcurrentApi;
  1013. ULONG MaximumPasswordAge;
  1014. ULONG NegativeCachePeriod;
  1015. ULONG BackgroundRetryInitialPeriod;
  1016. ULONG BackgroundRetryMaximumPeriod;
  1017. ULONG BackgroundRetryQuitTime;
  1018. ULONG BackgroundSuccessfulRefreshPeriod;
  1019. ULONG NonBackgroundSuccessfulRefreshPeriod;
  1020. ULONG MaxLdapServersPinged;
  1021. ULONG FtInfoUpdateInterval;
  1022. LPWSTR UnicodeSysvolPath;
  1023. LPWSTR UnicodeScriptPath;
  1024. LPWSTR SiteName;
  1025. BOOL SiteNameConfigured;
  1026. LPWSTR SiteCoverage;
  1027. LPWSTR GcSiteCoverage;
  1028. LPWSTR NdncSiteCoverage;
  1029. BOOL AutoSiteCoverage;
  1030. LPWSTR DnsAvoidRegisterRecords;
  1031. BOOL AvoidSamRepl;
  1032. BOOL AvoidLsaRepl;
  1033. BOOL AllowReplInNonMixed;
  1034. BOOL SignSecureChannel;
  1035. BOOL SealSecureChannel;
  1036. BOOL RequireSignOrSeal;
  1037. BOOL RequireStrongKey;
  1038. BOOL SysVolReady;
  1039. BOOL UseDynamicDns;
  1040. BOOL RegisterBeta2Dns;
  1041. BOOL RegisterDnsARecords;
  1042. BOOL AvoidPdcOnWan;
  1043. BOOL AvoidDnsDeregOnShutdown;
  1044. BOOL DnsUpdateOnAllAdapters;
  1045. BOOL Nt4Emulator;
  1046. BOOL NeutralizeNt4Emulator;
  1047. BOOL AllowSingleLabelDnsDomain;
  1048. BOOL AllowExclusiveSysvolShareAccess;
  1049. BOOL AllowExclusiveScriptsShareAccess;
  1050. BOOL AvoidLocatorAccountLookup;
  1051. //
  1052. // Parameters converted to 100ns units
  1053. //
  1054. LARGE_INTEGER PulseMaximum_100ns;
  1055. LARGE_INTEGER PulseTimeout1_100ns;
  1056. LARGE_INTEGER PulseTimeout2_100ns;
  1057. LARGE_INTEGER MailslotMessageTimeout_100ns;
  1058. LARGE_INTEGER MailslotDuplicateTimeout_100ns;
  1059. LARGE_INTEGER MaximumPasswordAge_100ns;
  1060. LARGE_INTEGER BackgroundRetryQuitTime_100ns;
  1061. //
  1062. // Other computed parameters
  1063. //
  1064. ULONG ShortApiCallPeriod;
  1065. ULONG DnsRefreshIntervalPeriod;
  1066. } NETLOGON_PARAMETERS, *PNETLOGON_PARAMETERS;
  1067. #endif // _INIPARM_