1/*
2 * Copyright (C) 2012 by Darren Reed.
3 *
4 * See the IPFILTER.LICENCE file for details on licencing.
5 *
6 * $Id$
7 */
8#include "ipf.h"
9
10#ifndef USE_INET6
11# undef		ICMP6_ECHO_REQUEST
12# define	ICMP6_ECHO_REQUEST	0
13# undef		ICMP6_ECHO_REPLY
14# define	ICMP6_ECHO_REPLY	0
15# undef		ICMP6_NI_QUERY
16# define	ICMP6_NI_QUERY		0
17# undef		ICMP6_NI_REPLY
18# define	ICMP6_NI_REPLY		0
19# undef		ICMP6_PARAM_PROB
20# define	ICMP6_PARAM_PROB	0
21# undef		ND_ROUTER_ADVERT
22# define	ND_ROUTER_ADVERT	0
23# undef		ND_ROUTER_SOLICIT
24# define	ND_ROUTER_SOLICIT	0
25# undef		ICMP6_TIME_EXCEEDED
26# define	ICMP6_TIME_EXCEEDED	0
27# undef		ICMP6_DST_UNREACH
28# define	ICMP6_DST_UNREACH	0
29# undef		ICMP6_PACKET_TOO_BIG
30# define	ICMP6_PACKET_TOO_BIG	0
31# undef		MLD_LISTENER_QUERY
32# define	MLD_LISTENER_QUERY	0
33# undef		MLD_LISTENER_REPORT
34# define	MLD_LISTENER_REPORT	0
35# undef		MLD_LISTENER_DONE
36# define	MLD_LISTENER_DONE	0
37# undef		ICMP6_MEMBERSHIP_QUERY
38# define	ICMP6_MEMBERSHIP_QUERY	0
39# undef		ICMP6_MEMBERSHIP_REPORT
40# define	ICMP6_MEMBERSHIP_REPORT	0
41# undef		ICMP6_MEMBERSHIP_REDUCTION
42# define	ICMP6_MEMBERSHIP_REDUCTION	0
43# undef		ND_NEIGHBOR_ADVERT
44# define	ND_NEIGHBOR_ADVERT	0
45# undef		ND_NEIGHBOR_SOLICIT
46# define	ND_NEIGHBOR_SOLICIT	0
47# undef		ICMP6_ROUTER_RENUMBERING
48# define	ICMP6_ROUTER_RENUMBERING	0
49# undef		ICMP6_WRUREQUEST
50# define	ICMP6_WRUREQUEST	0
51# undef		ICMP6_WRUREPLY
52# define	ICMP6_WRUREPLY		0
53# undef		ICMP6_FQDN_QUERY
54# define	ICMP6_FQDN_QUERY	0
55# undef		ICMP6_FQDN_REPLY
56# define	ICMP6_FQDN_REPLY	0
57#else
58# if !defined(MLD_LISTENER_QUERY)
59#  define	MLD_LISTENER_QUERY	130
60# endif
61# if !defined(MLD_LISTENER_REPORT)
62#  define	MLD_LISTENER_REPORT	131
63# endif
64# if !defined(MLD_LISTENER_DONE)
65#  define	MLD_LISTENER_DONE	132
66# endif
67# if defined(MLD_LISTENER_REDUCTION) && !defined(MLD_LISTENER_DONE)
68#  define	MLD_LISTENER_DONE	MLD_LISTENER_REDUCTION
69# endif
70#endif
71
72icmptype_t icmptypelist[] = {
73	{ "echo",	ICMP_ECHO,		ICMP6_ECHO_REQUEST },
74	{ "echorep",	ICMP_ECHOREPLY,		ICMP6_ECHO_REPLY },
75	{ "fqdnquery",	-1,			ICMP6_FQDN_QUERY },
76	{ "fqdnreply",	-1,			ICMP6_FQDN_REPLY },
77	{ "infoqry",	-1,			ICMP6_NI_QUERY },
78	{ "inforeq",	ICMP_IREQ,		ICMP6_NI_QUERY },
79	{ "inforep",	ICMP_IREQREPLY,		ICMP6_NI_REPLY },
80	{ "listendone",	-1,			MLD_LISTENER_DONE },
81	{ "listenqry",	-1,			MLD_LISTENER_QUERY },
82	{ "listenrep",	-1,			MLD_LISTENER_REPORT },
83	{ "maskrep",	ICMP_MASKREPLY,		-1 },
84	{ "maskreq",	ICMP_MASKREQ,		-1 },
85	{ "memberqry",	-1,			ICMP6_MEMBERSHIP_QUERY },
86	{ "memberred",	-1,			ICMP6_MEMBERSHIP_REDUCTION },
87	{ "memberreply",-1,			ICMP6_MEMBERSHIP_REPORT },
88	{ "neighadvert",	-1,		ND_NEIGHBOR_ADVERT },
89	{ "neighborsol",	-1,		ND_NEIGHBOR_SOLICIT },
90	{ "neighborsolicit",	-1,		ND_NEIGHBOR_SOLICIT },
91	{ "paramprob",	ICMP_PARAMPROB,		ICMP6_PARAM_PROB },
92	{ "redir",	ICMP_REDIRECT,		ND_REDIRECT },
93	{ "renumber",	-1,			ICMP6_ROUTER_RENUMBERING },
94	{ "routerad",	ICMP_ROUTERADVERT,	ND_ROUTER_ADVERT },
95	{ "routeradvert",ICMP_ROUTERADVERT,	ND_ROUTER_ADVERT },
96	{ "routersol",	ICMP_ROUTERSOLICIT,	ND_ROUTER_SOLICIT },
97	{ "routersolcit",ICMP_ROUTERSOLICIT,	ND_ROUTER_SOLICIT },
98	{ "squench",	ICMP_SOURCEQUENCH,	-1 },
99	{ "timest",	ICMP_TSTAMP,		-1 },
100	{ "timestrep",	ICMP_TSTAMPREPLY,	-1 },
101	{ "timex",	ICMP_TIMXCEED,		ICMP6_TIME_EXCEEDED },
102	{ "toobig",	-1,			ICMP6_PACKET_TOO_BIG },
103	{ "unreach",	ICMP_UNREACH,		ICMP6_DST_UNREACH },
104	{ "whorep",	-1,			ICMP6_WRUREPLY },
105	{ "whoreq",	-1,			ICMP6_WRUREQUEST },
106	{ NULL,		-1,			-1 }
107};
108