aboutsummaryrefslogtreecommitdiff
path: root/icmp_t.c
diff options
context:
space:
mode:
Diffstat (limited to 'icmp_t.c')
-rw-r--r--icmp_t.c340
1 files changed, 340 insertions, 0 deletions
diff --git a/icmp_t.c b/icmp_t.c
new file mode 100644
index 0000000..3620920
--- /dev/null
+++ b/icmp_t.c
@@ -0,0 +1,340 @@
+/*
+
+(C) 2009 Mika Ilmaranta <ilmis@nullnet.fi>
+
+License: GPLv2
+
+*/
+
+#include <stdio.h>
+
+#include "icmp_t.h"
+
+static struct icmpmsg icmpmsgs[] = {
+ { 0, 0, "Echo Reply", "" },
+
+ { 1, 0, "Reserved", "" },
+ { 2, 0, "Reserved", "" },
+
+ { 3, 0, "Destination Unreachable", "Destination network unreachable" },
+ { 3, 1, "Destination Unreachable", "Destination host unreachable" },
+ { 3, 2, "Destination Unreachable", "Destination protocol unreachable" },
+ { 3, 3, "Destination Unreachable", "Destination port unreachable" },
+ { 3, 4, "Destination Unreachable", "Fragmentation required, and DF flag set" },
+ { 3, 5, "Destination Unreachable", "Source route failed" },
+ { 3, 6, "Destination Unreachable", "Destination network unknown" },
+ { 3, 7, "Destination Unreachable", "Destination host unknown" },
+ { 3, 8, "Destination Unreachable", "Source host isolated" },
+ { 3, 9, "Destination Unreachable", "Network administratively prohibited" },
+ { 3, 10, "Destination Unreachable", "Host administratively prohibited" },
+ { 3, 11, "Destination Unreachable", "Network unreachable for TOS" },
+ { 3, 12, "Destination Unreachable", "Host unreachable for TOS" },
+ { 3, 13, "Destination Unreachable", "Communication administratively prohibited" },
+
+ { 4, 0, "Source Quench", "Source quench (congestion control)" },
+
+ { 5, 0, "Redirect Message", "Redirect Datagram for the Network" },
+ { 5, 1, "Redirect Message", "Redirect Datagram for the Host" },
+ { 5, 2, "Redirect Message", "Redirect Datagram for the TOS & network" },
+ { 5, 3, "Redirect Message", "Redirect Datagram for the TOS & host" },
+
+ { 6, 0, "Alternate Host Address", "" },
+
+ { 7, 0, "Reserved", "" },
+
+ { 8, 0, "Echo Request", "Echo request (used to ping)" },
+
+ { 9, 0, "Router Advertisement", "Router Advertisement" },
+
+ { 10, 0, "Router Solicitation", "Router discovery/selection/solicitation" },
+
+ { 11, 0, "Time Exceeded", "TTL expired in transit" },
+ { 11, 1, "Time Exceeded", "Fragment reassembly time exceeded" },
+
+ { 12, 0, "Parameter Problem: Bad IP header", "Pointer indicates the error" },
+ { 12, 1, "Parameter Problem: Bad IP header", "Missing a required option" },
+ { 12, 2, "Parameter Problem: Bad IP header", "Bad length" },
+
+ { 13, 0, "Timestamp", "Timestamp" },
+
+ { 14, 0, "Timestamp Reply", "Timestamp reply" },
+
+ { 15, 0, "Information Request", "Information Request" },
+
+ { 16, 0, "Information Reply", "Information Reply" },
+
+ { 17, 0, "Address Mask Request", "Address Mask Request" },
+
+ { 18, 0, "Address Mask Reply", "Address Mask Reply" },
+
+ { 19, 0, "Reserved for security", "Reserved for security" },
+
+ { 20, 0, "Reserved for robustness experiment", "" },
+ { 21, 0, "Reserved for robustness experiment", "" },
+ { 22, 0, "Reserved for robustness experiment", "" },
+ { 23, 0, "Reserved for robustness experiment", "" },
+ { 24, 0, "Reserved for robustness experiment", "" },
+ { 25, 0, "Reserved for robustness experiment", "" },
+ { 26, 0, "Reserved for robustness experiment", "" },
+ { 27, 0, "Reserved for robustness experiment", "" },
+ { 28, 0, "Reserved for robustness experiment", "" },
+ { 29, 0, "Reserved for robustness experiment", "" },
+
+ { 30, 0, "Traceroute", "Information Request" },
+
+ { 31, 0, "Datagram Conversion Error", "" },
+
+ { 32, 0, "Mobile Host Redirect", "" },
+
+ { 33, 0, "Where-Are-You (originally meant for IPv6)", "" },
+
+ { 34, 0, "Here-I-Am (originally meant for IPv6)", "" },
+
+ { 35, 0, "Mobile Registration Request", "" },
+
+ { 36, 0, "Mobile Registration Reply", "" },
+
+ { 37, 0, "Domain Name Request", "" },
+
+ { 38, 0, "Domain Name Reply", "" },
+
+ { 39, 0, "SKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol", "" },
+
+ { 40, 0, "Photuris, Security failures", "" },
+
+ { 41, 0, "ICMP for experimental mobility protocols such as Seamoby [RFC4065]", "" },
+
+ { 42, 0, "Reserved", "" },
+ { 43, 0, "Reserved", "" },
+ { 44, 0, "Reserved", "" },
+ { 45, 0, "Reserved", "" },
+ { 46, 0, "Reserved", "" },
+ { 47, 0, "Reserved", "" },
+ { 48, 0, "Reserved", "" },
+ { 49, 0, "Reserved", "" },
+ { 50, 0, "Reserved", "" },
+ { 51, 0, "Reserved", "" },
+ { 52, 0, "Reserved", "" },
+ { 53, 0, "Reserved", "" },
+ { 54, 0, "Reserved", "" },
+ { 55, 0, "Reserved", "" },
+ { 56, 0, "Reserved", "" },
+ { 57, 0, "Reserved", "" },
+ { 58, 0, "Reserved", "" },
+ { 59, 0, "Reserved", "" },
+ { 60, 0, "Reserved", "" },
+ { 61, 0, "Reserved", "" },
+ { 62, 0, "Reserved", "" },
+ { 63, 0, "Reserved", "" },
+ { 64, 0, "Reserved", "" },
+ { 65, 0, "Reserved", "" },
+ { 66, 0, "Reserved", "" },
+ { 67, 0, "Reserved", "" },
+ { 68, 0, "Reserved", "" },
+ { 69, 0, "Reserved", "" },
+ { 70, 0, "Reserved", "" },
+ { 71, 0, "Reserved", "" },
+ { 72, 0, "Reserved", "" },
+ { 73, 0, "Reserved", "" },
+ { 74, 0, "Reserved", "" },
+ { 75, 0, "Reserved", "" },
+ { 76, 0, "Reserved", "" },
+ { 77, 0, "Reserved", "" },
+ { 78, 0, "Reserved", "" },
+ { 79, 0, "Reserved", "" },
+ { 80, 0, "Reserved", "" },
+ { 81, 0, "Reserved", "" },
+ { 82, 0, "Reserved", "" },
+ { 83, 0, "Reserved", "" },
+ { 84, 0, "Reserved", "" },
+ { 85, 0, "Reserved", "" },
+ { 86, 0, "Reserved", "" },
+ { 87, 0, "Reserved", "" },
+ { 88, 0, "Reserved", "" },
+ { 89, 0, "Reserved", "" },
+ { 90, 0, "Reserved", "" },
+ { 91, 0, "Reserved", "" },
+ { 92, 0, "Reserved", "" },
+ { 93, 0, "Reserved", "" },
+ { 94, 0, "Reserved", "" },
+ { 95, 0, "Reserved", "" },
+ { 96, 0, "Reserved", "" },
+ { 97, 0, "Reserved", "" },
+ { 98, 0, "Reserved", "" },
+ { 99, 0, "Reserved", "" },
+ { 100, 0, "Reserved", "" },
+ { 101, 0, "Reserved", "" },
+ { 102, 0, "Reserved", "" },
+ { 103, 0, "Reserved", "" },
+ { 104, 0, "Reserved", "" },
+ { 105, 0, "Reserved", "" },
+ { 106, 0, "Reserved", "" },
+ { 107, 0, "Reserved", "" },
+ { 108, 0, "Reserved", "" },
+ { 109, 0, "Reserved", "" },
+ { 110, 0, "Reserved", "" },
+ { 111, 0, "Reserved", "" },
+ { 112, 0, "Reserved", "" },
+ { 113, 0, "Reserved", "" },
+ { 114, 0, "Reserved", "" },
+ { 115, 0, "Reserved", "" },
+ { 116, 0, "Reserved", "" },
+ { 117, 0, "Reserved", "" },
+ { 118, 0, "Reserved", "" },
+ { 119, 0, "Reserved", "" },
+ { 120, 0, "Reserved", "" },
+ { 121, 0, "Reserved", "" },
+ { 122, 0, "Reserved", "" },
+ { 123, 0, "Reserved", "" },
+ { 124, 0, "Reserved", "" },
+ { 125, 0, "Reserved", "" },
+ { 126, 0, "Reserved", "" },
+ { 127, 0, "Reserved", "" },
+ { 128, 0, "Reserved", "" },
+ { 129, 0, "Reserved", "" },
+ { 130, 0, "Reserved", "" },
+ { 131, 0, "Reserved", "" },
+ { 132, 0, "Reserved", "" },
+ { 133, 0, "Reserved", "" },
+ { 134, 0, "Reserved", "" },
+ { 135, 0, "Reserved", "" },
+ { 136, 0, "Reserved", "" },
+ { 137, 0, "Reserved", "" },
+ { 138, 0, "Reserved", "" },
+ { 139, 0, "Reserved", "" },
+ { 140, 0, "Reserved", "" },
+ { 141, 0, "Reserved", "" },
+ { 142, 0, "Reserved", "" },
+ { 143, 0, "Reserved", "" },
+ { 144, 0, "Reserved", "" },
+ { 145, 0, "Reserved", "" },
+ { 146, 0, "Reserved", "" },
+ { 147, 0, "Reserved", "" },
+ { 148, 0, "Reserved", "" },
+ { 149, 0, "Reserved", "" },
+ { 150, 0, "Reserved", "" },
+ { 151, 0, "Reserved", "" },
+ { 152, 0, "Reserved", "" },
+ { 153, 0, "Reserved", "" },
+ { 154, 0, "Reserved", "" },
+ { 155, 0, "Reserved", "" },
+ { 156, 0, "Reserved", "" },
+ { 157, 0, "Reserved", "" },
+ { 158, 0, "Reserved", "" },
+ { 159, 0, "Reserved", "" },
+ { 160, 0, "Reserved", "" },
+ { 161, 0, "Reserved", "" },
+ { 162, 0, "Reserved", "" },
+ { 163, 0, "Reserved", "" },
+ { 164, 0, "Reserved", "" },
+ { 165, 0, "Reserved", "" },
+ { 166, 0, "Reserved", "" },
+ { 167, 0, "Reserved", "" },
+ { 168, 0, "Reserved", "" },
+ { 169, 0, "Reserved", "" },
+ { 170, 0, "Reserved", "" },
+ { 171, 0, "Reserved", "" },
+ { 172, 0, "Reserved", "" },
+ { 173, 0, "Reserved", "" },
+ { 174, 0, "Reserved", "" },
+ { 175, 0, "Reserved", "" },
+ { 176, 0, "Reserved", "" },
+ { 177, 0, "Reserved", "" },
+ { 178, 0, "Reserved", "" },
+ { 179, 0, "Reserved", "" },
+ { 180, 0, "Reserved", "" },
+ { 181, 0, "Reserved", "" },
+ { 182, 0, "Reserved", "" },
+ { 183, 0, "Reserved", "" },
+ { 184, 0, "Reserved", "" },
+ { 185, 0, "Reserved", "" },
+ { 186, 0, "Reserved", "" },
+ { 187, 0, "Reserved", "" },
+ { 188, 0, "Reserved", "" },
+ { 189, 0, "Reserved", "" },
+ { 190, 0, "Reserved", "" },
+ { 191, 0, "Reserved", "" },
+ { 192, 0, "Reserved", "" },
+ { 193, 0, "Reserved", "" },
+ { 194, 0, "Reserved", "" },
+ { 195, 0, "Reserved", "" },
+ { 196, 0, "Reserved", "" },
+ { 197, 0, "Reserved", "" },
+ { 198, 0, "Reserved", "" },
+ { 199, 0, "Reserved", "" },
+ { 200, 0, "Reserved", "" },
+ { 201, 0, "Reserved", "" },
+ { 202, 0, "Reserved", "" },
+ { 203, 0, "Reserved", "" },
+ { 204, 0, "Reserved", "" },
+ { 205, 0, "Reserved", "" },
+ { 206, 0, "Reserved", "" },
+ { 207, 0, "Reserved", "" },
+ { 208, 0, "Reserved", "" },
+ { 209, 0, "Reserved", "" },
+ { 210, 0, "Reserved", "" },
+ { 211, 0, "Reserved", "" },
+ { 212, 0, "Reserved", "" },
+ { 213, 0, "Reserved", "" },
+ { 214, 0, "Reserved", "" },
+ { 215, 0, "Reserved", "" },
+ { 216, 0, "Reserved", "" },
+ { 217, 0, "Reserved", "" },
+ { 218, 0, "Reserved", "" },
+ { 219, 0, "Reserved", "" },
+ { 220, 0, "Reserved", "" },
+ { 221, 0, "Reserved", "" },
+ { 222, 0, "Reserved", "" },
+ { 223, 0, "Reserved", "" },
+ { 224, 0, "Reserved", "" },
+ { 225, 0, "Reserved", "" },
+ { 226, 0, "Reserved", "" },
+ { 227, 0, "Reserved", "" },
+ { 228, 0, "Reserved", "" },
+ { 229, 0, "Reserved", "" },
+ { 230, 0, "Reserved", "" },
+ { 231, 0, "Reserved", "" },
+ { 232, 0, "Reserved", "" },
+ { 233, 0, "Reserved", "" },
+ { 234, 0, "Reserved", "" },
+ { 235, 0, "Reserved", "" },
+ { 236, 0, "Reserved", "" },
+ { 237, 0, "Reserved", "" },
+ { 238, 0, "Reserved", "" },
+ { 239, 0, "Reserved", "" },
+ { 240, 0, "Reserved", "" },
+ { 241, 0, "Reserved", "" },
+ { 242, 0, "Reserved", "" },
+ { 243, 0, "Reserved", "" },
+ { 244, 0, "Reserved", "" },
+ { 245, 0, "Reserved", "" },
+ { 246, 0, "Reserved", "" },
+ { 247, 0, "Reserved", "" },
+ { 248, 0, "Reserved", "" },
+ { 249, 0, "Reserved", "" },
+ { 250, 0, "Reserved", "" },
+ { 251, 0, "Reserved", "" },
+ { 252, 0, "Reserved", "" },
+ { 253, 0, "Reserved", "" },
+ { 254, 0, "Reserved", "" },
+ { 255, 0, "Reserved", "" },
+
+ { 256, 256, "impossible combination", "impossible combination" }
+};
+
+struct icmpmsg *stricmp(int type, int code)
+{
+ int i;
+
+ if(type > 255) return(&((struct icmpmsg) { 256, 256, "unknown", "unknown" }));
+
+ for(i = 0; icmpmsgs[i].type <= type; i++)
+ if(icmpmsgs[i].type == type && icmpmsgs[i].code == code) return(&(icmpmsgs[i]));
+
+ for(i = 0; icmpmsgs[i].type <= type; i++)
+ if(icmpmsgs[i].type == type) return(&(icmpmsgs[i]));
+
+ return(&((struct icmpmsg) { 256, 256, "unknown", "unknown" }));
+}
+
+/* EOF */