Skip to content
Snippets Groups Projects
Commit 57fa92c8 authored by Dmitriy A. Gerasimov's avatar Dmitriy A. Gerasimov
Browse files

[+] Added integration with chain net service

parent ddc0d861
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
...@@ -46,9 +46,10 @@ ...@@ -46,9 +46,10 @@
#define VPN_PACKET_OP_CODE_RECV 0x000000ad #define VPN_PACKET_OP_CODE_RECV 0x000000ad
#define VPN_PACKET_OP_CODE_PROBLEM 0x000000ae #define VPN_PACKET_OP_CODE_PROBLEM 0x000000ae
#define VPN_PROBLEM_CODE_NO_FREE_ADDR 0x00000001 #define VPN_PROBLEM_CODE_NO_FREE_ADDR 0x00000001
#define VPN_PROBLEM_CODE_TUNNEL_DOWN 0x00000002 #define VPN_PROBLEM_CODE_TUNNEL_DOWN 0x00000002
#define VPN_PROBLEM_CODE_PACKET_LOST 0x00000003 #define VPN_PROBLEM_CODE_PACKET_LOST 0x00000003
#define VPN_PROBLEM_CODE_ALREADY_ASSIGNED_ADDR 0x00000004
#define VPN_PACKET_OP_CODE_VPN_METADATA 0x000000b0 #define VPN_PACKET_OP_CODE_VPN_METADATA 0x000000b0
#define VPN_PACKET_OP_CODE_VPN_RESERVED 0x000000b1 #define VPN_PACKET_OP_CODE_VPN_RESERVED 0x000000b1
...@@ -61,25 +62,11 @@ ...@@ -61,25 +62,11 @@
#define VPN_PACKET_OP_CODE_PING 0xc0 #define VPN_PACKET_OP_CODE_PING 0xc0
#define VPN_PACKET_OP_CODE_PONG 0xc1 #define VPN_PACKET_OP_CODE_PONG 0xc1
typedef struct dap_stream_ch_vpn_remote_single { //
#ifdef DAP_OS_UNIX
in_addr_t addr_ipv4;
#else
uint32_t addr_ipv4;
#endif
// pthread_mutex_t mutex;
dap_stream_ch_t * ch;
uint64_t bytes_sent;
uint64_t bytes_recieved;
UT_hash_handle hh;
} dap_stream_ch_vpn_remote_single_t;
typedef struct ch_vpn_pkt { typedef struct ch_vpn_pkt {
struct { struct {
int sock_id; // Client's socket id int sock_id; // Client's socket id
uint32_t op_code; // Operation code uint32_t op_code; // Operation code
uint32_t usage_id; // Usage id (for multinetworking)
union { union {
struct { // L4 connect operation struct { // L4 connect operation
uint32_t addr_size; uint32_t addr_size;
...@@ -99,9 +86,9 @@ typedef struct ch_vpn_pkt { ...@@ -99,9 +86,9 @@ typedef struct ch_vpn_pkt {
uint32_t padding2; uint32_t padding2;
} raw; // Raw access to OP bytes } raw; // Raw access to OP bytes
}; };
}__attribute__((packed)) header; } DAP_ALIGN_PACKED header;
uint8_t data[]; // Binary data nested by packet uint8_t data[]; // Binary data nested by packet
}__attribute__((packed)) ch_vpn_pkt_t; }DAP_ALIGN_PACKED ch_vpn_pkt_t;
/** /**
* @struct ch_vpn_socket_proxy * @struct ch_vpn_socket_proxy
...@@ -138,19 +125,36 @@ typedef struct ch_vpn_socket_proxy { ...@@ -138,19 +125,36 @@ typedef struct ch_vpn_socket_proxy {
* *
* *
**/ **/
typedef struct dap_chain_net_srv_vpn typedef struct dap_chain_net_srv_ch_vpn
{ {
dap_chain_net_srv_t net_srv; uint32_t usage_id;
dap_chain_net_srv_t* net_srv;
//dap_chain_net_srv_uid_t srv_uid; // Unique ID for service. //dap_chain_net_srv_uid_t srv_uid; // Unique ID for service.
pthread_mutex_t mutex; pthread_mutex_t mutex;
ch_vpn_socket_proxy_t * socks; ch_vpn_socket_proxy_t * socks;
int raw_l3_sock; int raw_l3_sock;
bool is_allowed;
struct in_addr addr_ipv4;
dap_stream_ch_t * ch; dap_stream_ch_t * ch;
dap_ledger_t *ledger; UT_hash_handle hh;
} dap_chain_net_srv_ch_vpn_t;
typedef struct dap_chain_net_srv_vpn_item_ipv4{
struct in_addr addr;
struct dap_chain_net_srv_vpn_item_ipv4 * next;
} dap_chain_net_srv_vpn_item_ipv4_t;
typedef struct dap_chain_net_srv_vpn
{
dap_chain_net_srv_vpn_item_ipv4_t * ipv4_unleased;
dap_chain_net_srv_ch_vpn_t * ch_vpn_ipv4;
dap_chain_net_srv_t * parent;
} dap_chain_net_srv_vpn_t; } dap_chain_net_srv_vpn_t;
#define CH_VPN(a) ((dap_chain_net_srv_vpn_t *) ((a)->internal) ) #define CH_VPN(a) ((dap_chain_net_srv_ch_vpn_t *) ((a)->internal) )
int dap_chain_net_srv_vpn_init(dap_config_t * g_config); int dap_chain_net_srv_vpn_init(dap_config_t * g_config);
void dap_chain_net_srv_vpn_deinit(void); void dap_chain_net_srv_vpn_deinit(void);
......
...@@ -563,7 +563,7 @@ static void ch_sf_pkt_send(dap_stream_ch_t * a_ch, void * a_data, size_t a_data_ ...@@ -563,7 +563,7 @@ static void ch_sf_pkt_send(dap_stream_ch_t * a_ch, void * a_data, size_t a_data_
dap_stream_ch_set_ready_to_write(a_ch, true); dap_stream_ch_set_ready_to_write(a_ch, true);
} }
void ch_sf_tun_send(dap_chain_net_srv_vpn_t * ch_sf, void * pkt_data, size_t pkt_data_size) { void ch_sf_tun_send(dap_chain_net_srv_ch_vpn_t * ch_sf, void * pkt_data, size_t pkt_data_size) {
bool passPacket = true; bool passPacket = true;
/*switch(ch_sf_snort_pkt(pkt_data,pkt_data_size)){ /*switch(ch_sf_snort_pkt(pkt_data,pkt_data_size)){
case SNORT_ALERT: passPacket=false; break; case SNORT_ALERT: passPacket=false; break;
...@@ -627,7 +627,7 @@ void ch_sf_tun_send(dap_chain_net_srv_vpn_t * ch_sf, void * pkt_data, size_t pkt ...@@ -627,7 +627,7 @@ void ch_sf_tun_send(dap_chain_net_srv_vpn_t * ch_sf, void * pkt_data, size_t pkt
* @param a_pkt * @param a_pkt
* @param a_pkt_data_size * @param a_pkt_data_size
*/ */
int ch_sf_tun_addr_leased(dap_chain_net_srv_vpn_t * a_sf, ch_vpn_pkt_t * a_pkt, size_t a_pkt_data_size) int ch_sf_tun_addr_leased(dap_chain_net_srv_ch_vpn_t * a_sf, ch_vpn_pkt_t * a_pkt, size_t a_pkt_data_size)
{ {
// we'd receive address assigment from server // we'd receive address assigment from server
struct in_addr l_addr = { 0 }; struct in_addr l_addr = { 0 };
......
...@@ -22,10 +22,12 @@ ...@@ -22,10 +22,12 @@
along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. along with any DAP based project. If not, see <http://www.gnu.org/licenses/>.
*/ */
#pragma once
#include "dap_chain_net_srv_vpn.h"
int dap_chain_net_vpn_client_tun_init(const char *a_ipv4_gw_str); int dap_chain_net_vpn_client_tun_init(const char *a_ipv4_gw_str);
int dap_chain_net_vpn_client_tun_create(const char *a_ipv4_addr_str, const char *a_ipv4_gw_str); int dap_chain_net_vpn_client_tun_create(const char *a_ipv4_addr_str, const char *a_ipv4_gw_str);
int dap_chain_net_vpn_client_tun_delete(void); int dap_chain_net_vpn_client_tun_delete(void);
int dap_chain_net_vpn_client_tun_status(void); int dap_chain_net_vpn_client_tun_status(void);
int ch_sf_tun_addr_leased(dap_chain_net_srv_vpn_t * a_sf, ch_vpn_pkt_t * a_pkt, size_t a_pkt_data_size); int ch_sf_tun_addr_leased(dap_chain_net_srv_ch_vpn_t * a_sf, ch_vpn_pkt_t * a_pkt, size_t a_pkt_data_size);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment