Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[pandora-kernel.git] / include / linux / icmpv6.h
index ba45e6b..b4f6c29 100644 (file)
 #ifndef _LINUX_ICMPV6_H
 #define _LINUX_ICMPV6_H
 
-#include <linux/types.h>
-#include <asm/byteorder.h>
-
-struct icmp6hdr {
-
-       __u8            icmp6_type;
-       __u8            icmp6_code;
-       __sum16         icmp6_cksum;
-
-
-       union {
-               __be32                  un_data32[1];
-               __be16                  un_data16[2];
-               __u8                    un_data8[4];
-
-               struct icmpv6_echo {
-                       __be16          identifier;
-                       __be16          sequence;
-               } u_echo;
-
-                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:3,
-                                       router_pref:2,
-                                       home_agent:1,
-                                       other:1,
-                                       managed:1;
-
-#elif defined(__BIG_ENDIAN_BITFIELD)
-                       __u8            managed:1,
-                                       other:1,
-                                       home_agent:1,
-                                       router_pref:2,
-                                       reserved:3;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-                       __be16          rt_lifetime;
-                } u_nd_ra;
-
-       } icmp6_dataun;
-
-#define icmp6_identifier       icmp6_dataun.u_echo.identifier
-#define icmp6_sequence         icmp6_dataun.u_echo.sequence
-#define icmp6_pointer          icmp6_dataun.un_data32[0]
-#define icmp6_mtu              icmp6_dataun.un_data32[0]
-#define icmp6_unused           icmp6_dataun.un_data32[0]
-#define icmp6_maxdelay         icmp6_dataun.un_data16[0]
-#define icmp6_router           icmp6_dataun.u_nd_advt.router
-#define icmp6_solicited                icmp6_dataun.u_nd_advt.solicited
-#define icmp6_override         icmp6_dataun.u_nd_advt.override
-#define icmp6_ndiscreserved    icmp6_dataun.u_nd_advt.reserved
-#define icmp6_hop_limit                icmp6_dataun.u_nd_ra.hop_limit
-#define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
-#define icmp6_addrconf_other   icmp6_dataun.u_nd_ra.other
-#define icmp6_rt_lifetime      icmp6_dataun.u_nd_ra.rt_lifetime
-#define icmp6_router_pref      icmp6_dataun.u_nd_ra.router_pref
-};
-
-#ifdef __KERNEL__
 #include <linux/skbuff.h>
+#include <uapi/linux/icmpv6.h>
 
 static inline struct icmp6hdr *icmp6_hdr(const struct sk_buff *skb)
 {
        return (struct icmp6hdr *)skb_transport_header(skb);
 }
-#endif
-
-#define ICMPV6_ROUTER_PREF_LOW         0x3
-#define ICMPV6_ROUTER_PREF_MEDIUM      0x0
-#define ICMPV6_ROUTER_PREF_HIGH                0x1
-#define ICMPV6_ROUTER_PREF_INVALID     0x2
-
-#define ICMPV6_DEST_UNREACH            1
-#define ICMPV6_PKT_TOOBIG              2
-#define ICMPV6_TIME_EXCEED             3
-#define ICMPV6_PARAMPROB               4
-
-#define ICMPV6_INFOMSG_MASK            0x80
-
-#define ICMPV6_ECHO_REQUEST            128
-#define ICMPV6_ECHO_REPLY              129
-#define ICMPV6_MGM_QUERY               130
-#define ICMPV6_MGM_REPORT              131
-#define ICMPV6_MGM_REDUCTION           132
-
-#define ICMPV6_NI_QUERY                        139
-#define ICMPV6_NI_REPLY                        140
-
-#define ICMPV6_MLD2_REPORT             143
-
-#define ICMPV6_DHAAD_REQUEST           144
-#define ICMPV6_DHAAD_REPLY             145
-#define ICMPV6_MOBILE_PREFIX_SOL       146
-#define ICMPV6_MOBILE_PREFIX_ADV       147
-
-/*
- *     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];
-};
-
-/*
- *     Definitions for MLDv2
- */
-#define MLD2_MODE_IS_INCLUDE   1
-#define MLD2_MODE_IS_EXCLUDE   2
-#define MLD2_CHANGE_TO_INCLUDE 3
-#define MLD2_CHANGE_TO_EXCLUDE 4
-#define MLD2_ALLOW_NEW_SOURCES 5
-#define MLD2_BLOCK_OLD_SOURCES 6
-
-#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
-
-#ifdef __KERNEL__
 
 #include <linux/netdevice.h>
 
@@ -192,5 +31,3 @@ extern void                          icmpv6_flow_init(struct sock *sk,
                                                         const struct in6_addr *daddr,
                                                         int oif);
 #endif
-
-#endif