return NT_STATUS_OK;
}
+
+/* Find the sequence number for a domain */
+NTSTATUS rpc_sequence_number(TALLOC_CTX *mem_ctx,
+ struct rpc_pipe_client *samr_pipe,
+ struct policy_handle *samr_policy,
+ const char *domain_name,
+ uint32_t *pseq)
+{
+ union samr_DomainInfo *info = NULL;
+ bool got_seq_num = false;
+ NTSTATUS status;
+
+ /* query domain info */
+ status = rpccli_samr_QueryDomainInfo(samr_pipe,
+ mem_ctx,
+ samr_policy,
+ 8,
+ &info);
+ if (NT_STATUS_IS_OK(status)) {
+ *pseq = info->info8.sequence_num;
+ got_seq_num = true;
+ goto seq_num;
+ }
+
+ /* retry with info-level 2 in case the dc does not support info-level 8
+ * (like all older samba2 and samba3 dc's) - Guenther */
+ status = rpccli_samr_QueryDomainInfo(samr_pipe,
+ mem_ctx,
+ samr_policy,
+ 2,
+ &info);
+ if (NT_STATUS_IS_OK(status)) {
+ *pseq = info->general.sequence_num;
+ got_seq_num = true;
+ }
+
+seq_num:
+ if (got_seq_num) {
+ DEBUG(10,("domain_sequence_number: for domain %s is %u\n",
+ domain_name, (unsigned) *pseq));
+ } else {
+ DEBUG(10,("domain_sequence_number: failed to get sequence "
+ "number (%u) for domain %s\n",
+ (unsigned) *pseq, domain_name ));
+ status = NT_STATUS_OK;
+ }
+
+ return status;
+}
char ***pnames,
uint32_t **pname_types);
+/* Find the sequence number for a domain */
+NTSTATUS rpc_sequence_number(TALLOC_CTX *mem_ctx,
+ struct rpc_pipe_client *samr_pipe,
+ struct policy_handle *samr_policy,
+ const char *domain_name,
+ uint32_t *pseq);
+
#endif /* _WINBINDD_RPC_H_ */