diff options
Diffstat (limited to 'icmp_t.c')
| -rw-r--r-- | icmp_t.c | 340 |
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 */ |
