Nmap Development mailing list archives

[PATCH] Use switch() instead of if/else if in tcpip.cc


From: "Kris Katterjohn" <kjak () ispwest com>
Date: Tue, 21 Feb 2006 11:22:41 -0800

This uses a switch statement instead of multiple if/else if statements which
often seems to be, at least with gcc/g++, better performance-wise. On my box it
slightly decreases the nmap binary size:

-rwxr-xr-x  1 kjak root 1963697 2006-02-21 13:08 nmap*
-rwxr-xr-x  1 kjak root 1963785 2006-02-21 12:33 nmap.orig*

Thanks,
Kris Katterjohn


--- tcpip.cc.orig       2006-02-21 13:05:49.000000000 -0600
+++ tcpip.cc    2006-02-21 13:07:38.000000000 -0600
@@ -527,40 +527,42 @@
     case 0:
       strcpy(icmptype, "Echo reply"); break;
     case 3:
-      if (ping->code == 0)
-       strcpy(icmptype, "network unreachable");
-      else if (ping->code == 1)
-       strcpy(icmptype, "host unreachable");
-      else if (ping->code == 2)
-       strcpy(icmptype, "protocol unreachable");
-      else if (ping->code == 3)
-       strcpy(icmptype, "port unreachable");
-      else if (ping->code == 4)
-       strcpy(icmptype, "fragmentation required");
-      else if (ping->code == 5)
-       strcpy(icmptype, "source route failed");
-      else if (ping->code == 6)
-       strcpy(icmptype, "destination network unknown");
-      else if (ping->code == 7)
-       strcpy(icmptype, "destination host unknown");
-      else if (ping->code == 8)
-       strcpy(icmptype, "source host isolated");
-      else if (ping->code == 9)
-       strcpy(icmptype, "destination network administratively prohibited");
-      else if (ping->code == 10)
-       strcpy(icmptype, "destination host administratively prohibited");
-      else if (ping->code == 11)
-       strcpy(icmptype, "network unreachable for TOS");
-      else if (ping->code == 12)
-       strcpy(icmptype, "host unreachable for TOS");
-      else if (ping->code == 13)
-       strcpy(icmptype, "communication administratively prohibited by filtering");
-      else if (ping->code == 14)
-       strcpy(icmptype, "host precedence violation");
-      else if (ping->code == 15)
-       strcpy(icmptype, "precedence cutoff in effect");
-      else
-       strcpy(icmptype, "unknown unreachable code");
+      switch (ping->code) {
+      case 0:
+       strcpy(icmptype, "network unreachable"); break;
+      case 1:
+       strcpy(icmptype, "host unreachable"); break;
+      case 2:
+       strcpy(icmptype, "protocol unreachable"); break;
+      case 3:
+       strcpy(icmptype, "port unreachable"); break;
+      case 4:
+       strcpy(icmptype, "fragmentation required"); break;
+      case 5:
+       strcpy(icmptype, "source route failed"); break;
+      case 6:
+       strcpy(icmptype, "destination network unknown"); break;
+      case 7:
+       strcpy(icmptype, "destination host unknown"); break;
+      case 8:
+       strcpy(icmptype, "source host isolated"); break;
+      case 9:
+       strcpy(icmptype, "destination network administratively prohibited"); break;
+      case 10:
+       strcpy(icmptype, "destination host administratively prohibited"); break;
+      case 11:
+       strcpy(icmptype, "network unreachable for TOS"); break;
+      case 12:
+       strcpy(icmptype, "host unreachable for TOS"); break;
+      case 13:
+       strcpy(icmptype, "communication administratively prohibited by filtering"); break;
+      case 14:
+       strcpy(icmptype, "host precedence violation"); break;
+      case 15:
+       strcpy(icmptype, "precedence cutoff in effect"); break;
+      default:
+       strcpy(icmptype, "unknown unreachable code"); break;
+      }
       break;
     case 4:
       strcpy(icmptype, "source quench"); break;




_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev


Current thread: