aboutsummaryrefslogtreecommitdiff
path: root/icmp6_t.c
diff options
context:
space:
mode:
authorLucas Castro <lucas@gnuabordo.com.br>2024-01-10 22:33:44 -0300
committerLucas Castro <lucas@gnuabordo.com.br>2024-01-10 22:33:44 -0300
commita4270020addc324fb60d2b1b446b41bc31e3baf8 (patch)
tree8708f08c66a63f08c0cd88ab1a46faadcd3f4706 /icmp6_t.c
Import Upstream version 1.0.4upstream/1.0.4
Diffstat (limited to 'icmp6_t.c')
-rw-r--r--icmp6_t.c118
1 files changed, 118 insertions, 0 deletions
diff --git a/icmp6_t.c b/icmp6_t.c
new file mode 100644
index 0000000..e0928f8
--- /dev/null
+++ b/icmp6_t.c
@@ -0,0 +1,118 @@
+/*
+
+ (C) 2011 Mika Ilmaranta <ilmis@nullnet.fi>
+
+*/
+
+#include <stdio.h>
+
+#include "icmp6_t.h"
+
+struct icmp6msg icmp6msgs[] = {
+ /* error messages */
+ { 0, 0, "Reserved", "" },
+
+ { 1, 0, "Destination Unreachable", "no route to destination" },
+ { 1, 1, "Destination Unreachable", "communication with destination administratively prohibited" },
+ { 1, 2, "Destination Unreachable", "beyond scope of source address" },
+ { 1, 3, "Destination Unreachable", "address unreachable" },
+ { 1, 4, "Destination Unreachable", "port unreachable" },
+ { 1, 5, "Destination Unreachable", "source address failed ingress/egress policy" },
+ { 1, 6, "Destination Unreachable", "reject route to destination" },
+ { 1, 7, "Destination Unreachable", "Error in Source Routing Header" },
+
+ { 2, 0, "Packet Too Big", "" },
+
+ { 3, 0, "Time Exceeded", "hop limit exceeded in transit" },
+ { 3, 1, "Time Exceeded", "fragment reassembly time exceeded" },
+
+ { 4, 0, "Parameter Problem", "erroneous header field encountered" },
+ { 4, 1, "Parameter Problem", "unrecognized Next Header type encountered" },
+ { 4, 2, "Parameter Problem", "unrecognized IPv6 option encountered" },
+
+ { 100, 0, "Private experimentation", "" },
+ { 101, 0, "Private experimentation", "" },
+ { 127, 0, "Reserved for expansion of ICMPv6 error messages", "" },
+
+ /* infomational messages */
+ { 128, 0, "Echo Request", "" },
+
+ { 129, 0, "Echo Reply", "" },
+
+ { 130, 0, "Multicast Listener Query", "" },
+
+ { 131, 0, "Multicast Listener Report", "" },
+
+ { 132, 0, "Multicast Listener Done", "" },
+
+ { 133, 0, "Router Solicitation (NDP)", "" },
+
+ { 134, 0, "Router Advertisement (NDP)", "" },
+
+ { 135, 0, "Neighbor Solicitation (NDP)", "" },
+
+ { 136, 0, "Neighbor Advertisement (NDP)", "" },
+
+ { 137, 0, "Redirect Message (NDP)", "" },
+
+ { 138, 0, "Router Renumbering", "Router Renumbering Command" },
+ { 138, 1, "Router Renumbering", "Router Renumbering Result" },
+ { 138, 255, "Router Renumbering", "Sequence Number Reset" },
+
+ { 139, 0, "ICMP Node Information Query", "The Data field contains an IPv6 address which is the Subject of this Query." },
+ { 139, 1, "ICMP Node Information Query", "The Data field contains a name which is the Subject of this Query, or is empty, as in the case of a NOOP." },
+ { 139, 2, "ICMP Node Information Query", "The Data field contains an IPv4 address which is the Subject of this Query." },
+
+ { 140, 0, "ICMP Node Information Response", "A successful reply. The Reply Data field may or may not be empty." },
+ { 140, 1, "ICMP Node Information Response", "The Responder refuses to supply the answer. The Reply Data field will be empty." },
+ { 140, 2, "ICMP Node Information Response", "The Qtype of the Query is unknown to the Responder. The Reply Data field will be empty." },
+
+ { 141, 0, "Inverse Neighbor Discovery Solicitation Message", "" },
+
+ { 142, 0, "Inverse Neighbor Discovery Advertisement Message", "" },
+
+ { 143, 0, "Multicast Listener Discovery (MLDv2) reports (RFC 3810)", "" },
+
+ { 144, 0, "Home Agent Address Discovery Request Message", "" },
+
+ { 145, 0, "Home Agent Address Discovery Reply Message", "" },
+
+ { 146, 0, "Mobile Prefix Solicitation", "" },
+
+ { 147, 0, "Mobile Prefix Advertisement", "" },
+
+ { 148, 0, "Certification Path Solicitation (SEND)", "" },
+
+ { 149, 0, "Certification Path Advertisement (SEND)", "" },
+
+ { 151, 0, "Multicast Router Advertisement (MRD)", "" },
+
+ { 152, 0, "Multicast Router Solicitation (MRD)", "" },
+
+ { 153, 0, "Multicast Router Termination (MRD)", "" },
+
+ { 200, 0, "Private experimentation", "" },
+
+ { 201, 0, "Private experimentation", "" },
+
+ { 255, 0, "Reserved for expansion of ICMPv6 informational messages", "" },
+
+ { 256, 256, "impossible combination", "impossible combination" }
+};
+
+struct icmp6msg *stricmp6(int type, int code)
+{
+ int i;
+
+ if(type > 255) return(&((struct icmp6msg) { 256, 256, "unknown", "unknown" }));
+
+ for(i = 0; icmp6msgs[i].type <= type; i++)
+ if(icmp6msgs[i].type == type && icmp6msgs[i].code == code) return(&(icmp6msgs[i]));
+
+ for(i = 0; icmp6msgs[i].type <= type; i++)
+ if(icmp6msgs[i].type == type) return(&(icmp6msgs[i]));
+
+ return(&((struct icmp6msg) { 256, 256, "unknown", "unknown" }));
+}
+
+/* EOF */