Linux Audio

Check our new training course

Loading...
#ifndef _LINUX_ICMPV6_H
#define _LINUX_ICMPV6_H

#include <asm/byteorder.h>

struct icmpv6hdr {

	__u8		type;
	__u8		code;
	__u16		checksum;


	union {
		struct icmpv6_echo {
			__u16		identifier;
			__u16		sequence;
		} u_echo;
		__u32			pointer;
		__u32			mtu;
		__u32			unused;

                struct icmpv6_nd_advt {
#if defined(__LITTLE_ENDIAN_BITFIELD)
                        __u32		reserved:5,
                        		override:1,
                        		solicited:1,
                        		router:1,
					reserved2:24;
#elif defined(__BIG_ENDIAN_BITFIELD)
                        __u32		router:1,
					solicited:1,
                        		override:1,
                        		reserved:29;
#else
#error	"Please fix <asm/byteorder.h>"
#endif						
                } u_nd_advt;

                struct icmpv6_nd_ra {
			__u8		hop_limit;
#if defined(__LITTLE_ENDIAN_BITFIELD)
			__u8		reserved:6,
					other:1,
					managed:1;

#elif defined(__BIG_ENDIAN_BITFIELD)
			__u8		managed:1,
					other:1,
					reserved:6;
#else
#error	"Please fix <asm/byteorder.h>"
#endif
			__u16		rt_lifetime;
                } u_nd_ra;

	} u;

#define icmp6_identifier	u.u_echo.identifier
#define icmp6_sequence		u.u_echo.sequence
#define icmp6_pointer		u.pointer
#define icmp6_mtu		u.mtu
#define icmp6_unused		u.unused
#define icmp6_router		u.u_nd_advt.router
#define icmp6_solicited		u.u_nd_advt.solicited
#define icmp6_override		u.u_nd_advt.override
#define icmp6_ndiscreserved	u.u_nd_advt.reserved
#define icmp6_hop_limit		u.u_nd_ra.hop_limit
#define icmp6_addrconf_managed	u.u_nd_ra.managed
#define icmp6_addrconf_other	u.u_nd_ra.other
#define icmp6_rt_lifetime	u.u_nd_ra.rt_lifetime
};


#define ICMPV6_DEST_UNREACH		1
#define ICMPV6_PKT_TOOBIG		2
#define ICMPV6_TIME_EXCEEDED		3
#define ICMPV6_PARAMETER_PROB		4

#define ICMPV6_ECHO_REQUEST		128
#define ICMPV6_ECHO_REPLY		129
#define ICMPV6_MEMBERSHIP_QUERY		130
#define ICMPV6_MEMBERSHIP_REPORT       	131
#define ICMPV6_MEMBERSHIP_REDUCTION    	132

/*
 *	Codes for Destination Unreachable
 */
#define ICMPV6_NOROUTE			0
#define ICMPV6_ADM_PROHIBITED		1
#define ICMPV6_NOT_NEIGHBOUR		2
#define ICMPV6_ADDR_UNREACH		3
#define ICMPV6_PORT_UNREACH		4

/*
 *	Codes for Time Exceeded
 */
#define ICMPV6_EXC_HOPLIMIT		0
#define ICMPV6_EXC_FRAGTIME		1

/*
 *	Codes for Parameter Problem
 */
#define ICMPV6_HDR_FIELD		0
#define ICMPV6_UNK_NEXTHDR		1
#define ICMPV6_UNK_OPTION		2

/*
 *	constants for (set|get)sockopt
 */

#define ICMPV6_FILTER			1

/*
 *	ICMPV6 filter
 */

#define ICMPV6_FILTER_BLOCK		1
#define ICMPV6_FILTER_PASS		2
#define ICMPV6_FILTER_BLOCKOTHERS	3
#define ICMPV6_FILTER_PASSONLY		4

struct icmp6_filter {
	__u32		data[8];
};

#ifdef __KERNEL__

#include <linux/netdevice.h>
#include <linux/skbuff.h>


extern void				icmpv6_send(struct sk_buff *skb,
						    int type, int code,
						    __u32 info, 
						    struct device *dev);

extern void				icmpv6_init(struct net_proto_family *ops);
extern int				icmpv6_err_convert(int type, int code,
							   int *err);
#endif

#endif
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy