-struct sockaddr *dup_sockaddr __P((struct sockaddr *sa, int canwait));
-int getsock __P((struct filedesc *fdp, int fd, struct file **fpp));
-int sockargs __P((struct mbuf **mp, caddr_t buf, int buflen, int type));
-int getsockaddr __P((struct sockaddr **namp, caddr_t uaddr, size_t len));
-void sbappend __P((struct sockbuf *sb, struct mbuf *m));
-int sbappendaddr __P((struct sockbuf *sb, struct sockaddr *asa,
- struct mbuf *m0, struct mbuf *control));
-int sbappendcontrol __P((struct sockbuf *sb, struct mbuf *m0,
- struct mbuf *control));
-void sbappendrecord __P((struct sockbuf *sb, struct mbuf *m0));
-void sbcheck __P((struct sockbuf *sb));
-void sbcompress __P((struct sockbuf *sb, struct mbuf *m, struct mbuf *n));
-struct mbuf *
- sbcreatecontrol __P((caddr_t p, int size, int type, int level));
-void sbdrop __P((struct sockbuf *sb, int len));
-void sbdroprecord __P((struct sockbuf *sb));
-void sbflush __P((struct sockbuf *sb));
-void sbinsertoob __P((struct sockbuf *sb, struct mbuf *m0));
-void sbrelease __P((struct sockbuf *sb));
-int sbreserve __P((struct sockbuf *sb, u_long cc));
-void sbtoxsockbuf __P((struct sockbuf *sb, struct xsockbuf *xsb));
-int sbwait __P((struct sockbuf *sb));
-int sb_lock __P((struct sockbuf *sb));
-int soabort __P((struct socket *so));
-int soaccept __P((struct socket *so, struct sockaddr **nam));
-struct socket *soalloc __P((int waitok, int dom, int type));
-int sobind __P((struct socket *so, struct sockaddr *nam));
-void socantrcvmore __P((struct socket *so));
-void socantsendmore __P((struct socket *so));
-int soclose __P((struct socket *so));
-int soconnect __P((struct socket *so, struct sockaddr *nam));
-int soconnect2 __P((struct socket *so1, struct socket *so2));
-int socreate __P((int dom, struct socket **aso, int type, int proto));
-void sodealloc __P((struct socket *so));
-int sodisconnect __P((struct socket *so));
-void sofree __P((struct socket *so));
-int sogetopt __P((struct socket *so, struct sockopt *sopt));
-void sohasoutofband __P((struct socket *so));
-void soisconnected __P((struct socket *so));
-void soisconnecting __P((struct socket *so));
-void soisdisconnected __P((struct socket *so));
-void soisdisconnecting __P((struct socket *so));
-int solisten __P((struct socket *so, int backlog));
-struct socket *
- sodropablereq __P((struct socket *head));
-struct socket *
- sonewconn __P((struct socket *head, int connstatus));
-int sooptcopyin __P((struct sockopt *sopt, void *buf, size_t len,
- size_t minlen));
-int sooptcopyout __P((struct sockopt *sopt, void *buf, size_t len));
-int sopoll __P((struct socket *so, int events, struct ucred *cred));
-int soreceive __P((struct socket *so, struct sockaddr **paddr,
- struct uio *uio, struct mbuf **mp0,
- struct mbuf **controlp, int *flagsp));
-int soreserve __P((struct socket *so, u_long sndcc, u_long rcvcc));
-void sorflush __P((struct socket *so));
-int sosend __P((struct socket *so, struct sockaddr *addr, struct uio *uio,
- struct mbuf *top, struct mbuf *control, int flags));
-
-int sosetopt __P((struct socket *so, struct sockopt *sopt));
-
-
-int soshutdown __P((struct socket *so, int how));
-void sotoxsocket __P((struct socket *so, struct xsocket *xso));
-void sowakeup __P((struct socket *so, struct sockbuf *sb));
+__BEGIN_DECLS
+/* Not exported */
+extern void socketinit(void) __attribute__((section("__TEXT, initcode")));
+
+/* Exported */
+extern struct sockaddr *dup_sockaddr(struct sockaddr *sa, int canwait);
+extern int getsock(struct filedesc *fdp, int fd, struct file **fpp);
+extern int sockargs(struct mbuf **mp, user_addr_t data, int buflen, int type);
+
+extern int sbappend(struct sockbuf *sb, struct mbuf *m);
+extern int sbappendstream(struct sockbuf *sb, struct mbuf *m);
+extern int sbappendaddr(struct sockbuf *sb, struct sockaddr *asa,
+ struct mbuf *m0, struct mbuf *control, int *error_out);
+extern int sbappendcontrol(struct sockbuf *sb, struct mbuf *m0,
+ struct mbuf *control, int *error_out);
+extern int sbappendrecord(struct sockbuf *sb, struct mbuf *m0);
+extern void sbcheck(struct sockbuf *sb);
+extern void sblastmbufchk(struct sockbuf *, const char *);
+extern void sblastrecordchk(struct sockbuf *, const char *);
+extern struct mbuf *sbcreatecontrol(caddr_t p, int size, int type, int level);
+extern void sbdrop(struct sockbuf *sb, int len);
+extern void sbdroprecord(struct sockbuf *sb);
+extern void sbflush(struct sockbuf *sb);
+extern int sbinsertoob(struct sockbuf *sb, struct mbuf *m0);
+extern void sbrelease(struct sockbuf *sb);
+extern int sbreserve(struct sockbuf *sb, u_int32_t cc);
+extern void sbtoxsockbuf(struct sockbuf *sb, struct xsockbuf *xsb);
+extern int sbwait(struct sockbuf *sb);
+extern int sb_lock(struct sockbuf *sb);
+extern void sb_empty_assert(struct sockbuf *, const char *);
+
+extern int soabort(struct socket *so);
+extern int soaccept(struct socket *so, struct sockaddr **nam);
+extern int soacceptlock(struct socket *so, struct sockaddr **nam, int dolock);
+extern int soacceptfilter(struct socket *so);
+extern struct socket *soalloc(int waitok, int dom, int type);
+extern int sobind(struct socket *so, struct sockaddr *nam);
+extern void socantrcvmore(struct socket *so);
+extern void socantsendmore(struct socket *so);
+extern int soclose(struct socket *so);
+extern int soconnect(struct socket *so, struct sockaddr *nam);
+extern int soconnectlock(struct socket *so, struct sockaddr *nam, int dolock);
+extern int soconnect2(struct socket *so1, struct socket *so2);
+extern int socreate(int dom, struct socket **aso, int type, int proto);
+extern void sodealloc(struct socket *so);
+extern int sodisconnect(struct socket *so);
+extern int sodisconnectlocked(struct socket *so);
+extern void sofree(struct socket *so);
+extern void soreference(struct socket *so);
+extern void sodereference(struct socket *so);
+extern void somultipages(struct socket *, boolean_t);
+extern int sogetopt(struct socket *so, struct sockopt *sopt);
+extern void sohasoutofband(struct socket *so);
+extern void soisconnected(struct socket *so);
+extern void soisconnecting(struct socket *so);
+extern void soisdisconnected(struct socket *so);
+extern void soisdisconnecting(struct socket *so);
+extern int soisbackground(struct socket *so);
+extern int solisten(struct socket *so, int backlog);
+extern struct socket *sodropablereq(struct socket *head);
+extern struct socket *sonewconn(struct socket *head, int connstatus,
+ const struct sockaddr *from);
+extern int sooptcopyin(struct sockopt *sopt, void *data, size_t len,
+ size_t minlen);
+extern int sooptcopyout(struct sockopt *sopt, void *data, size_t len);
+extern int socket_lock(struct socket *so, int refcount);
+extern int socket_unlock(struct socket *so, int refcount);
+extern void sofreelastref(struct socket *, int);
+extern int sogetaddr_locked(struct socket *, struct sockaddr **, int);
+extern const char *solockhistory_nr(struct socket *);