summaryrefslogtreecommitdiff
path: root/sys/netinet6/ipv6_var.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet6/ipv6_var.h')
-rw-r--r--sys/netinet6/ipv6_var.h356
1 files changed, 0 insertions, 356 deletions
diff --git a/sys/netinet6/ipv6_var.h b/sys/netinet6/ipv6_var.h
deleted file mode 100644
index 0ccce023012..00000000000
--- a/sys/netinet6/ipv6_var.h
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
-%%% copyright-nrl-95
-This software is Copyright 1995-1998 by Randall Atkinson, Ronald Lee,
-Daniel McDonald, Bao Phan, and Chris Winters. All Rights Reserved. All
-rights under this copyright have been assigned to the US Naval Research
-Laboratory (NRL). The NRL Copyright Notice and License Agreement Version
-1.1 (January 17, 1995) applies to this software.
-You should have received a copy of the license with this software. If you
-didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>.
-
-*/
-#ifndef _NETINET6_IPV6_VAR_H
-#define _NETINET6_IPV6_VAR_H 1
-
-#include <netinet6/in6.h>
-
-/*
- * IPv6 multicast "options". Session state for multicast, including
- * weird per-session multicast things.
- */
-
-struct ipv6_moptions
-{
- struct ifnet *i6mo_multicast_ifp; /* ifp for outgoing multicasts */
- u_char i6mo_multicast_ttl; /* TTL for outgoing multicasts.
- Does this matter in IPv6? */
- u_char i6mo_multicast_loop; /* 1 => hear sends if a member */
- u_short i6mo_num_memberships; /* no. memberships this socket */
- struct in6_multi *i6mo_membership[IN6_MAX_MEMBERSHIPS];
-};
-
-/*
- * IPv6 stats.
- */
-
-#if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199802
-#define _IPV6STAT_TYPE u_quad_t
-#else /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199802 */
-#define _IPV6STAT_TYPE u_long
-#endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199802 */
-
-struct ipv6stat {
- _IPV6STAT_TYPE ips_total; /* total packets received */
- _IPV6STAT_TYPE ips_tooshort; /* packet too short */
- _IPV6STAT_TYPE ips_toosmall; /* not enough data */
- _IPV6STAT_TYPE ips_fragments; /* fragments received */
- _IPV6STAT_TYPE ips_fragdropped; /* frags dropped (dups, out of space) */
- _IPV6STAT_TYPE ips_fragtimeout; /* fragments timed out */
- _IPV6STAT_TYPE ips_forward; /* packets forwarded */
- _IPV6STAT_TYPE ips_cantforward; /* packets rcvd for unreachable dest */
- _IPV6STAT_TYPE ips_redirectsent; /* packets forwarded on same net */
- _IPV6STAT_TYPE ips_noproto; /* unknown or unsupported protocol */
- _IPV6STAT_TYPE ips_delivered; /* datagrams delivered to upper level*/
- _IPV6STAT_TYPE ips_localout; /* total ip packets generated here */
- _IPV6STAT_TYPE ips_odropped; /* lost packets due to nobufs, etc. */
- _IPV6STAT_TYPE ips_reassembled; /* total packets reassembled ok */
- _IPV6STAT_TYPE ips_fragmented; /* datagrams sucessfully fragmented */
- _IPV6STAT_TYPE ips_ofragments; /* output fragments created */
- _IPV6STAT_TYPE ips_cantfrag; /* don't fragment flag was set, etc. */
- _IPV6STAT_TYPE ips_badoptions; /* error in option processing */
- _IPV6STAT_TYPE ips_noroute; /* packets discarded due to no route */
- _IPV6STAT_TYPE ips_badvers; /* IPv6 version != 6 */
- _IPV6STAT_TYPE ips_rawout; /* total raw ip packets generated */
-};
-
-#if defined(_KERNEL) || defined(KERNEL)
-/*
- * The IPv6 fragment queue entry structure.
- * Notes:
- * Nodes are stored in ttl order.
- * prefix comes from whichever packet gets here first.
- * data contains a chain of chains of mbufs (m_next down a chain, m_nextpkt
- * chaining chains together) where the chains are ordered by assembly
- * position. When two chains are contiguous for reassembly, they are
- * combined and the frag header disappears.
- * The structure is deliberately sized so MALLOC will round up on the order
- * of much less than the total size instead of doubling the size.
- */
-
-struct ipv6_fragment
-{
- struct ipv6_fragment *next; /* Next fragment chain */
- struct mbuf *prefix; /* Headers before frag header(s) */
- struct mbuf *data; /* Frag headers + whatever data */
- u_char ttl; /* Fragment chain TTL. */
- u_char flags; /* Bit 0 indicates got end of chain */
-};
-
-/*
- * Structures and definitions for discovery mechanisms in IPv6.
- */
-
-/*
- * Neighbor cache:
- *
- * Number of unanswered probes is in discq.
- * "Time of next event" will be in rt->rt_rmx.rmx_expire
- * (rmx_expire will actually be quite overloaded, actually.)
- * Status REACHABLE will be dq_unanswered < 0
- * Status PROBE will be dq_unanswered >= 0
- * Status INCOMPLETE will be link addr length of 0 if held,
- * or deleted if not held.
- *
- * If held, but INCOMPLETE fails set RTF_REJECT and make sure
- * IPv6 and HLP's know how to deal with RTF_REJECT being set.
- */
-
-struct discq /* Similar to v4's llinfo_arp, discovery's "neighbor entry". */
-{
- struct discq *dq_next,*dq_prev; /* For {ins,rem}que(). */
- struct rtentry *dq_rt; /* Back pointer to routing entry for
- an address that may be dead. */
- struct mbuf *dq_queue; /* Queue of outgoing messages. */
- int dq_unanswered; /* Number of unanswered probes. */
-};
-
-#if !defined(_BSDI_VERSION) || (_BSDI_VERSION < 199802)
-/* Routing flag redefinitions */
-#define RTF_ISAROUTER RTF_PROTO2 /* Neighbor is a router. */
-#define RTF_DEFAULT RTF_PROTO1 /* Default route. */
-#endif /* !defined(_BSDI_VERSION) || (_BSDI_VERSION < 199802) */
-
-/*
- * These should be configurable parameters, see ipv6_discovery.c.
- * All units are in comments besides constants.
- */
-
-#define MAX_INITIAL_RTR_ADVERT_INTERVAL 16 /* seconds */
-#define MAX_INITIAL_RTR_ADVERTISEMENTS 3 /* transmissions */
-#define MAX_RTR_RESPONSE_DELAY 2 /* seconds */
-
-#define MAX_RTR_SOLICITATION_DELAY 1 /* second */
-#define RTR_SOLICITATION_INTERVAL 3 /* seconds */
-#define MAX_RTR_SOLICITATIONS 3 /* transmissions */
-
-#define MAX_MULTICAST_SOLICIT 3 /* transmissions */
-#define MAX_UNICAST_SOLICIT 3 /* transmissions */
-#define MAX_ANYCAST_DELAY_TIME 1 /* seconds */
-#define MAX_NEIGHBOR_ADVERTISEMENTS 3 /* transmissions */
-#define MIN_NEIGHBOR_ADVERT_INTERVAL 16 /* seconds */
-#define REACHABLE_TIME 30 /* seconds */
-#define RETRANS_TIMER 3 /* seconds */
-#define DELAY_FIRST_PROBE_TIME 3 /* seconds */
-/* Need to somehow define random factors. */
-
-#define NEXTHOP_CLEAN_INTERVAL 600 /* seconds */
-#define REJECT_TIMER 20 /* seconds */
-
-/*
- * Child of a router or tunnel. Is a "meta-entry" for garbage collection.
- */
-
-struct v6child
-{
- struct v6child *v6c_next,*v6c_prev; /* For {ins,rem}que() */
- struct v6router *v6c_parent; /* Parent router. I'm null if
- I'm the router, or a tunnel
- child. */
- struct rtentry *v6c_route; /* Next-hop cache entry. I won't
- be holding it, but I'm attached
- to it, like discq is to neighbor
- cache entries. */
-};
-
-/*
- * Default router list entry. Should be inserted
- * in priority order. Will also have entries for non-
- * default routers, because I may be a router myself.
- */
-
-struct v6router
-{
- struct v6router *v6r_next,*v6r_prev; /* For {ins,rem}que() */
- struct rtentry *v6r_rt; /* Route for this. Could be neighbor,
- could be tunnel. */
- struct v6child v6r_children; /* Children of this router. */
-
- /* Metric information? */
- uint32_t v6r_expire; /* Expiration time. */
-};
-#define V6R_SIN6(v6r) ((struct sockaddr_in6 *)rt_key((v6r)->v6r_rt))
-
-/*
- * Flags for "flags" argument in ipv6_output().
- */
-
-#define IPV6_FORWARDING 0x1 /* Most of IPv6 header exists? */
-#define IPV6_RAWOUTPUT 0x2 /* Raw IPv6 packet! */
-#define IPV6_ROUTETOIF SO_DONTROUTE /* Include sys/socket.h... */
-
-void ipv6_init __P((void));
-void ipv6_drain __P((void));
-void ipv6_slowtimo __P((void));
-int ipv6_sysctl __P((int *, uint, void *, size_t *, void *, size_t));
-struct route6;
-
-#if __FreeBSD__
-int ipv6_ctloutput __P((struct socket *, struct sockopt *));
-int ripv6_ctloutput __P((struct socket *, struct sockopt *));
-#else /* __FreeBSD__ */
-int ipv6_ctloutput __P((int, struct socket *,int,int, struct mbuf **));
-int ripv6_ctloutput __P((int, struct socket *, int, int, struct mbuf **));
-#endif /* __FreeBSD__ */
-void ripv6_init __P((void));
-#if __OpenBSD__
-void ripv6_input __P((struct mbuf *, ...));
-int ripv6_output __P((struct mbuf *, ...));
-#else /* __OpenBSD__ */
-void ripv6_input __P((struct mbuf *, int));
-int ripv6_output __P((struct mbuf *, struct socket *, struct in6_addr *, struct mbuf *));
-#endif /* __OpenBSD__ */
-
-#if __NetBSD__ || __FreeBSD__
-int ripv6_usrreq_send(struct socket *, int, struct mbuf *, struct sockaddr *,
- struct mbuf *, struct proc *);
-#else /* __NetBSD__ || __FreeBSD__ */
-int ripv6_usrreq_send(struct socket *, int, struct mbuf *, struct sockaddr *,
- struct mbuf *);
-#endif /* __NetBSD__ || __FreeBSD__ */
-
-#if __FreeBSD__
-int ripv6_usrreq_abort(struct socket *);
-int ripv6_usrreq_attach(struct socket *, int , struct proc *);
-int ripv6_usrreq_bind(struct socket *, struct sockaddr *, struct proc *);
-int ripv6_usrreq_connect(struct socket *, struct sockaddr *, struct proc *);
-int ripv6_usrreq_control(struct socket *, u_long, caddr_t, struct ifnet *,
- struct proc *);
-int ripv6_usrreq_detach(struct socket *);
-int ripv6_usrreq_peeraddr(struct socket *, struct sockaddr **);
-int ripv6_usrreq_sense(struct socket *, struct stat *);
-int ripv6_usrreq_shutdown(struct socket *);
-int ripv6_usrreq_sockaddr(struct socket *, struct sockaddr **);
-#else /* __FreeBSD__ */
-#if __NetBSD__
-int ripv6_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *,
- struct mbuf *, struct proc *));
-#else /* __NetBSD__ */
-int ripv6_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *,
- struct mbuf *));
-#endif /* __NetBSD__ */
-#endif /* __FreeBSD__ */
-
-#if __OpenBSD__
-void ipv6_input __P((struct mbuf *, ...));
-int ipv6_output __P((struct mbuf *, ...));
-#else /* __OpenBSD__ */
-void ipv6_input __P((struct mbuf *, int));
-int ipv6_output __P((struct mbuf *, struct route6 *, int, struct ipv6_moptions *, struct ifnet *, struct socket *));
-#endif /* __OpenBSD__ */
-void ipv6_reasm __P((struct mbuf *, int));
-void ipv6_hop __P((struct mbuf *, int));
-
-#if __FreeBSD__
-int in6_control __P((struct socket *,int, caddr_t, struct ifnet *,int, struct proc *));
-#else /* __FreeBSD__ */
-#if __NetBSD__
-int in6_control __P((struct socket *,u_long, caddr_t, struct ifnet *,int, struct proc *));
-#else /* __NetBSD__ */
-int in6_control __P((struct socket *,int, caddr_t, struct ifnet *,int));
-#endif /* __NetBSD__ */
-#endif /* __FreeBSD__ */
-void ipv6_stripoptions __P((struct mbuf *, int));
-struct in6_multi *in6_addmulti __P((struct in6_addr *,struct ifnet *));
-void in6_delmulti __P((struct in6_multi *));
-
-#if __FreeBSD__
-/* ripv6_usrreq and ipv6_icmp_usrreq functions */
-extern struct pr_usrreqs ripv6_usrreqs;
-extern struct pr_usrreqs ipv6_icmp_usrreqs;
-
-extern int ripv6_usr_attach(struct socket *, int , struct proc *);
-extern int ripv6_usr_disconnect(struct socket *);
-extern int ripv6_usr_abort(struct socket *);
-extern int ripv6_usr_detach(struct socket *);
-extern int ripv6_usr_bind(struct socket *, struct sockaddr *, struct proc *);
-extern int ripv6_usr_connect(struct socket *, struct sockaddr *, struct proc *);
-extern int ripv6_usr_shutdown(struct socket *);
-extern int ripv6_usr_send(struct socket *, int, struct mbuf *,
- struct sockaddr *, struct mbuf *, struct proc *);
-extern int ripv6_usr_control(struct socket *, int, caddr_t,
- struct ifnet *, struct proc *);
-extern int ripv6_usr_sense(struct socket *, struct stat *);
-extern int ripv6_usr_sockaddr(struct socket *, struct sockaddr **);
-extern int ripv6_usr_peeraddr(struct socket *, struct sockaddr **);
-#endif /* __FreeBSD__ */
-
-extern int ipv6_icmp_send(struct socket *, int, struct mbuf *,
- struct sockaddr *, struct mbuf *, struct proc *);
-
-#if __OpenBSD__
-#ifdef NRL_IPSEC
-void *ipv6_trans_ctlinput __P((int, struct sockaddr *, void *, struct mbuf *));
-#else /* NRL_IPSEC */
-void *ipv6_trans_ctlinput __P((int, struct sockaddr *, void *));
-#endif /* NRL_IPSEC */
-#else /* __OpenBSD__ */
-struct ip;
-#ifdef NRL_IPSEC
-void ipv6_trans_ctlinput __P((int, struct sockaddr *, struct ip *, struct mbuf *));
-#else /* NRL_IPSEC */
-void ipv6_trans_ctlinput __P((int, struct sockaddr *, struct ip *));
-#endif /* NRL_IPSEC */
-#endif /* __OpenBSD__ */
-
-/* These might belong in in_pcb.h */
-struct inpcb;
-#if __FreeBSD__
-/*
- * FreeBSD, having done away with the *_usrreq() functions no longer needs to
- * pass mbufs to these functions. Thus they pass in sockaddrs instead.
- */
-int in6_pcbbind(struct inpcb *, struct sockaddr *);
-int in6_pcbconnect(struct inpcb *, struct sockaddr *);
-int in6_setsockaddr(struct inpcb *, struct sockaddr **);
-int in6_setpeeraddr(struct inpcb *, struct sockaddr **);
-#else /* __FreeBSD__ */
-int in6_pcbbind(struct inpcb *, struct mbuf *);
-int in6_pcbconnect(struct inpcb *, struct mbuf *);
-int in6_setsockaddr(struct inpcb *, struct mbuf *);
-int in6_setpeeraddr(struct inpcb *, struct mbuf *);
-#endif /* __FreeBSD__ */
-void ipv6_onlink_query(struct sockaddr_in6 *);
-int ipv6_verify_onlink(struct sockaddr_in6 *);
-
-#if __FreeBSD__
-struct inpcbhead; /* XXX? Forward declaration needed. */
-#define __IN6_PCBNOTIFY_FIRSTARG struct inpcbhead *
-#endif /* __FreeBSD__ */
-#if __NetBSD__ || __OpenBSD__
-struct inpcbtable;
-#define __IN6_PCBNOTIFY_FIRSTARG struct inpcbtable *
-#endif /* __NetBSD__ || __OpenBSD__ */
-#if __bsdi__
-struct inpcb;
-#define __IN6_PCBNOTIFY_FIRSTARG struct inpcb *
-#endif /* __bsdi__ */
-
-#if (!__OpenBSD__ && defined(IPSEC)) || (__OpenBSD__ && defined(NRL_IPSEC))
-int in6_pcbnotify __P((__IN6_PCBNOTIFY_FIRSTARG, struct sockaddr *, uint,
- struct in6_addr *, uint, int, void (*)(struct inpcb *,
- int), struct mbuf *, int));
-#else /* (!__OpenBSD__ && defined(IPSEC)) || (__OpenBSD__ && defined(NRL_IPSEC)) */
-int in6_pcbnotify __P((__IN6_PCBNOTIFY_FIRSTARG, struct sockaddr *, uint,
- struct in6_addr *, uint, int, void (*)(struct inpcb *,
- int)));
-#endif /* (!__OpenBSD__ && defined(IPSEC)) || (__OpenBSD__ && defined(NRL_IPSEC)) */
-
-#undef __IN6_PCBNOTIFY_FIRSTARG
-
-void ipv6_freemoptions __P((struct ipv6_moptions *));
-
-int ipv6_controltoheader(struct mbuf **m, struct mbuf *control, struct ifnet **forceifp, int *);
-struct mbuf *ipv6_headertocontrol(struct mbuf *m, int extra, int inp_flags);
-#endif /* defined(_KERNEL) || defined(KERNEL) */
-
-#endif /* _NETINET6_IPV6_VAR_H */