/*	$OpenBSD: ns_var.h,v 1.8 2002/03/14 03:16:12 millert Exp $	*/

#ifdef _KERNEL
struct socket;
struct nspcb;
struct ifnet;
struct ns_ifaddr;
struct sockaddr_ns;
struct mbuf;
struct ns_addr;
struct route;
struct rtentry;
struct ifnet_en;
struct in_addr;
struct sockaddr;

/* ns.c */
int ns_control(struct socket *, u_long, caddr_t, struct ifnet *);
void ns_ifscrub(struct ifnet *, struct ns_ifaddr *);
int ns_ifinit(struct ifnet *, struct ns_ifaddr *, struct sockaddr_ns *,
		   int);
struct ns_ifaddr *ns_iaonnetof(struct ns_addr *);

/* ns_cksum.c */
u_short ns_cksum(struct mbuf *, int);

/* ns_error.c */
int ns_err_x(int);
void ns_error(struct mbuf *, int, int );
void ns_printhost(struct ns_addr *);
void ns_err_input(struct mbuf *);
u_long nstime(void);
int ns_echo(struct mbuf *);

/* ns_input.c */
void ns_init(void);
void nsintr(void);
void *idp_ctlinput(int, struct sockaddr *, void *);
void idp_forward(struct mbuf *);
int idp_do_route(struct ns_addr *, struct route *);
void idp_undo_route(struct route *);
void ns_watch_output(struct mbuf *, struct ifnet *);

/* ns_ip.c */
struct ifnet_en *nsipattach(void);
int nsipioctl(struct ifnet *, u_long, caddr_t);
void idpip_input(struct mbuf *, ...);
int nsipoutput(struct ifnet *, struct mbuf *, struct sockaddr *,     
		struct rtentry *);
void nsipstart(struct ifnet *);
int nsip_route(struct mbuf *);
int nsip_free(struct ifnet *);
void *nsip_ctlinput(int, struct sockaddr *, void *);
int nsip_rtchange(struct in_addr *);

/* ns_output.c */
int ns_output(struct mbuf *, ...);

/* ns_pcb.c */
int ns_pcballoc(struct socket *, struct nspcb *);
int ns_pcbbind(struct nspcb *, struct mbuf *);
int ns_pcbconnect(struct nspcb *, struct mbuf *);
void ns_pcbdisconnect(struct nspcb *);
void ns_pcbdetach(struct nspcb *);
void ns_setsockaddr(struct nspcb *, struct mbuf *);
void ns_setpeeraddr(struct nspcb *, struct mbuf *);
void ns_pcbnotify(struct ns_addr *, int, void (*)(struct nspcb *), long);
void ns_rtchange(struct nspcb *);
struct nspcb *ns_pcblookup(struct ns_addr *, u_short, int);

#endif