From 66e60c32c0dd17b5e8c6db35f18b353e99556da0 Mon Sep 17 00:00:00 2001 From: Dmitriy Gerasimov <naeper@demlabs.net> Date: Wed, 10 Feb 2021 20:42:03 +0700 Subject: [PATCH] [+] Finished BSD port [-] For BSD: Switched off ping utility and VPN service --- modules/CMakeLists.txt | 6 ++++-- modules/chain/dap_chain.c | 2 +- modules/global-db/dap_chain_global_db_driver_cdb.c | 8 +++++++- modules/net/CMakeLists.txt | 2 +- modules/net/dap_chain_net.c | 7 ++++++- modules/net/dap_chain_node_dns_client.c | 4 ++-- modules/service/vpn/dap_chain_net_srv_vpn.c | 13 +++++++++++-- 7 files changed, 32 insertions(+), 10 deletions(-) diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 78ae7458e4..6023ff4717 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -73,8 +73,10 @@ if (CELLFRAME_MODULES MATCHES "srv-datum") endif() # Service VPN -if (CELLFRAME_MODULES MATCHES "srv-vpn") - add_subdirectory(service/vpn) +if(LINUX) + if (CELLFRAME_MODULES MATCHES "srv-vpn") + add_subdirectory(service/vpn) + endif() endif() # Service eXchange diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index b6b5943cad..d117a5ef9b 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -24,7 +24,7 @@ #include <dap_chain_ledger.h> #include <sys/types.h> #include <dirent.h> -#ifdef DAP_OS_UNIX +#ifdef DAP_OS_LINUX #include <stdc-predef.h> #endif #include <unistd.h> diff --git a/modules/global-db/dap_chain_global_db_driver_cdb.c b/modules/global-db/dap_chain_global_db_driver_cdb.c index 5b54ead3ac..fe44afcd95 100644 --- a/modules/global-db/dap_chain_global_db_driver_cdb.c +++ b/modules/global-db/dap_chain_global_db_driver_cdb.c @@ -197,12 +197,18 @@ int dap_db_driver_cdb_init(const char *a_cdb_path, dap_db_driver_callbacks_t *a_ #ifdef _DIRENT_HAVE_D_TYPE if (d->d_type != DT_DIR) continue; -#else +#elif defined(DAP_OS_LINUX) struct _stat buf; int res = _stat(d->d_name, &buf); if (!S_ISDIR(buf.st_mode) || !res) { continue; } +#elif defined (DAP_OS_BSD) + struct stat buf; + int res = stat(d->d_name, &buf); + if (!S_ISDIR(buf.st_mode) || !res) { + continue; + } #endif if (!dap_strcmp(d->d_name, ".") || !dap_strcmp(d->d_name, "..")) { continue; diff --git a/modules/net/CMakeLists.txt b/modules/net/CMakeLists.txt index 79fe22e7ca..3c1b2a9d5a 100644 --- a/modules/net/CMakeLists.txt +++ b/modules/net/CMakeLists.txt @@ -16,7 +16,7 @@ set(IPUTILS_INCLUDE_DIRS ../../3rdparty/iputils/traceroute/ ) -if(NOT (WIN32)) +if(LINUX) file(GLOB IPUTILS_SRCS ../../3rdparty/iputils/*.c ../../3rdparty/iputils/traceroute/*.c) file(GLOB IPUTILS_HEADERS ../../3rdparty/iputils/*.h ${IPUTILS_INCLUDE_DIRS}*.h) endif() diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index f13b831171..765113edd0 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -1648,7 +1648,12 @@ int s_net_load(const char * a_net_name, uint16_t a_acl_idx) l_node_info->hdr.address.uint64 = l_seed_node_addr->uint64; if ( l_node_info->hdr.ext_addr_v4.s_addr || - l_node_info->hdr.ext_addr_v6.s6_addr32[0] ){ + #ifdef DAP_OS_BSD + l_node_info->hdr.ext_addr_v6.__u6_addr.__u6_addr32[0] + #else + l_node_info->hdr.ext_addr_v6.s6_addr32[0] + #endif + ){ int l_ret; if ( (l_ret = dap_chain_node_info_save(l_net, l_node_info)) ==0 ){ if (dap_chain_node_alias_register(l_net,l_net_pvt->seed_aliases[i],l_seed_node_addr)) diff --git a/modules/net/dap_chain_node_dns_client.c b/modules/net/dap_chain_node_dns_client.c index 29c91805a7..2ed130ddc3 100644 --- a/modules/net/dap_chain_node_dns_client.c +++ b/modules/net/dap_chain_node_dns_client.c @@ -67,7 +67,7 @@ static void s_dns_client_esocket_read_callback(dap_events_socket_t * a_esocket, size_t l_addr_point = DNS_HEADER_SIZE + strlen(l_dns_client->name) + 2 + 2 * sizeof(uint16_t) + DNS_ANSWER_SIZE - sizeof(uint32_t); if (l_recieved < l_addr_point + sizeof(uint32_t)) { log_it(L_WARNING, "DNS answer incomplete"); - l_dns_client->callback_error(a_esocket->worker, l_dns_client->result,l_dns_client->callbacks_arg,EREMOTEIO ); + l_dns_client->callback_error(a_esocket->worker, l_dns_client->result,l_dns_client->callbacks_arg,EIO ); l_dns_client->is_callbacks_called = true; a_esocket->flags |= DAP_SOCK_SIGNAL_CLOSE; a_esocket->buf_in_size = a_esocket->buf_out_size = 0; @@ -77,7 +77,7 @@ static void s_dns_client_esocket_read_callback(dap_events_socket_t * a_esocket, int l_answers_count = ntohs(*(uint16_t *)l_cur); if (l_answers_count != 1) { log_it(L_WARNING, "Incorrect DNS answer format"); - l_dns_client->callback_error(a_esocket->worker, l_dns_client->result,l_dns_client->callbacks_arg,EMEDIUMTYPE ); + l_dns_client->callback_error(a_esocket->worker, l_dns_client->result,l_dns_client->callbacks_arg,EINVAL); l_dns_client->is_callbacks_called = true; a_esocket->flags |= DAP_SOCK_SIGNAL_CLOSE; a_esocket->buf_in_size = a_esocket->buf_out_size = 0; diff --git a/modules/service/vpn/dap_chain_net_srv_vpn.c b/modules/service/vpn/dap_chain_net_srv_vpn.c index d4a4c60020..8cff46d7a9 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn.c @@ -24,17 +24,26 @@ along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. */ -#ifdef DAP_OS_UNIX +#ifdef DAP_OS_LINUX #include <netinet/in.h> #include <linux/if.h> #include <linux/if_tun.h> #include <sys/ioctl.h> +#include <sys/epoll.h> +#endif + +#ifdef DAP_OS_BSD +#include <netinet/in.h> +#include <net/if.h> +#include <net/if_tun.h> +#include <sys/ioctl.h> #endif + + #include <sys/select.h> #include <sys/types.h> #include <sys/socket.h> -#include <sys/epoll.h> #include <sys/un.h> #include <netinet/in.h> -- GitLab