close(i);
}
+ unlink(AFSDIR_SERVER_BOZRXBIND_FILEPATH);
+
execv(argv[0], argv); /* should not return */
_exit(1);
#endif /* AFS_NT40_ENV */
return 0;
}
+/**
+ * Create the rxbind file of this bosserver.
+ *
+ * @param host bind address of this server
+ *
+ * @returns status
+ */
+void
+bozo_CreateRxBindFile(afs_uint32 host)
+{
+ char buffer[16];
+ FILE *fp;
+
+ if (host == htonl(INADDR_ANY)) {
+ host = htonl(0x7f000001);
+ }
+
+ afs_inet_ntoa_r(host, buffer);
+ bozo_Log("Listening on %s:%d\n", buffer, AFSCONF_NANNYPORT);
+ if ((fp = fopen(AFSDIR_SERVER_BOZRXBIND_FILEPATH, "w")) == NULL) {
+ bozo_Log("Unable to open rxbind address file: %s, code=%d\n",
+ AFSDIR_SERVER_BOZRXBIND_FILEPATH, errno);
+ } else {
+ fprintf(fp, "%s\n", buffer);
+ fclose(fp);
+ }
+}
+
/* start a process and monitor it */
#include "AFS_component_version_number.c"
exit(code);
}
+ bozo_CreateRxBindFile(host); /* for local scripts */
+
/* opened the cell databse */
bozo_confdir = tdir;
echo
return 1
fi
- /usr/bin/bos shutdown localhost -wait -localauth
+ if [ "x$BOSSERVER_HOST" = "x" ] ; then
+ if [ -f /usr/afs/local/bosserver.rxbind ] ; then
+ BOSSERVER_HOST=`cat /usr/afs/local/bosserver.rxbind`
+ else
+ BOSSERVER_HOST="localhost"
+ fi
+ fi
+ /usr/bin/bos shutdown $BOSSERVER_HOST -wait -localauth
RETVAL=$?
if [ $RETVAL -ne 0 ] ; then
echo -n $"failed to shutdown OpenAFS"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openafs-server
+ [ $RETVAL -eq 0 ] && rm -f /usr/afs/local/bosserver.rxbind
return $RETVAL
}
pathp = dirPathArray[AFSDIR_SERVER_BOZINIT_FILEPATH_ID];
AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_BOSCONFIG_DIR, AFSDIR_BOZINIT_FILE);
+ pathp = dirPathArray[AFSDIR_SERVER_BOZRXBIND_FILEPATH_ID];
+ AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_BOSCONFIG_DIR, AFSDIR_BOZRXBIND_FILE);
+
pathp = dirPathArray[AFSDIR_SERVER_BOSVR_FILEPATH_ID];
AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_BOSSERVER_DIR, AFSDIR_BOSVR_FILE);
#define AFSDIR_BOZCONFNEW_FILE "BosConfig.new"
#define AFSDIR_BOZINIT_FILE "BozoInit"
#define AFSDIR_BOZLOG_FILE "BosLog"
+#define AFSDIR_BOZRXBIND_FILE "bosserver.rxbind"
#define AFSDIR_BOSVR_FILE "bosserver"
#define AFSDIR_VOLSERLOG_FILE "VolserLog"
#define AFSDIR_AUDIT_FILE "Audit"
AFSDIR_SERVER_BOZCONFNEW_FILEPATH_ID,
AFSDIR_SERVER_BOZINIT_FILEPATH_ID,
AFSDIR_SERVER_BOZLOG_FILEPATH_ID,
+ AFSDIR_SERVER_BOZRXBIND_FILEPATH_ID,
AFSDIR_SERVER_BOSVR_FILEPATH_ID,
AFSDIR_SERVER_SLVGLOCK_FILEPATH_ID,
AFSDIR_SERVER_VOLSERLOG_FILEPATH_ID,
#define AFSDIR_SERVER_BOZCONFNEW_FILEPATH getDirPath(AFSDIR_SERVER_BOZCONFNEW_FILEPATH_ID)
#define AFSDIR_SERVER_BOZINIT_FILEPATH getDirPath(AFSDIR_SERVER_BOZINIT_FILEPATH_ID)
#define AFSDIR_SERVER_BOZLOG_FILEPATH getDirPath(AFSDIR_SERVER_BOZLOG_FILEPATH_ID)
+#define AFSDIR_SERVER_BOZRXBIND_FILEPATH getDirPath(AFSDIR_SERVER_BOZRXBIND_FILEPATH_ID)
#define AFSDIR_SERVER_BOSVR_FILEPATH getDirPath(AFSDIR_SERVER_BOSVR_FILEPATH_ID)
#define AFSDIR_SERVER_SLVGLOCK_FILEPATH getDirPath(AFSDIR_SERVER_SLVGLOCK_FILEPATH_ID)
#define AFSDIR_SERVER_VOLSERLOG_FILEPATH getDirPath(AFSDIR_SERVER_VOLSERLOG_FILEPATH_ID)
#define AFSDIR_BOZCONFNEW_FILE "BosConfig.new"
#define AFSDIR_BOZINIT_FILE "BozoInit"
#define AFSDIR_BOZLOG_FILE "BosLog"
+#define AFSDIR_BOZRXBIND_FILE "bosserver.rxbind"
#define AFSDIR_BOSVR_FILE "bosserver"
#define AFSDIR_VOLSERLOG_FILE "VolserLog"
#define AFSDIR_AUDIT_FILE "Audit"
AFSDIR_SERVER_BOZCONFNEW_FILEPATH_ID,
AFSDIR_SERVER_BOZINIT_FILEPATH_ID,
AFSDIR_SERVER_BOZLOG_FILEPATH_ID,
+ AFSDIR_SERVER_BOZRXBIND_FILEPATH_ID,
AFSDIR_SERVER_BOSVR_FILEPATH_ID,
AFSDIR_SERVER_SLVGLOCK_FILEPATH_ID,
AFSDIR_SERVER_VOLSERLOG_FILEPATH_ID,
#define AFSDIR_SERVER_BOZCONFNEW_FILEPATH getDirPath(AFSDIR_SERVER_BOZCONFNEW_FILEPATH_ID)
#define AFSDIR_SERVER_BOZINIT_FILEPATH getDirPath(AFSDIR_SERVER_BOZINIT_FILEPATH_ID)
#define AFSDIR_SERVER_BOZLOG_FILEPATH getDirPath(AFSDIR_SERVER_BOZLOG_FILEPATH_ID)
+#define AFSDIR_SERVER_BOZRXBIND_FILEPATH getDirPath(AFSDIR_SERVER_BOZRXBIND_FILEPATH_ID)
#define AFSDIR_SERVER_BOSVR_FILEPATH getDirPath(AFSDIR_SERVER_BOSVR_FILEPATH_ID)
#define AFSDIR_SERVER_SLVGLOCK_FILEPATH getDirPath(AFSDIR_SERVER_SLVGLOCK_FILEPATH_ID)
#define AFSDIR_SERVER_VOLSERLOG_FILEPATH getDirPath(AFSDIR_SERVER_VOLSERLOG_FILEPATH_ID)