diff options
Diffstat (limited to 'sys/netinet/in_var.h')
| -rw-r--r-- | sys/netinet/in_var.h | 81 |
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_ */ |
