]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - include/linux/ipv6.h
[IPV6]: Make IPV6_{RECV,2292}RTHDR boolean options.
[net-next-2.6.git] / include / linux / ipv6.h
index 4f435c59de06775b5a1a5ba831ca3f0089006b80..97983dc9df131ada19207e54a0371d700912c41c 100644 (file)
@@ -27,8 +27,8 @@ struct in6_ifreq {
        int             ifr6_ifindex; 
 };
 
-#define IPV6_SRCRT_STRICT      0x01    /* this hop must be a neighbor  */
-#define IPV6_SRCRT_TYPE_0      0       /* IPv6 type 0 Routing Header   */
+#define IPV6_SRCRT_STRICT      0x01    /* Deprecated; will be removed */
+#define IPV6_SRCRT_TYPE_0      0       /* Deprecated; will be removed */
 #define IPV6_SRCRT_TYPE_2      2       /* IPv6 type 2 Routing Header   */
 
 /*
@@ -177,6 +177,10 @@ struct ipv6_devconf {
 #endif
 #endif
        __s32           proxy_ndp;
+       __s32           accept_source_route;
+#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
+       __s32           optimistic_dad;
+#endif
        void            *sysctl;
 };
 
@@ -205,6 +209,8 @@ enum {
        DEVCONF_RTR_PROBE_INTERVAL,
        DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
        DEVCONF_PROXY_NDP,
+       DEVCONF_OPTIMISTIC_DAD,
+       DEVCONF_ACCEPT_SOURCE_ROUTE,
        DEVCONF_MAX
 };
 
@@ -216,6 +222,16 @@ enum {
 #include <net/if_inet6.h>       /* struct ipv6_mc_socklist */
 #include <net/inet_sock.h>
 
+static inline struct ipv6hdr *ipv6_hdr(const struct sk_buff *skb)
+{
+       return (struct ipv6hdr *)skb_network_header(skb);
+}
+
+static inline struct ipv6hdr *ipipv6_hdr(const struct sk_buff *skb)
+{
+       return (struct ipv6hdr *)skb_transport_header(skb);
+}
+
 /* 
    This structure contains results of exthdrs parsing
    as offsets from skb->nh.
@@ -231,7 +247,7 @@ struct inet6_skb_parm {
        __u16                   lastopt;
        __u32                   nhoff;
        __u16                   flags;
-#ifdef CONFIG_IPV6_MIP6
+#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
        __u16                   dsthao;
 #endif
 
@@ -274,7 +290,7 @@ struct ipv6_pinfo {
        struct in6_addr         *saddr_cache;
 #endif
 
-       __u32                   flow_label;
+       __be32                  flow_label;
        __u32                   frag_size;
        __s16                   hop_limit;
        __s16                   mcast_hops;
@@ -283,8 +299,8 @@ struct ipv6_pinfo {
        /* pktoption flags */
        union {
                struct {
-                       __u16   srcrt:2,
-                               osrcrt:2,
+                       __u16   srcrt:1,
+                               osrcrt:1,
                                rxinfo:1,
                                rxoinfo:1,
                                rxhlim:1,