X-Git-Url: http://dolda2000.com/gitweb/?p=doldaconnect.git;a=blobdiff_plain;f=daemon%2Fnet.h;h=9ae9650d100fd50248d86472ff2e45fc078bc3c7;hp=23275b3ccef3109d6fd55f9d77fcb157357a0f61;hb=1ce5968e27a19937a0e54f118d91e1a22438a0eb;hpb=2b9a1911defbd6f0295b74cd7b41a2a5328d9e6a diff --git a/daemon/net.h b/daemon/net.h index 23275b3..9ae9650 100644 --- a/daemon/net.h +++ b/daemon/net.h @@ -43,8 +43,10 @@ struct socket { int refcount; int state; - int block; int dgram; + int eos; + size_t maxbuf; + struct socket *back, *pnext; union { struct @@ -70,27 +72,29 @@ struct lport { struct ufd *ufd; void (*acceptcb)(struct lport *lp, struct socket *newsk, void *data); void (*errcb)(struct lport *lp, int err, void *data); - void (*close)(struct lport *lp); void *data; }; void putsock(struct socket *sk); void getsock(struct socket *sk); -struct lport *netcslisten(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct socket *, struct socket *, void *), void *data); -struct lport *netcslistenlocal(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct socket *, struct socket *, void *), void *data); -struct lport *netcstcplisten(int port, int local, void (*func)(struct socket *, struct socket *, void *), void *data); +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); struct socket *netcsconn(struct sockaddr *addr, socklen_t addrlen, void (*func)(struct socket *, int, void *), void *data); int pollsocks(int timeout); +void freedgbuf(struct dgrambuf *dg); void sockqueue(struct socket *sk, void *data, size_t size); -size_t sockqueuesize(struct socket *sk); +void sockerror(struct socket *sk, int en); +/* size_t sockqueuesize(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); struct socket *netdgramconn(struct socket *sk, struct sockaddr *addr, socklen_t addrlen); -int sockgetlocalname(struct socket *sk, struct sockaddr **namebuf, socklen_t *lenbuf); int sockgetremotename(struct socket *sk, struct sockaddr **namebuf, socklen_t *lenbuf); int sockgetremotename2(struct socket *sk, struct socket *sk2, struct sockaddr **namebuf, socklen_t *lenbuf); -int getremotename(struct lport *lp, struct sockaddr **namebuf, socklen_t *lenbuf); -int getremotename2(struct lport *lp, struct socket *sk, struct sockaddr **namebuf, socklen_t *lenbuf); +int lstgetremotename(struct lport *lp, struct sockaddr **namebuf, socklen_t *lenbuf); +int lstgetremotename2(struct lport *lp, struct socket *sk, struct sockaddr **namebuf, socklen_t *lenbuf); void closesock(struct socket *sk); void closelport(struct lport *lp); void *sockgetinbuf(struct socket *sk, size_t *size); @@ -101,7 +105,7 @@ int addreq(struct sockaddr *x, struct sockaddr *y); char *formataddress(struct sockaddr *arg, socklen_t arglen); char *formatsockpeer(struct socket *sk); void sockpushdata(struct socket *sk, void *buf, size_t size); -void sockblock(struct socket *sk, int block); +/* void sockblock(struct socket *sk, int block); */ 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);