/* #[<ENTRY_FUNC>]# eOpener_open * name: eOpener_open * global_name: tTINETClient_eOpener_open * oneway: false * #[</ENTRY_FUNC>]# */ ER eOpener_open(CELLIDX idx, const T_IPV4EP* clientAddr, TMO tmo) { ER ercd = E_OK; CELLCB *p_cellcb; if (VALID_IDX(idx)) { p_cellcb = GET_CELLCB(idx); } else { return(E_ID); } /* ここに処理本体を記述します #_TEFB_# */ puts("opening"); ercd=tcp_con_cep(ATTR_cep_id, NADR, clientAddr, tmo); if(ercd<0){ puts("failed"); syslog( LOG_INFO, "TINETClient: connect failed"); } return(ercd); }
BOOL cg_socket_connect(CgSocket *sock, char *addr, int port) { #if defined(BTRON) || (defined(TENGINE) && !defined(CG_TENGINE_NET_KASAGO)) ERR ret; struct sockaddr_in sockaddr; if (cg_socket_tosockaddrin(addr, port, &sockaddr, TRUE) == FALSE) return FALSE; if (cg_socket_isbound(sock) == FALSE) cg_socket_setid(sock, so_socket(PF_INET, cg_socket_getrawtype(sock), 0)); ret = so_connect(sock->id, (SOCKADDR *)&sockaddr, sizeof(struct sockaddr_in)); #elif defined(TENGINE) && defined(CG_TENGINE_NET_KASAGO) ERR ret; struct sockaddr_in sockaddr; if (cg_socket_tosockaddrin(addr, port, &sockaddr, TRUE) == FALSE) return FALSE; if (cg_socket_isbound(sock) == FALSE) cg_socket_setid(sock, ka_socket(PF_INET, cg_socket_getrawtype(sock), cg_socket_getprototype(sock))); ret = ka_connect(sock->id, (struct sockaddr *)&sockaddr, sizeof(struct sockaddr_in)); #elif defined(ITRON) T_TCP_CCEP tcpccep = { 0, sock->sendWinBuf, CG_NET_SOCKET_WINDOW_BUFSIZE, sock->recvWinBuf, CG_NET_SOCKET_WINDOW_BUFSIZE, (FP)cg_socket_tcp_callback }; T_IPV4EP localAddr; T_IPV4EP dstAddr; ER ret; if (cg_socket_getavailablelocaladdress(&localAddr) == FALSE) return FALSE; if (cg_socket_isbound(sock) == FALSE) { cg_socket_initwindowbuffer(sock); cg_socket_setid(sock, cg_socket_getavailableid(cg_socket_issocketstream(sock))); if (tcp_cre_cep(sock->id, &tcpccep) != E_OK) return FALSE; } dstAddr.ipaddr = ascii_to_ipaddr(addr); dstAddr.portno = htons(port); ret = tcp_con_cep(sock->id, &localAddr, &dstAddr, TMO_FEVR); if (ret == E_OK) { cg_socket_setaddress(sock, ""/*ipaddr_to_ascii(localAddr.ipaddr)*/); cg_socket_setport(sock, ntohs(localAddr.portno)); ret = 0; } else ret = -1; #else struct addrinfo *toaddrInfo; int ret; if (cg_socket_tosockaddrinfo(cg_socket_getrawtype(sock), addr, port, &toaddrInfo, TRUE) == FALSE) return FALSE; if (cg_socket_isbound(sock) == FALSE) cg_socket_setid(sock, socket(toaddrInfo->ai_family, toaddrInfo->ai_socktype, 0)); ret = connect(sock->id, toaddrInfo->ai_addr, toaddrInfo->ai_addrlen); freeaddrinfo(toaddrInfo); #endif cg_log_debug_l4("Entering...\n"); cg_socket_setdirection(sock, CG_NET_SOCKET_CLIENT); #if defined(CG_USE_OPENSSL) if (cg_socket_isssl(sock) == TRUE) { sock->ctx = SSL_CTX_new( SSLv23_client_method()); sock->ssl = SSL_new(sock->ctx); if (SSL_set_fd(sock->ssl, cg_socket_getid(sock)) == 0) { cg_socket_close(sock); return FALSE; } if (SSL_connect(sock->ssl) < 1) { cg_socket_close(sock); return FALSE; } } #endif cg_log_debug_l4("Leaving...\n"); return (ret == 0) ? TRUE : FALSE; }