]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/linux/ipv6.h
ipv6: add knob to send unsolicited ND on link-layer address change
[karo-tx-linux.git] / include / linux / ipv6.h
index 0b94e91ed68529ef74573b4c170eb96f5afc8175..5e11905a4f0194dc9c0f19aa5b02be26748378b8 100644 (file)
@@ -1,134 +1,9 @@
 #ifndef _IPV6_H
 #define _IPV6_H
 
-#include <linux/types.h>
-#include <linux/in6.h>
-#include <asm/byteorder.h>
+#include <uapi/linux/ipv6.h>
 
-/* The latest drafts declared increase in minimal mtu up to 1280. */
-
-#define IPV6_MIN_MTU   1280
-
-/*
- *     Advanced API
- *     source interface/address selection, source routing, etc...
- *     *under construction*
- */
-
-
-struct in6_pktinfo {
-       struct in6_addr ipi6_addr;
-       int             ipi6_ifindex;
-};
-
-struct ip6_mtuinfo {
-       struct sockaddr_in6     ip6m_addr;
-       __u32                   ip6m_mtu;
-};
-
-struct in6_ifreq {
-       struct in6_addr ifr6_addr;
-       __u32           ifr6_prefixlen;
-       int             ifr6_ifindex; 
-};
-
-#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   */
-
-/*
- *     routing header
- */
-struct ipv6_rt_hdr {
-       __u8            nexthdr;
-       __u8            hdrlen;
-       __u8            type;
-       __u8            segments_left;
-
-       /*
-        *      type specific data
-        *      variable length field
-        */
-};
-
-
-struct ipv6_opt_hdr {
-       __u8            nexthdr;
-       __u8            hdrlen;
-       /* 
-        * TLV encoded option data follows.
-        */
-} __attribute__((packed));     /* required for some archs */
-
-#define ipv6_destopt_hdr ipv6_opt_hdr
-#define ipv6_hopopt_hdr  ipv6_opt_hdr
-
-#ifdef __KERNEL__
 #define ipv6_optlen(p)  (((p)->hdrlen+1) << 3)
-#endif
-
-/*
- *     routing header type 0 (used in cmsghdr struct)
- */
-
-struct rt0_hdr {
-       struct ipv6_rt_hdr      rt_hdr;
-       __u32                   reserved;
-       struct in6_addr         addr[0];
-
-#define rt0_type               rt_hdr.type
-};
-
-/*
- *     routing header type 2
- */
-
-struct rt2_hdr {
-       struct ipv6_rt_hdr      rt_hdr;
-       __u32                   reserved;
-       struct in6_addr         addr;
-
-#define rt2_type               rt_hdr.type
-};
-
-/*
- *     home address option in destination options header
- */
-
-struct ipv6_destopt_hao {
-       __u8                    type;
-       __u8                    length;
-       struct in6_addr         addr;
-} __attribute__((packed));
-
-/*
- *     IPv6 fixed header
- *
- *     BEWARE, it is incorrect. The first 4 bits of flow_lbl
- *     are glued to priority now, forming "class".
- */
-
-struct ipv6hdr {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8                    priority:4,
-                               version:4;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-       __u8                    version:4,
-                               priority:4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-       __u8                    flow_lbl[3];
-
-       __be16                  payload_len;
-       __u8                    nexthdr;
-       __u8                    hop_limit;
-
-       struct  in6_addr        saddr;
-       struct  in6_addr        daddr;
-};
-
-#ifdef __KERNEL__
 /*
  * This structure contains configuration options per IPv6 link.
  */
@@ -172,6 +47,7 @@ struct ipv6_devconf {
        __s32           disable_ipv6;
        __s32           accept_dad;
        __s32           force_tllao;
+       __s32           ndisc_notify;
        void            *sysctl;
 };
 
@@ -180,43 +56,6 @@ struct ipv6_params {
        __s32 autoconf;
 };
 extern struct ipv6_params ipv6_defaults;
-#endif
-
-/* index values for the variables in ipv6_devconf */
-enum {
-       DEVCONF_FORWARDING = 0,
-       DEVCONF_HOPLIMIT,
-       DEVCONF_MTU6,
-       DEVCONF_ACCEPT_RA,
-       DEVCONF_ACCEPT_REDIRECTS,
-       DEVCONF_AUTOCONF,
-       DEVCONF_DAD_TRANSMITS,
-       DEVCONF_RTR_SOLICITS,
-       DEVCONF_RTR_SOLICIT_INTERVAL,
-       DEVCONF_RTR_SOLICIT_DELAY,
-       DEVCONF_USE_TEMPADDR,
-       DEVCONF_TEMP_VALID_LFT,
-       DEVCONF_TEMP_PREFERED_LFT,
-       DEVCONF_REGEN_MAX_RETRY,
-       DEVCONF_MAX_DESYNC_FACTOR,
-       DEVCONF_MAX_ADDRESSES,
-       DEVCONF_FORCE_MLD_VERSION,
-       DEVCONF_ACCEPT_RA_DEFRTR,
-       DEVCONF_ACCEPT_RA_PINFO,
-       DEVCONF_ACCEPT_RA_RTR_PREF,
-       DEVCONF_RTR_PROBE_INTERVAL,
-       DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
-       DEVCONF_PROXY_NDP,
-       DEVCONF_OPTIMISTIC_DAD,
-       DEVCONF_ACCEPT_SOURCE_ROUTE,
-       DEVCONF_MC_FORWARDING,
-       DEVCONF_DISABLE_IPV6,
-       DEVCONF_ACCEPT_DAD,
-       DEVCONF_FORCE_TLLAO,
-       DEVCONF_MAX
-};
-
-#ifdef __KERNEL__
 #include <linux/icmpv6.h>
 #include <linux/tcp.h>
 #include <linux/udp.h>
@@ -541,6 +380,4 @@ static inline struct raw6_sock *raw6_sk(const struct sock *sk)
         (ipv6_addr_equal(&inet6_twsk(__sk)->tw_v6_rcv_saddr, (__daddr))) && \
         (!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif))))
 
-#endif /* __KERNEL__ */
-
 #endif /* _IPV6_H */