summaryrefslogtreecommitdiff
path: root/code/proxy
diff options
context:
space:
mode:
Diffstat (limited to 'code/proxy')
-rw-r--r--code/proxy/Makefile13
-rw-r--r--code/proxy/proxy.c21
-rw-r--r--code/proxy/proxy.h4
3 files changed, 35 insertions, 3 deletions
diff --git a/code/proxy/Makefile b/code/proxy/Makefile
new file mode 100644
index 0000000..9a8490c
--- /dev/null
+++ b/code/proxy/Makefile
@@ -0,0 +1,13 @@
+CFLAGS = -I../core -pthread -O3 $(PIC)
+
+obj = proxy.o
+
+
+%.o: %.c %.h
+ $(CC) $(CFLAGS) -c $<
+
+all: $(obj)
+ $(AR) rcs libecpproxy.a $(obj)
+
+clean:
+ rm -f *.o *.a \ No newline at end of file
diff --git a/code/proxy/proxy.c b/code/proxy/proxy.c
index ae66318..3d6ffec 100644
--- a/code/proxy/proxy.c
+++ b/code/proxy/proxy.c
@@ -1,4 +1,4 @@
-#include "core.h"
+#include <core.h>
#include "proxy.h"
#ifdef ECP_WITH_PTHREAD
@@ -409,7 +409,8 @@ int ecp_proxy_init(ECPContext *ctx) {
return ECP_OK;
}
-int ecp_conn_proxy_init(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size, ECPSocket *sock) {
+int ecp_conn_proxy_init(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size) {
+ ECPSocket *sock = conn->sock;
int i, rv;
rv = ecp_conn_init(conn, conn_node);
@@ -438,3 +439,19 @@ int ecp_conn_proxy_init(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *p
return ECP_OK;
}
+static ssize_t _proxy_send_kget(ECPConnection *conn, ECPTimerItem *ti) {
+ unsigned char payload[ECP_SIZE_PLD(0)];
+
+ ecp_pld_set_type(payload, ECP_MTYPE_KGET);
+ return ecp_pld_send_wkey(conn, ECP_ECDH_IDX_PERMA, ECP_ECDH_IDX_INV, payload, sizeof(payload));
+}
+
+int ecp_conn_proxy_open(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size) {
+ int rv = ecp_conn_proxy_init(conn, conn_node, proxy, proxy_node, size);
+ if (rv) return rv;
+
+ ssize_t _rv = ecp_timer_send((ECPConnection *)proxy[0], _proxy_send_kget, ECP_MTYPE_KGET, 3, 500);
+ if (_rv < 0) return _rv;
+
+ return ECP_OK;
+} \ No newline at end of file
diff --git a/code/proxy/proxy.h b/code/proxy/proxy.h
index c6d5422..f3bc58a 100644
--- a/code/proxy/proxy.h
+++ b/code/proxy/proxy.h
@@ -16,4 +16,6 @@ typedef struct ECPConnProxyF {
} ECPConnProxyF;
int ecp_proxy_init(ECPContext *ctx);
-int ecp_conn_proxy_init(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size, ECPSocket *sock);
+
+int ecp_conn_proxy_init(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size);
+int ecp_conn_proxy_open(ECPConnection *conn, ECPNode *conn_node, ECPConnProxy *proxy[], ECPNode *proxy_node[], int size);