Log binding ip address and port during startup 72/13272/4
authorAndrew Deason <adeason@sinenomine.net>
Mon, 20 Aug 2018 19:53:35 +0000 (14:53 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 5 Oct 2018 12:54:56 +0000 (08:54 -0400)
Many daemons currently have the ability to bind to a specific ip
address using the -rxbind parameter. The behavior can be a little
unintuitive, however, since we only bind to the ip address we find via
NetInfo/NetRestrict processing, and only if we end up with a single ip
address. Since that processing involves examining the set of ip
addresses available, this can have confusing results if, for instance,
a daemon starts up while an administrator is changing the local ip
configuration.

If a daemon binds to a different ip address than the administrator
expects, this can be very confusing, especially since for most daemons
we don't log our bound ip anywhere. To help alleviate this, change the
startup code for all of our daemons to log what ip we are trying to
bind to (or "0.0.0.0" if none), along with our local port.

Change-Id: I18d3647c4d134177a0a17c6a64583d444558a9f6
Reviewed-on: https://gerrit.openafs.org/13272
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/afs/afs_call.c
src/budb/server.c
src/butc/tcmain.c
src/kauth/kaserver.c
src/ptserver/ptserver.c
src/update/server.c
src/viced/viced.c
src/vlserver/vlserver.c
src/volser/volmain.c

index 6eae4da..6c961d2 100644 (file)
@@ -99,6 +99,7 @@ static int
 afs_InitSetup(int preallocs)
 {
     int code;
+    afs_uint32 host;
 
     if (afs_InitSetup_done)
        return EAGAIN;
@@ -127,6 +128,14 @@ afs_InitSetup(int preallocs)
     /* start RX */
     if(!afscall_set_rxpck_received)
     rx_extraPackets = AFS_NRXPACKETS;  /* smaller # of packets */
+
+    host = ntohl(rx_bindhost);
+    afs_warn("afs: Binding rx to %d.%d.%d.%d:%d\n",
+             (host >> 24),
+             (host >> 16) & 0xff,
+             (host >>  8) & 0xff,
+             (host)       & 0xff,
+             7001);
     code = rx_InitHost(rx_bindhost, htons(7001));
     if (code) {
        afs_warn("AFS: RX failed to initialize %d).\n", code);
index 99b8a57..08d7a4f 100644 (file)
@@ -370,6 +370,7 @@ main(int argc, char **argv)
     struct afsconf_cell *cellinfo = NULL;
     time_t currentTime;
     afs_int32 code = 0;
+    char hoststr[16];
     afs_uint32 host = ntohl(INADDR_ANY);
     int r;
 
@@ -534,6 +535,8 @@ main(int argc, char **argv)
        }
     }
 
+    Log("buserver binding rx to %s:%d\n",
+        afs_inet_ntoa_r(host, hoststr), AFSCONF_BUDBPORT);
     code = rx_InitHost(host, htons(AFSCONF_BUDBPORT));
     if (code) {
        LogError(code, "rx init failed\n");
index cbd135b..9509f12 100644 (file)
@@ -859,6 +859,7 @@ WorkerBee(struct cmd_syndesc *as, void *arock)
 #else
     PROCESS dbWatcherPid;
 #endif
+    char hoststr[16];
     afs_uint32 host = htonl(INADDR_ANY);
     char *auditFileName = NULL;
     char *auditInterface = NULL;
@@ -1096,6 +1097,8 @@ WorkerBee(struct cmd_syndesc *as, void *arock)
             host = SHostAddrs[0];
     }
 
+    TLog(0, "butc binding rx to %s:%d\n",
+         afs_inet_ntoa_r(host, hoststr), BC_TAPEPORT + portOffset);
     code = rx_InitHost(host, htons(BC_TAPEPORT + portOffset));
     if (code) {
        TapeLog(0, 0, code, 0, "rx init failed on port %u\n",
index d28c736..584b611 100644 (file)
@@ -169,6 +169,7 @@ main(int argc, char *argv[])
     int level;                 /* security level for Ubik */
     afs_int32 i;
     char clones[MAXHOSTSPERCELL];
+    char hoststr[16];
     afs_uint32 host = ntohl(INADDR_ANY);
     char *auditFileName = NULL;
     struct logOptions logopts;
@@ -413,6 +414,8 @@ main(int argc, char *argv[])
        }
     }
 
+    ViceLog(0, ("kaserver binding rx to %s:%d\n",
+            afs_inet_ntoa_r(host, hoststr), AFSCONF_KAUTHPORT));
     code = rx_InitHost(host, htons(AFSCONF_KAUTHPORT));
     if (code) {
        afs_com_err(whoami, code, "rx init failed");
index 63ed325..d0940fd 100644 (file)
@@ -249,6 +249,7 @@ main(int argc, char **argv)
     afs_int32 numClasses;
     int lwps = 3;
     char clones[MAXHOSTSPERCELL];
+    char hoststr[16];
     afs_uint32 host = htonl(INADDR_ANY);
     struct cmd_syndesc *opts;
     struct cmd_item *list;
@@ -544,6 +545,8 @@ main(int argc, char **argv)
        }
     }
 
+    ViceLog(0, ("ptserver binding rx to %s:%d\n",
+            afs_inet_ntoa_r(host, hoststr), AFSCONF_PROTPORT));
     code = rx_InitHost(host, htons(AFSCONF_PROTPORT));
     if (code < 0) {
        ViceLog(0, ("ptserver: Rx init failed: %d\n", code));
index c2985d3..c3e722d 100644 (file)
@@ -198,6 +198,7 @@ main(int argc, char *argv[])
     struct rx_securityClass **securityClasses;
     afs_int32 numClasses;
     struct rx_service *service;
+    char hoststr[16];
     afs_uint32 host = htonl(INADDR_ANY);
 
     int a = 0;
@@ -308,6 +309,8 @@ main(int argc, char *argv[])
 
     /* Initialize Rx, telling it port number this server will use for its
      * single service */
+    fprintf(stderr, "upserver binding rx to %s:%d\n",
+            afs_inet_ntoa_r(host, hoststr), AFSCONF_UPDATEPORT);
     if (rx_InitHost(host, htons(AFSCONF_UPDATEPORT)) < 0)
        Quit("rx_init");
 
index dca1700..a26676a 100644 (file)
@@ -1836,6 +1836,7 @@ main(int argc, char *argv[])
     int curLimit;
     time_t t;
     struct tm tm;
+    char hoststr[16];
     afs_uint32 rx_bindhost;
     VolumePackageOptions opts;
 
@@ -2004,6 +2005,8 @@ main(int argc, char *argv[])
        rx_SetUdpBufSize(udpBufSize);   /* set the UDP buffer size for receive */
     rx_bindhost = SetupVL();
 
+    ViceLog(0, ("File server binding rx to %s:%d\n",
+            afs_inet_ntoa_r(rx_bindhost, hoststr), 7000));
     if (rx_InitHost(rx_bindhost, (int)htons(7000)) < 0) {
        ViceLog(0, ("Cannot initialize RX\n"));
        exit(1);
@@ -2202,7 +2205,6 @@ main(int argc, char *argv[])
     if (!he) {
        ViceLog(0, ("Can't find address for FileServer '%s'\n", FS_HostName));
     } else {
-       char hoststr[16];
        memcpy(&FS_HostAddr_NBO, he->h_addr, 4);
        (void)afs_inet_ntoa_r(FS_HostAddr_NBO, hoststr);
        FS_HostAddr_HBO = ntohl(FS_HostAddr_NBO);
index ac6ef09..0c27056 100644 (file)
@@ -176,6 +176,7 @@ main(int argc, char **argv)
     char hostname[VL_MAXNAMELEN];
     int noAuth = 0;
     char clones[MAXHOSTSPERCELL];
+    char hoststr[16];
     afs_uint32 host = ntohl(INADDR_ANY);
     struct cmd_syndesc *opts;
     struct logOptions logopts;
@@ -476,6 +477,8 @@ main(int argc, char **argv)
        }
     }
 
+    VLog(0, ("vlserver binding rx to %s:%d\n",
+         afs_inet_ntoa_r(host, hoststr), AFSCONF_VLDBPORT));
     code = rx_InitHost(host, htons(AFSCONF_VLDBPORT));
     if (code < 0) {
         VLog(0, ("vlserver: Rx init failed: %d\n", code));
index bc2c1fd..b4a5ee9 100644 (file)
@@ -442,6 +442,7 @@ main(int argc, char **argv)
     afs_int32 numClasses;
     struct rx_service *service;
     int rxpackets = 100;
+    char hoststr[16];
     afs_uint32 host = ntohl(INADDR_ANY);
     VolumePackageOptions opts;
 
@@ -540,6 +541,8 @@ main(int argc, char **argv)
             host = SHostAddrs[0];
     }
 
+    Log("Volserver binding rx to %s:%d\n",
+        afs_inet_ntoa_r(host, hoststr), AFSCONF_VOLUMEPORT);
     code = rx_InitHost(host, (int)htons(AFSCONF_VOLUMEPORT));
     if (code) {
        fprintf(stderr, "rx init failed on socket AFSCONF_VOLUMEPORT %u\n",