Log binding ip address and port during startup
[openafs.git] / src / kauth / kaserver.c
index 816871c..584b611 100644 (file)
@@ -163,14 +163,16 @@ main(int argc, char *argv[])
     const char *cellservdb, *dbpath, *lclpath;
     int a;
     char arg[32];
-    char default_lclpath[AFSDIR_PATH_MAX];
+    char *default_lclpath;
     int servers;
     int initFlags;
     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;
 
     struct rx_service *tservice;
     struct rx_securityClass *sca[1];
@@ -195,13 +197,15 @@ main(int argc, char *argv[])
 #endif
     osi_audit_init();
 
+    memset(&logopts, 0, sizeof(logopts));
+
     if (argc == 0) {
       usage:
        printf("Usage: kaserver [-noAuth] [-database <dbpath>] "
               "[-auditlog <log path>] [-audit-interface <file|sysvmq>] "
               "[-rxbind] [-localfiles <lclpath>] [-minhours <n>] "
               "[-servers <serverlist>] [-crossrealm] "
-              /*" [-enable_peer_stats] [-enable_process_stats] " */
+              "[-enable_peer_stats] [-enable_process_stats] "
               "[-help]\n");
        exit(1);
     }
@@ -225,8 +229,12 @@ main(int argc, char *argv[])
 
     cellservdb = AFSDIR_SERVER_ETC_DIRPATH;
     dbpath = AFSDIR_SERVER_KADB_FILEPATH;
-    strcompose(default_lclpath, AFSDIR_PATH_MAX, AFSDIR_SERVER_LOCAL_DIRPATH,
-              "/", AFSDIR_KADB_FILE, (char *)NULL);
+
+    if (asprintf(&default_lclpath, "%s/%s", AFSDIR_SERVER_LOCAL_DIRPATH,
+                AFSDIR_KADB_FILE) < 0) {
+       fprintf(stderr, "%s: No memory for default local dir path\n", argv[0]);
+       exit(2);
+    }
     lclpath = default_lclpath;
 
     debugOutput = 0;
@@ -317,7 +325,12 @@ main(int argc, char *argv[])
      * text logging. So open the AuthLog file for logging and redirect
      * stdin and stdout to it
      */
-    OpenLog(AFSDIR_SERVER_KALOG_FILEPATH);
+    logopts.lopt_dest = logDest_file;
+    logopts.lopt_filename = AFSDIR_SERVER_KALOG_FILEPATH;
+    logopts.lopt_rotateOnOpen = 1;
+    logopts.lopt_rotateStyle = logRotate_old;
+
+    OpenLog(&logopts);
     SetupLogSignals();
 #endif
 
@@ -398,10 +411,17 @@ main(int argc, char *argv[])
         }
         if (ccode == 1) {
             host = SHostAddrs[0];
-           rx_InitHost(host, htons(AFSCONF_KAUTHPORT));
        }
     }
 
+    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");
+       exit(2);
+    }
+
     /* Disable jumbograms */
     rx_SetNoJumbo();
 
@@ -419,7 +439,7 @@ main(int argc, char *argv[])
        exit(2);
     }
 
-    sca[RX_SCINDEX_NULL] = rxnull_NewServerSecurityObject();
+    sca[RX_SECIDX_NULL] = rxnull_NewServerSecurityObject();
 
     tservice =
        rx_NewServiceHost(host, 0, KA_AUTHENTICATION_SERVICE,
@@ -442,9 +462,9 @@ main(int argc, char *argv[])
     rx_SetMinProcs(tservice, 1);
     rx_SetMaxProcs(tservice, 1);
 
-    scm[RX_SCINDEX_NULL] = sca[RX_SCINDEX_NULL];
-    scm[RX_SCINDEX_VAB] = 0;
-    scm[RX_SCINDEX_KAD] =
+    scm[RX_SECIDX_NULL] = sca[RX_SECIDX_NULL];
+    scm[RX_SECIDX_VAB] = 0;
+    scm[RX_SECIDX_KAD] =
        rxkad_NewServerSecurityObject(rxkad_crypt, 0, kvno_admin_key, 0);
     tservice =
        rx_NewServiceHost(host, 0, KA_MAINTENANCE_SERVICE, "Maintenance", scm, 3,