aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/in_var.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/in_var.h')
-rw-r--r--sys/netinet/in_var.h81
1 files changed, 76 insertions, 5 deletions
diff --git a/sys/netinet/in_var.h b/sys/netinet/in_var.h
index 42c93fbac3e4..9e03a296adb4 100644
--- a/sys/netinet/in_var.h
+++ b/sys/netinet/in_var.h
@@ -31,9 +31,12 @@
* SUCH DAMAGE.
*
* from: @(#)in_var.h 7.6 (Berkeley) 6/28/90
- * $Id: in_var.h,v 1.2 1993/10/16 18:26:07 rgrimes Exp $
+ * $Id: in_var.h,v 1.6 1993/12/19 21:43:26 wollman Exp $
*/
+#ifndef _NETINET_IN_VAR_H_
+#define _NETINET_IN_VAR_H_ 1
+
/*
* Interface address, Internet version. One of these structures
* is allocated for each interface with an Internet address.
@@ -70,8 +73,76 @@ struct in_aliasreq {
*/
#define IA_SIN(ia) (&(((struct in_ifaddr *)(ia))->ia_addr))
+struct ip; /* forward declaration */
+typedef void in_input_t(struct mbuf *, int);
+/*
+ * Grrr... `netstat' expects to be able to include this file
+ * with KERNEL defined, to get all sorts of interesting structures,
+ * but without having to get all these prototypes. (Well, it's not
+ * really netstat's fault, but this should get fixed when KERNEL gets
+ * changed to _KERNEL.)
+ */
+struct socket;
+typedef int in_output_t(struct mbuf *, struct socket *);
+typedef void in_ctlinput_t(int, struct sockaddr *, struct ip *);
+typedef int in_ctloutput_t(int, struct socket *, int, int, struct mbuf **);
+
+/*
+ * This structure is a pun for `struct protosw'. The difference is that it
+ * has appropriate interprotocol hook prototypes for the Internet family.
+ */
+struct in_protosw {
+ short pr_type; /* socket type used for */
+ struct domain *pr_domain; /* domain protocol a member of */
+ short pr_protocol; /* protocol number */
+ short pr_flags; /* see below */
+/* protocol-protocol hooks */
+ in_input_t *pr_input;
+ in_output_t *pr_output;
+ in_ctlinput_t *pr_ctlinput;
+ in_ctloutput_t *pr_ctloutput;
+/* user-protocol hook */
+ int (*pr_usrreq)(struct socket *, int, struct mbuf *,
+ struct mbuf *, struct mbuf *, struct mbuf *);
+/* utility hooks */
+ void (*pr_init)(void); /* initialization hook */
+ void (*pr_fasttimo)(void); /* fast timeout (200ms) */
+ void (*pr_slowtimo)(void); /* slow timeout (500ms) */
+ void (*pr_drain)(void); /* flush any excess space possible */
+};
+
+
#ifdef KERNEL
-struct in_ifaddr *in_ifaddr;
-struct in_ifaddr *in_iaonnetof();
-struct ifqueue ipintrq; /* ip packet input queue */
-#endif
+extern struct in_ifaddr *in_ifaddr;
+extern struct in_ifaddr *in_iaonnetof(u_long);
+extern struct in_ifaddr *ifptoia(struct ifnet *);
+extern int in_ifinit(struct ifnet *, struct in_ifaddr *, struct sockaddr_in *, int);
+
+extern int in_cksum(struct mbuf *, int);
+
+extern struct ifqueue ipintrq; /* ip packet input queue */
+extern struct in_protosw inetsw[];
+extern struct domain inetdomain;
+extern u_char ip_protox[];
+extern u_char inetctlerrmap[];
+extern struct in_addr zeroin_addr;
+
+/* From in_var.c: */
+struct route;
+extern int subnetsarelocal; /* obsolescent */
+extern int ipqmaxlen;
+extern u_long *ip_ifmatrix;
+extern int ipforwarding;
+extern struct sockaddr_in ipaddr;
+extern struct route ipforward_rt;
+extern int ipsendredirects;
+
+
+#ifdef MTUDISC
+extern unsigned in_nextmtu(unsigned, int);
+extern int in_routemtu(struct route *);
+extern void in_mtureduce(struct in_addr, unsigned);
+extern void in_mtutimer(caddr_t, int);
+#endif /* MTUDISC */
+#endif /* KERNEL */
+#endif /* _NETINET_IN_VAR_H_ */