- Variable allocation datatype
void ICMP6_FILTER_SETPASSALL (struct icmp6_filter *);
void ICMP6_FILTER_SETBLOCKALL (struct icmp6_filter *);
void ICMP6_FILTER_SETPASS (int, struct icmp6_filter *);
void ICMP6_FILTER_SETBLOCK (int, struct icmp6_filter *);
int ICMP6_FILTER_WILLPASS (int, const struct icmp6_filter *);
int ICMP6_FILTER_WILLBLOCK (int, const struct icmp6_filter *);
The icmp6_filter structure is similar to the fd_set datatype used with the select() function in the sockets API. The icmp6_filter structure is an opaque datatype and the application should not care how it is implemented. The application allocates a variable of this type, then passes a pointer to it. Next it passes a pointer to a variable of this type to getsockopt() and setsockopt() and operates on a variable of this type using the six macros defined below.
The SETPASSALL and SETBLOCKALL functions enable you to specify that all ICMPv6 messages are passed to the application or that all ICMPv6 messages are blocked from being passed.
The SETPASS and SETBLOCKALL functions enable you to specify that messages of a given ICMPv6 type should be passed to the application or not passed to the application (blocked).
The WILLPASS and WILLBLOCK return true or false depending whether the specified message type is passed to the application or blocked from being passed to the application by the filter pointed to by the second argument.
The pointer argument to all six icmp6_filter macros is a pointer to a filter that is modified by the first four macros and is examined by ICMP6_FILTER_SETBLOCK and ICMP6_FILTER_WILLBLOCK. The first argument, (an integer), to the ICMP6_FILTER_BLOCKALL, ICMP6_FILTER_SETPASS, ICMP6_FILTER_SETBLOCK, and ICMP6_FILTER_WILLBLOCK macros is an ICMPv6 message type, between 0 and 255.
The current filter is fetched and stored using getsockopt() and setsockopt() with a level of IPPROTO_ICMPV6 and an option name of ICMP6_FILTER.
See attributes(5) for descriptions of the following attributes: