X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fnet.h;h=da96315c8d575ede3e9f53bf8ab8fe27374fb191;hb=f5dbbe62975d51f5096e1b38c3d982e6af093d8b;hp=3f04ab1a6ce5bcc8667e3d81ba14f75027f6d665;hpb=0a1bc5b19fe40d88790d02f236ea4c9637024969;p=doldaconnect.git diff --git a/daemon/net.h b/daemon/net.h index 3f04ab1..da96315 100644 --- a/daemon/net.h +++ b/daemon/net.h @@ -21,6 +21,8 @@ #include +#include + #define SOCK_LST 0 /* Listening */ #define SOCK_SYN 1 /* Connecting */ #define SOCK_EST 2 /* Established */ @@ -80,20 +82,27 @@ struct socket size_t datasize; } s; } inbuf; + /* void (*conncb)(struct socket *sk, int err, void *data); void (*errcb)(struct socket *sk, int err, void *data); void (*readcb)(struct socket *sk, void *data); void (*writecb)(struct socket *sk, void *data); void (*acceptcb)(struct socket *sk, struct socket *newsk, void *data); void *data; + */ + CBCHAIN(socket_conn, struct socket *sk, int err); + CBCHAIN(socket_err, struct socket *sk, int err); + CBCHAIN(socket_read, struct socket *sk); + CBCHAIN(socket_write, struct socket *sk); + CBCHAIN(socket_accept, struct socket *sk, struct socket *newsk); }; void putsock(struct socket *sk); void getsock(struct socket *sk); -struct socket *netcslisten(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct socket *, struct socket *, void *), void *data); -struct socket *netcslistenlocal(int type, struct sockaddr *name, socklen_t namelen, void (*func)(struct socket *, struct socket *, void *), void *data); -struct socket *netcstcplisten(int port, int local, void (*func)(struct socket *, struct socket *, void *), void *data); -struct socket *netcsconn(struct sockaddr *addr, socklen_t addrlen, void (*func)(struct socket *, int, void *), void *data); +struct socket *netcslisten(int type, struct sockaddr *name, socklen_t namelen, int (*func)(struct socket *, struct socket *, void *), void *data); +struct socket *netcslistenlocal(int type, struct sockaddr *name, socklen_t namelen, int (*func)(struct socket *, struct socket *, void *), void *data); +struct socket *netcstcplisten(int port, int local, int (*func)(struct socket *, struct socket *, void *), void *data); +struct socket *netcsconn(struct sockaddr *addr, socklen_t addrlen, int (*func)(struct socket *, int, void *), void *data); int pollsocks(int timeout); void sockqueue(struct socket *sk, void *data, size_t size); size_t sockqueuesize(struct socket *sk); @@ -103,6 +112,7 @@ struct socket *netdupsock(struct socket *sk); void 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); void closesock(struct socket *sk); void *sockgetinbuf(struct socket *sk, size_t *size); struct socket *wrapsock(int fd);