]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
rx: Refactor MaxMTU error checking
authorSimon Wilkinson <sxw@your-file-system.com>
Sun, 20 Nov 2011 16:29:55 +0000 (16:29 +0000)
committerDerrick Brashear <shadow@dementix.org>
Sat, 3 Dec 2011 14:15:59 +0000 (06:15 -0800)
The error checking on the rxMaxMTU parameter was done individually by
every server that sets it, using "internal" RX #defines to do so.
Instead, do the error checking within the function that actually sets
the MTU, reducing both the amount of code duplication, and the amount
of RX knowledge held within the servers.

Change-Id: Ic2cdd9425d5344a5137f76f66f711f4dee91a7b6
Reviewed-on: http://gerrit.openafs.org/6091
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/WINNT/afsd/afsd_init.c
src/bozo/bosserver.c
src/ptserver/ptserver.c
src/rx/rx_prototypes.h
src/rx/rx_user.c
src/viced/viced.c
src/vlserver/vlserver.c
src/volser/volmain.c

index dcf1004ffeac77cea51792477b5367c7a2ca344e..eff213c806245aedba7bdc8ff86377a61363599c 100644 (file)
@@ -1392,8 +1392,6 @@ afsd_InitCM(char **reasonP)
     }
 
     if ( rx_mtu != -1 ) {
-        extern void rx_SetMaxMTU(int);
-
         rx_SetMaxMTU(rx_mtu);
         afsi_log("rx_SetMaxMTU %d successful", rx_mtu);
     }
index 3861689074e9fdfcb8d60696cd2c1740a3ca2ffa..ff701f461c28212f41f51e78ff871e1b38bf1580 100644 (file)
@@ -955,13 +955,6 @@ main(int argc, char **argv, char **envp)
                exit(1);
            }
            rxMaxMTU = atoi(argv[++code]);
-           if ((rxMaxMTU < RX_MIN_PACKET_SIZE) ||
-               (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
-               printf("rxMaxMTU %d invalid; must be between %d-%" AFS_SIZET_FMT "\n",
-                       rxMaxMTU, RX_MIN_PACKET_SIZE,
-                       RX_MAX_PACKET_DATA_SIZE);
-               exit(1);
-           }
        }
        else if (strcmp(argv[code], "-auditlog") == 0) {
            auditFileName = argv[++code];
@@ -1193,7 +1186,10 @@ main(int argc, char **argv, char **envp)
     rx_SetNoJumbo();
 
     if (rxMaxMTU != -1) {
-       rx_SetMaxMTU(rxMaxMTU);
+       if (rx_SetMaxMTU(rxMaxMTU) != 0) {
+           bozo_Log("bosserver: rxMaxMTU %d is invalid\n", rxMaxMTU);
+           exit(1);
+       }
     }
 
     tservice = rx_NewServiceHost(host, 0, /* service id */ 1,
index a5c5009b20a6409617e566f1fa66abde292679fa..0b473afcfd79862278c5cd4bd6b0e4b7b40b5093 100644 (file)
@@ -396,15 +396,7 @@ main(int argc, char **argv)
 
     cmd_OptionAsFlag(opts, OPT_rxbind, &rxBind);
 
-    if (cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU) == 0) {
-       if ((rxMaxMTU < RX_MIN_PACKET_SIZE) ||
-           (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
-           printf("rxMaxMTU %d invalid; must be between %d-%" AFS_SIZET_FMT "\n",
-                  rxMaxMTU, RX_MIN_PACKET_SIZE,
-                  RX_MAX_PACKET_DATA_SIZE);
-           PT_EXIT(1);
-       }
-    }
+    cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU);
 
     /* rxkad options */
     cmd_OptionAsFlag(opts, OPT_dotted, &rxkadDisableDotCheck);
@@ -512,7 +504,10 @@ main(int argc, char **argv)
     rx_SetNoJumbo();
 
     if (rxMaxMTU != -1) {
-       rx_SetMaxMTU(rxMaxMTU);
+       if (rx_SetMaxMTU(rxMaxMTU) != 0) {
+           printf("rxMaxMTU %d is invalid\n", rxMaxMTU);
+           PT_EXIT(1);
+       }
     }
 
     tservice =
index 6c8d46d66c473bf79debfc69c8e0bbc6b5a85526..c36ed4493b170c601c022385cfd86a1c24c6db7e 100644 (file)
@@ -605,7 +605,7 @@ extern void osi_Panic(char *fmt, ...) AFS_NORETURN;
 
 extern void rx_GetIFInfo(void);
 extern void rx_SetNoJumbo(void);
-extern void rx_SetMaxMTU(int mtu);
+extern int rx_SetMaxMTU(int mtu);
 
 /* rx_xmit_nt.c */
 
index bbda44970e16e975c6985927e5b63ce65e69c133..d259560f096fd199e74b671754dbeb84b8669ce3 100644 (file)
@@ -764,10 +764,15 @@ rx_SetNoJumbo(void)
 
 /* Override max MTU.  If rx_SetNoJumbo is called, it must be
    called before calling rx_SetMaxMTU since SetNoJumbo clobbers rx_maxReceiveSize */
-void
+int
 rx_SetMaxMTU(int mtu)
 {
+    if (mtu < RX_MIN_PACKET_SIZE || mtu > RX_MAX_PACKET_DATA_SIZE)
+       return EINVAL;
+
     rx_MyMaxSendSize = rx_maxReceiveSizeUser = rx_maxReceiveSize = mtu;
+
+    return 0;
 }
 
 #if defined(ADAPT_PMTU)
index 4fb4e91b6165dbb7b19c7ae755d5f9a953305a3b..ec117d72ec96967e00733a23d9cebdb8a1fde6a2 100644 (file)
@@ -1426,15 +1426,7 @@ ParseArgs(int argc, char *argv[])
     cmd_OptionAsFlag(opts, OPT_rxdbge, &eventlog);
     cmd_OptionAsInt(opts, OPT_rxpck, &rxpackets);
 
-    if (cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU) == 0) {
-       if ((rxMaxMTU < RX_MIN_PACKET_SIZE) ||
-           (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
-           printf("rxMaxMTU %d invalid; must be between %d-%" AFS_SIZET_FMT "\n",
-                  rxMaxMTU, RX_MIN_PACKET_SIZE,
-                  RX_MAX_PACKET_DATA_SIZE);
-           return(-1);
-       }
-    }
+    cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU);
 
     if (cmd_OptionAsInt(opts, OPT_udpsize, &optval) == 0) {
        if (optval < rx_GetMinUdpBufSize()) {
@@ -2069,7 +2061,10 @@ main(int argc, char *argv[])
        rx_SetNoJumbo();
     }
     if (rxMaxMTU != -1) {
-       rx_SetMaxMTU(rxMaxMTU);
+       if (rx_SetMaxMTU(rxMaxMTU) != 0) {
+           ViceLog(0, ("rxMaxMTU %d is invalid\n", rxMaxMTU));
+           exit(1);
+       }
     }
     rx_GetIFInfo();
     rx_SetRxDeadTime(30);
index 58aba79cdf917f95a7fc9d8ffd71bfcdaab2a4cc..b7230a44d31b4adff1b6fb39f08eef8ec39970c0 100644 (file)
@@ -301,15 +301,7 @@ main(int argc, char **argv)
 
     cmd_OptionAsFlag(opts, OPT_rxbind, &rxBind);
 
-    if (cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU) == 0) {
-       if ((rxMaxMTU < RX_MIN_PACKET_SIZE) ||
-           (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
-           printf("rxMaxMTU %d invalid; must be between %d-%" AFS_SIZET_FMT "\n",
-                  rxMaxMTU, RX_MIN_PACKET_SIZE,
-                  RX_MAX_PACKET_DATA_SIZE);
-           return -1;
-       }
-    }
+    cmd_OptionAsInt(opts, OPT_rxmaxmtu, &rxMaxMTU);
 
     /* rxkad options */
     cmd_OptionAsFlag(opts, OPT_dotted, &rxkadDisableDotCheck);
@@ -406,7 +398,10 @@ main(int argc, char **argv)
        rx_SetNoJumbo();
     }
     if (rxMaxMTU != -1) {
-       rx_SetMaxMTU(rxMaxMTU);
+       if (rx_SetMaxMTU(rxMaxMTU) != 0) {
+           printf("rxMaxMTU %d invalid\n", rxMaxMTU);
+           return -1;
+       }
     }
     rx_SetRxDeadTime(50);
 
index a8fab24ce776971cccb09b34162f4e9c1d430453..8c12902437d438aa7fe75ede56a943b8fc7920e3 100644 (file)
@@ -318,13 +318,6 @@ main(int argc, char **argv)
                exit(1);
            }
            rxMaxMTU = atoi(argv[++code]);
-           if ((rxMaxMTU < RX_MIN_PACKET_SIZE) ||
-               (rxMaxMTU > RX_MAX_PACKET_DATA_SIZE)) {
-               printf("rxMaxMTU %d invalid; must be between %d-%" AFS_SIZET_FMT "\n",
-                      rxMaxMTU, RX_MIN_PACKET_SIZE,
-                      RX_MAX_PACKET_DATA_SIZE);
-               exit(1);
-           }
        } else if (strcmp(argv[code], "-sleep") == 0) {
            sscanf(argv[++code], "%d/%d", &TTsleep, &TTrun);
            if ((TTsleep < 0) || (TTrun <= 0)) {
@@ -454,7 +447,10 @@ main(int argc, char **argv)
        rx_SetNoJumbo();
     }
     if (rxMaxMTU != -1) {
-       rx_SetMaxMTU(rxMaxMTU);
+       if (rx_SetMaxMTU(rxMaxMTU) != 0) {
+           fprintf(stderr, "rxMaxMTU %d is invalid\n", rxMaxMTU);
+           VS_EXIT(1);
+       }
     }
     rx_GetIFInfo();
     rx_SetRxDeadTime(420);