#include #include #include #include #include #include "librez.h" t_librez_fd librez_doconnect(t_rez *d_rez, in_addr_t connectaddress, u_int16_t port) { int ret; int s; struct sockaddr_in sa; int ifds; t_librez_fd rezid; sa.sin_len = sizeof(struct sockaddr_in); sa.sin_family = AF_INET; sa.sin_addr.s_addr = connectaddress; sa.sin_port = port; memset(&sa.sin_zero, '\0', sizeof(sa.sin_zero)); s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { warn("librez_doconnect"); return (-1); } ret = connect(s, (const struct sockaddr *)&sa, sizeof(struct sockaddr)); if (ret == -1) { warn("librez_doconnect"); return (-1); } rezid = librez_fds_add(d_rez, s); ifds = d_rez->tl_rezid_2_ifds[rezid]; memcpy(&d_rez->tsa[ifds], &sa, sizeof(struct sockaddr_in)); librez_set_func(d_rez, rezid, LIBREZ_POLLRDNORM, LIBREZ_FUNC_DFL); librez_set_func(d_rez, rezid, LIBREZ_POLLWRNORM, LIBREZ_FUNC_DFL); librez_set_func(d_rez, rezid, LIBREZ_POLLHUP, LIBREZ_FUNC_DFL); librez_set_mask(d_rez, rezid, POLLRDNORM); return (rezid); }