Create a file on bosserver startup called bosserver.rxbind in the
server local directory which contains an address local scripts may
use to contact the bosserver.
When bosserver is started with the -rxbind option, write the address
selected from the intersection of the interfaces, NetInfo, and
NetRestrict configuration to the bosserver.rxbind file, otherwise
write the loopback address 127.0.0.1.
Update the RedHat init script to use the new bosserver.rxbind file.
Reviewed-on: http://gerrit.openafs.org/5488
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit
9133aa6ed3a7fe2ae55b2d3242366ae277c7f726)
Change-Id: I44f6f28d750aa0e463093655a64df8099b8d2cd4
Reviewed-on: http://gerrit.openafs.org/5539
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
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)