server-rxmaxmtu-option-20060221
[openafs.git] / src / bozo / bosserver.c
index 398a1d8..635a681 100644 (file)
@@ -718,6 +718,7 @@ main(int argc, char **argv, char **envp)
     struct ktc_encryptionKey tkey;
     int i;
     char namebuf[AFSDIR_PATH_MAX];
+    int rxMaxMTU = -1;
 #ifndef AFS_NT40_ENV
     int nofork = 0;
     struct stat sb;
@@ -812,6 +813,20 @@ main(int argc, char **argv, char **envp)
            bozo_isrestricted = 1;
        }
 #endif
+       else if (!strcmp(argv[i], "-rxmaxmtu")) {
+           if ((i + 1) >= argc) {
+               fprintf(stderr, "missing argument for -rxmaxmtu\n"); 
+               exit(1); 
+           }
+           rxMaxMTU = atoi(argv[++i]);
+           if ((rxMaxMTU < RX_MIN_PACKET_SIZE) || 
+               (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
+               printf("rxMaxMTU %d% invalid; must be between %d-%d\n",
+                       rxMaxMTU, RX_MIN_PACKET_SIZE, 
+                       RX_MAX_PACKET_DATA_SIZE);
+               exit(1);
+           }
+       }
        else if (strcmp(argv[code], "-auditlog") == 0) {
            int tempfd, flags;
            FILE *auditout;
@@ -849,12 +864,14 @@ main(int argc, char **argv, char **envp)
 #ifndef AFS_NT40_ENV
            printf("Usage: bosserver [-noauth] [-log] "
                   "[-auditlog <log path>] "
+                  "[-rxmaxmtu <bytes>] "
                   "[-syslog[=FACILITY]] "
                   "[-enable_peer_stats] [-enable_process_stats] "
                   "[-nofork] " "[-help]\n");
 #else
            printf("Usage: bosserver [-noauth] [-log] "
                   "[-auditlog <log path>] "
+                  "[-rxmaxmtu <bytes>] "
                   "[-enable_peer_stats] [-enable_process_stats] "
                   "[-help]\n");
 #endif
@@ -1006,6 +1023,10 @@ main(int argc, char **argv, char **envp)
     /* Disable jumbograms */
     rx_SetNoJumbo();
 
+    if (rxMaxMTU != -1) {
+       rx_SetMaxMTU(rxMaxMTU);
+    }
+
     tservice = rx_NewService( /* port */ 0, /* service id */ 1,
                             /*service name */ "bozo",
                             /* security classes */