Bozo needs to call rxInitHost() rather than rxInit() when -rxbind is present. This patch causes it to read NetInfo/NetRestrict earlier in the startup process so it can make that decision.
/afs/megacz.com/debian/patches/openafs/1.4.4/openafs-bozo-obey-rxbind-patch BTW, with this patch on 1.4.4 I have finally achieved my goal of running two OpenAFS cells off of the same machine without any kernel patches. Previously I had to use linux's vserver to clobber them into binding to different addresses. Big thanks also to whomever added the volserver-fileserver-via-domain-socket patch; that was crucial too. - a --- openafs-1.4.4/src/bozo/bosserver.c 2007-03-23 03:44:03.000000000 -0700 +++ openafs-1.4.4/src/bozo/bosserver.c 2006-12-21 15:15:35.000000000 -0800 @@ -953,36 +953,13 @@ /* Write current state of directory permissions to log file */ DirAccessOK(); - if (rxBind) { - afs_int32 ccode; -#ifndef AFS_NT40_ENV - if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || - AFSDIR_SERVER_NETINFO_FILEPATH) { - char reason[1024]; - ccode = parseNetFiles(SHostAddrs, NULL, NULL, - ADDRSPERSITE, reason, - AFSDIR_SERVER_NETINFO_FILEPATH, - AFSDIR_SERVER_NETRESTRICT_FILEPATH); - } else -#endif - { - ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE); - } - if (ccode == 1) - host = SHostAddrs[0]; - } - for (i = 0; i < 10; i++) { - if (rxBind) { - code = rx_InitHost(host, htons(AFSCONF_NANNYPORT)); - } else { - code = rx_Init(htons(AFSCONF_NANNYPORT)); - } - if (code) { - bozo_Log("can't initialize rx: code=%d\n", code); - sleep(3); - } else - break; + code = rx_Init(htons(AFSCONF_NANNYPORT)); + if (code) { + bozo_Log("can't initialize rx: code=%d\n", code); + sleep(3); + } else + break; } if (i >= 10) { bozo_Log("Bos giving up, can't initialize rx\n"); @@ -1059,6 +1036,25 @@ rx_SetMaxMTU(rxMaxMTU); } + if (rxBind) { + afs_int32 ccode; +#ifndef AFS_NT40_ENV + if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || + AFSDIR_SERVER_NETINFO_FILEPATH) { + char reason[1024]; + ccode = parseNetFiles(SHostAddrs, NULL, NULL, + ADDRSPERSITE, reason, + AFSDIR_SERVER_NETINFO_FILEPATH, + AFSDIR_SERVER_NETRESTRICT_FILEPATH); + } else +#endif + { + ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE); + } + if (ccode == 1) + host = SHostAddrs[0]; + } + tservice = rx_NewServiceHost(host, /* port */ 0, /* service id */ 1, /*service name */ "bozo", /* security classes */ _______________________________________________ OpenAFS-devel mailing list OpenAFS-devel@openafs.org https://lists.openafs.org/mailman/listinfo/openafs-devel