#include #include #include #include #include #include #include #include "init_vconn.h" ECPContext ctx; ECPSocket sock; ECPConnHandler handler; ECPConnHandler vconn_handler; ECPConnHandler vlink_handler; ECPConnection conn; ECPVConnOutb vconn[ECP_MAX_PARENT]; #define CTYPE_TEST 0 #define MTYPE_MSG 0 static int handle_open(ECPConnection *conn, ECP2Buffer *b) { printf("OPEN\n"); return ECP_OK; } static ssize_t handle_msg(ECPConnection *conn, ecp_seq_t seq, unsigned char mtype, unsigned char *msg, size_t msg_size, ECP2Buffer *b) { char *_msg = "VAISTINU JE CAR!"; ssize_t rv; printf("MSG:%s size:%ld\n", msg, msg_size); rv = ecp_msg_send(conn, MTYPE_MSG, (unsigned char *)_msg, strlen(_msg)+1); return msg_size; } static void usage(char *arg) { fprintf(stderr, "Usage: %s
[ ... ]\n", arg); exit(1); } int main(int argc, char *argv[]) { ECPDHKey key_perma; ecp_tr_addr_t addr; ecp_ecdh_public_t vconn_pub[ECP_MAX_PARENT]; int rv, i; if ((argc < 4) || (argc > 3 + ECP_MAX_PARENT)) usage(argv[0]); rv = ecp_init(&ctx, &vconn_handler, &vlink_handler); LOG("ecp_init", rv); ecp_conn_handler_init(&handler, handle_open, NULL, handle_msg, NULL); ecp_ctx_set_handler(&ctx, CTYPE_TEST, &handler); rv = ecp_util_load_key(argv[1], &key_perma.public, &key_perma.private); LOG("ecp_util_load_key", rv); key_perma.valid = 1; rv = ecp_sock_create(&sock, &ctx, &key_perma); LOG("ecp_sock_create", rv); rv = ecp_vconn_sock_create(&sock); LOG("ecp_vconn_sock_create", rv); rv = ecp_sock_open(&sock, NULL); LOG("ecp_sock_open", rv); rv = ecp_start_receiver(&sock); LOG("ecp_start_receiver", rv); rv = ecp_addr_init(&addr, argv[2]); LOG("ecp_addr_init", rv); for (i=3; i 4) { ecp_vconn_init_vlink(vconn, argc-3, &sock); rv = ecp_vconn_open_vlink(vconn, vconn_pub, &addr); LOG("ecp_vconn_open_vlink", rv); } else { ecp_vlink_init(&conn, &sock); rv = ecp_conn_open(&conn, &vconn_pub[0], &addr); LOG("ecp_conn_open", rv); } while (1) sleep(1); }