void (*writecb)(struct socket *sk, void *data);
struct ufd *ufd;
void *data;
+ char *dbgnm;
+ int dbglvl;
};
struct lport {
void putsock(struct socket *sk);
void getsock(struct socket *sk);
+struct socket *netsockpipe(void);
struct lport *netcslisten(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct lport *, struct socket *, void *), void *data);
struct lport *netcslistenlocal(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct lport *, struct socket *, void *), void *data);
struct lport *netcstcplisten(int port, int local, void (*func)(struct lport *, struct socket *, void *), void *data);
void sockqueue(struct socket *sk, void *data, size_t size);
void sockerror(struct socket *sk, int en);
/* size_t sockqueuesize(struct socket *sk); */
+size_t socktqueuesize(struct socket *sk);
ssize_t sockqueueleft(struct socket *sk);
int netresolve(char *addr, void (*callback)(struct sockaddr *addr, int addrlen, void *data), void *data);
struct socket *netcsdgram(struct sockaddr *name, socklen_t namelen);
int sockpeeraddr(struct socket *sk, struct sockaddr **namebuf, socklen_t *lenbuf);
int getucred(struct socket *sk, uid_t *uid, gid_t *gid);
int sockfamily(struct socket *sk);
+void quitsock(struct socket *sk);
+void socksetdebug(struct socket *sk, int level, char *nm, ...);
#endif