#define EHOSTUNREACH WSAEHOSTUNREACH
#endif
#define krb5_xfree free
+#define F_OK 0
+#define sleep(A) Sleep(A * 1000);
#endif /* _WIN32 */
#ifndef _WIN32
#include <sys/utsname.h>
+#include <unistd.h>
#define UCHAR unsigned char
struct lk_entry *next;
} LK_ENTRY;
+#define STOP_FILE "/moira/winad/nowinad"
+#define file_exists(file) (access((file), F_OK) == 0)
+
#define LDAP_BERVAL struct berval
#define MAX_SERVER_NAMES 32
LK_ENTRY *member_base = NULL;
LK_ENTRY *sid_base = NULL;
LK_ENTRY **sid_ptr = NULL;
+static char tbl_buf[1024];
char kerberos_ou[] = "OU=kerberos, OU=moira, OU=athena";
char contact_ou[] = "OU=strings, OU=moira, OU=athena";
char user_ou[] = "OU=users, OU=moira, OU=athena";
extern int locate_ldap_server(char *domain, char *server_name[]);
extern int set_password(char *user, char *domain);
+void check_winad(void);
int user_create(int ac, char **av, void *ptr);
int user_change_status(int ac, char **av, void *ptr);
int user_delete(LDAP *ldap_handle, char *dn_path, char *u_name);
before = &argv[4];
after = &argv[4 + beforec];
+ strcpy(tbl_buf, table);
+ strcat(tbl_buf, " (");
+ for (i = 0; i < beforec; i++)
+ {
+ if (i > 0)
+ strcat(tbl_buf, ",");
+ strcat(tbl_buf, before[i]);
+ }
+ strcat(tbl_buf, ")->(");
+ for (i = 0; i < afterc; i++)
+ {
+ if (i > 0)
+ strcat(tbl_buf, ",");
+ strcat(tbl_buf, after[i]);
+ }
+ strcat(tbl_buf, ")");
+ check_winad();
+
memset(ldap_domain, '\0', sizeof(ldap_domain));
if ((fptr = fopen("winad.cfg", "r")) != NULL)
{
return 0;
}
+void check_winad(void)
+{
+ int i;
+
+ for (i = 0; file_exists(STOP_FILE); i++)
+ {
+ if (i > 30)
+ {
+ critical_alert("incremental",
+ "WINAD incremental failed (%s exists): %s",
+ STOP_FILE, tbl_buf);
+ exit(1);
+ }
+ sleep(60);
+ }
+}
+
int moira_disconnect(void)
{