mpls_return_enum mpls_socket_tcp_connect(mpls_socket_mgr_handle handle, mpls_socket_handle socket, const mpls_dest * to) { struct sockaddr addr, *iaddr = NULL; if (to != NULL) { _mpls_dest2sockaddr(to, &addr); iaddr = &addr; } else { iaddr = NULL; } if (connect(socket->fd, iaddr, sizeof(struct sockaddr)) < 0) { if (errno == EINPROGRESS) { return MPLS_NON_BLOCKING; } if (errno == EALREADY) { return MPLS_SUCCESS; } perror("connect"); return MPLS_FAILURE; } return MPLS_SUCCESS; }
int mpls_socket_udp_sendto(mpls_socket_mgr_handle handle, mpls_socket_handle socket, uint8_t *buffer, int size, const mpls_dest *to) { struct sockaddr addr; _mpls_dest2sockaddr(to, &addr); return sendto(socket->fd, buffer, size, 0, &addr, sizeof(struct sockaddr)); }
mpls_return_enum mpls_socket_bind(mpls_socket_mgr_handle handle, mpls_socket_handle socket, const mpls_dest *local) { struct sockaddr addr; _mpls_dest2sockaddr(local, &addr); if(bind(socket->fd, &addr, sizeof(struct sockaddr_in)) < 0) { perror("bind"); return MPLS_FAILURE; } return MPLS_SUCCESS; }
mpls_return_enum mpls_socket_tcp_connect(mpls_socket_mgr_handle handle, mpls_socket_handle socket, const mpls_dest *to) { struct sockaddr addr; if(!to) return MPLS_FAILURE; _mpls_dest2sockaddr(to, &addr); if(connect(socket->fd, &addr, sizeof(struct sockaddr)) < 0) { if(errno == EINPROGRESS) return MPLS_NON_BLOCKING; if(errno == EALREADY) return MPLS_SUCCESS; perror("connect"); return MPLS_FAILURE; } return MPLS_SUCCESS; }