* NSM for Linux.
*/
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include "sm_inter.h"
#include "system.h"
-#include "log.h"
-
-/*
- * Paths and filenames.
- */
-#if defined(NFS_STATEDIR)
-# define DIR_BASE NFS_STATEDIR "/"
-#else
-# define DIR_BASE "/var/lib/nfs/"
-#endif
-#define SM_DIR DIR_BASE "sm"
-#define SM_BAK_DIR DIR_BASE "sm.bak"
-#define SM_STAT_PATH DIR_BASE "state"
+#include "xlog.h"
/*
* Status definitions.
/*
* Function prototypes.
*/
-extern void change_state(void);
-extern void do_regist(u_long, void (*)());
+extern _Bool statd_matchhostname(const char *hostname1, const char *hostname2);
+extern _Bool statd_present_address(const struct sockaddr *sap, char *buf,
+ const size_t buflen);
+__attribute_malloc__
+extern char * statd_canonical_name(const char *hostname);
+
extern void my_svc_run(void);
extern void notify_hosts(void);
extern void shuffle_dirs(void);
+extern int statd_get_socket(void);
extern int process_notify_list(void);
extern int process_reply(FD_SET_TYPE *);
extern char * xstrdup(const char *);
extern void * xmalloc(size_t);
-extern void xunlink (char *, char *, short int);
+extern void load_state(void);
/*
* Host status structure and macros.
#define NOTIFY_TIMEOUT 5 /* For status-change notifications. */
#define SELECT_TIMEOUT 10 /* Max select() timeout when work to do. */
#define MAX_TRIES 5 /* Max number of tries for any host. */
+
+/*
+ * Modes of operation - Lon
+ */
+extern int run_mode;
+#define MODE_NODAEMON 1 /* No-daemon/foreground mode. */
+#define MODE_LOG_STDERR 2 /* in foreground mode, log to stderr */
+#define MODE_NOTIFY_ONLY 4 /* Send SM_NOTIFY to everyone monitored on
+ a single interface/alias */
+/* LH - notify_only mode would be for notifying hosts on an IP alias
+ * that just came back up, for ex, when failing over a HA service to
+ * another host.... */
+#define STATIC_HOSTNAME 8 /* Always use the hostname set by -n */
+#define MODE_NO_NOTIFY 16 /* Don't notify peers of a reboot */