-void ip6_init __P((void));
-void ip6intr __P((void));
-void ip6_input __P((struct mbuf *));
-struct in6_ifaddr *ip6_getdstifaddr __P((struct mbuf *));
-void ip6_freepcbopts __P((struct ip6_pktopts *));
-void ip6_freemoptions __P((struct ip6_moptions *));
-int ip6_unknown_opt __P((u_int8_t *, struct mbuf *, int));
-char * ip6_get_prevhdr __P((struct mbuf *, int));
-int ip6_nexthdr __P((struct mbuf *, int, int, int *));
-int ip6_lasthdr __P((struct mbuf *, int, int, int *));
-
-struct mbuf *ip6_addaux __P((struct mbuf *));
-struct mbuf *ip6_findaux __P((struct mbuf *));
-void ip6_delaux __P((struct mbuf *));
-
-int ip6_mforward __P((struct ip6_hdr *, struct ifnet *, struct mbuf *));
-int ip6_process_hopopts __P((struct mbuf *, u_int8_t *, int, u_int32_t *,
- u_int32_t *));
-void ip6_savecontrol __P((struct inpcb *, struct mbuf **, struct ip6_hdr *,
- struct mbuf *));
-void ip6_notify_pmtu __P((struct inpcb *, struct sockaddr_in6 *,
- u_int32_t *));
-int ip6_sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
-
-void ip6_forward __P((struct mbuf *, int));
-
-void ip6_mloopback __P((struct ifnet *, struct mbuf *, struct sockaddr_in6 *));
-int ip6_output __P((struct mbuf *, struct ip6_pktopts *,
- struct route_in6 *,
- int,
- struct ip6_moptions *, struct ifnet **));
-int ip6_ctloutput __P((struct socket *, struct sockopt *sopt));
-void init_ip6pktopts __P((struct ip6_pktopts *));
-int ip6_setpktoptions __P((struct mbuf *, struct ip6_pktopts *, int, int));
-void ip6_clearpktopts __P((struct ip6_pktopts *, int, int));
-struct ip6_pktopts *ip6_copypktopts __P((struct ip6_pktopts *, int));
-int ip6_optlen __P((struct inpcb *));
-
-int route6_input __P((struct mbuf **, int *));
-
-void frag6_init __P((void));
-int frag6_input __P((struct mbuf **, int *));
-void frag6_slowtimo __P((void));
-void frag6_drain __P((void));
-
-void rip6_init __P((void));
-int rip6_input __P((struct mbuf **mp, int *offset));
-void rip6_ctlinput __P((int, struct sockaddr *, void *));
-int rip6_ctloutput __P((struct socket *so, struct sockopt *sopt));
-int rip6_output __P((struct mbuf *, struct socket *, struct sockaddr_in6 *, struct mbuf *));
-int rip6_usrreq __P((struct socket *,
- int, struct mbuf *, struct mbuf *, struct mbuf *, struct proc *));
-
-int dest6_input __P((struct mbuf **, int *));
-int none_input __P((struct mbuf **, int *));
-#endif /* KERNEL */
-#endif /* __APPLE_API_PRIVATE */
-
+struct ip6protosw;
+struct domain;
+
+extern int icmp6_ctloutput(struct socket *, struct sockopt *);
+extern int icmp6_dgram_ctloutput(struct socket *, struct sockopt *);
+extern int icmp6_dgram_send(struct socket *, int, struct mbuf *,
+ struct sockaddr *, struct mbuf *, struct proc *);
+extern int icmp6_dgram_attach(struct socket *, int, struct proc *);
+
+extern void ip6_init(struct ip6protosw *, struct domain *);
+extern void ip6_input(struct mbuf *);
+extern void ip6_setsrcifaddr_info(struct mbuf *, uint32_t, struct in6_ifaddr *);
+extern void ip6_setdstifaddr_info(struct mbuf *, uint32_t, struct in6_ifaddr *);
+extern int ip6_getsrcifaddr_info(struct mbuf *, uint32_t *, uint32_t *);
+extern int ip6_getdstifaddr_info(struct mbuf *, uint32_t *, uint32_t *);
+extern void ip6_freepcbopts(struct ip6_pktopts *);
+extern int ip6_unknown_opt(u_int8_t *, struct mbuf *, int);
+extern char *ip6_get_prevhdr(struct mbuf *, int);
+extern int ip6_nexthdr(struct mbuf *, int, int, int *);
+extern int ip6_lasthdr(struct mbuf *, int, int, int *);
+
+extern void ip6_moptions_init(void);
+extern struct ip6_moptions *ip6_allocmoptions(int);
+extern void im6o_addref(struct ip6_moptions *, int);
+extern void im6o_remref(struct ip6_moptions *);
+
+extern struct ip6aux *ip6_addaux(struct mbuf *);
+extern struct ip6aux *ip6_findaux(struct mbuf *);
+extern void ip6_delaux(struct mbuf *);
+
+extern int ip6_process_hopopts(struct mbuf *, u_int8_t *, int, u_int32_t *,
+ u_int32_t *);
+extern struct mbuf **ip6_savecontrol_v4(struct inpcb *, struct mbuf *,
+ struct mbuf **, int *);
+extern int ip6_savecontrol(struct inpcb *, struct mbuf *, struct mbuf **);
+extern struct mbuf *ip6_forward(struct mbuf *, struct route_in6 *, int);
+extern void ip6_notify_pmtu(struct inpcb *, struct sockaddr_in6 *, u_int32_t *);
+extern void ip6_mloopback(struct ifnet *, struct ifnet *, struct mbuf *,
+ struct sockaddr_in6 *, uint32_t, int32_t);
+extern int ip6_output(struct mbuf *, struct ip6_pktopts *, struct route_in6 *,
+ int, struct ip6_moptions *, struct ifnet **, struct ip6_out_args *);
+extern int ip6_output_list(struct mbuf *, int, struct ip6_pktopts *,
+ struct route_in6 *, int, struct ip6_moptions *, struct ifnet **,
+ struct ip6_out_args *);
+extern int ip6_ctloutput(struct socket *, struct sockopt *);
+extern int ip6_raw_ctloutput(struct socket *, struct sockopt *);
+extern void ip6_initpktopts(struct ip6_pktopts *);
+extern int ip6_setpktoptions(struct mbuf *, struct ip6_pktopts *, int, int);
+extern void ip6_clearpktopts(struct ip6_pktopts *, int);
+extern struct ip6_pktopts *ip6_copypktopts(struct ip6_pktopts *, int);
+extern int ip6_optlen(struct inpcb *);
+extern void ip6_drain(void);
+
+extern int route6_input(struct mbuf **, int *, int);
+
+extern void frag6_init(void);
+extern int frag6_input(struct mbuf **, int *, int);
+extern void frag6_drain(void);
+
+extern int rip6_input(struct mbuf **, int *, int);
+extern void rip6_ctlinput(int, struct sockaddr *, void *);
+extern int rip6_ctloutput(struct socket *so, struct sockopt *sopt);
+extern int rip6_output(struct mbuf *, struct socket *, struct sockaddr_in6 *,
+ struct mbuf *, int);
+
+extern int dest6_input(struct mbuf **, int *, int);
+extern struct in6_addr *in6_selectsrc(struct sockaddr_in6 *,
+ struct ip6_pktopts *, struct inpcb *, struct route_in6 *,
+ struct ifnet **, struct in6_addr *, unsigned int, int *);
+extern struct in6_addrpolicy *in6_addrsel_lookup_policy(struct sockaddr_in6 *);
+extern int in6_selectroute(struct sockaddr_in6 *, struct sockaddr_in6 *,
+ struct ip6_pktopts *, struct ip6_moptions *, struct in6_ifaddr **,
+ struct route_in6 *, struct ifnet **, struct rtentry **, int,
+ struct ip6_out_args *);
+extern int ip6_setpktopts(struct mbuf *control, struct ip6_pktopts *opt,
+ struct ip6_pktopts *stickyopt, int uproto);
+extern u_int32_t ip6_randomid(void);
+extern u_int32_t ip6_randomflowlabel(void);
+#endif /* BSD_KERNEL_PRIVATE */