Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/delete trudp v1 #132

Merged
merged 7 commits into from
Sep 18, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions app/teogw.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void event_cb(ksnetEvMgrClass *ke, ksnetEvMgrEvents event, void *data,
// Set default namespace
case EV_K_STARTED:

ksn_printf(ke, NULL, DEBUG, "Host '%s' started at network '%s'...\n",
ksn_printf(ke, "", DEBUG, "Host '%s' started at network '%s'...\n",
ksnetEvMgrGetHostName(ke), ke->ksn_cfg.network);

// Set application type
Expand All @@ -56,7 +56,7 @@ void event_cb(ksnetEvMgrClass *ke, ksnetEvMgrEvents event, void *data,
// start new network
if(!strcmp(ke->ksn_cfg.network,"local")) {
const char* net = "NEW_NET";
ksn_printf(ke, NULL, DEBUG, "Dynamically add new network %s\n", net);
ksn_printf(ke, "", DEBUG, "Dynamically add new network %s\n", net);
teoMultiAddNet(ke->km, event_cb, "NEW_HOST", 0, net, NULL);
}

Expand All @@ -65,14 +65,14 @@ void event_cb(ksnetEvMgrClass *ke, ksnetEvMgrEvents event, void *data,
// Show connected peers
case EV_K_CONNECTED: {
// const ksnCorePacketData *rd = (ksnCorePacketData *) data;
ksn_printf(ke, NULL, DEBUG, "Peer '%s' connected at network '%s'...\n",
ksn_printf(ke, "", DEBUG, "Peer '%s' connected at network '%s'...\n",
rd->from, ke->ksn_cfg.network);
} break;

// Show disconnected peers
case EV_K_DISCONNECTED: {
// const ksnCorePacketData *rd = (ksnCorePacketData *) data;
ksn_printf(ke, NULL, DEBUG, "Peer '%s' disconnected at network '%s'...\n",
ksn_printf(ke, "", DEBUG, "Peer '%s' disconnected at network '%s'...\n",
rd->from, ke->ksn_cfg.network);
} break;

Expand Down
34 changes: 7 additions & 27 deletions examples/teoackm.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,38 +142,18 @@ void event_cb(ksnetEvMgrClass *ke, ksnetEvMgrEvents event, void *data,
{
ksnet_arp_data *arp = (ksnet_arp_data *)ksnetArpGet(ke->kc->ka, peer_to);
if(arp != NULL) {

// Make address from string
struct sockaddr_in remaddr; // remote address
socklen_t addrlen = sizeof(remaddr); // length of addresses
// memset((char *) &remaddr, 0, addrlen);
// remaddr.sin_family = AF_INET;
// remaddr.sin_port = htons(arp->port);
// #ifndef HAVE_MINGW
// if(inet_aton(arp->addr, &remaddr.sin_addr) == 0) {
// //return(-2);
// }
// #else
// remaddr.sin_addr.s_addr = inet_addr(addr);
// #endif
if(!make_addr(arp->addr, arp->port,
(__SOCKADDR_ARG) &remaddr, &addrlen)) {

#if TRUDP_VERSION == 1
ksnTRUDPresetSend(ke->kc->ku, ke->kc->fd,
(__CONST_SOCKADDR_ARG) &remaddr);
ksnTRUDPreset(ke->kc->ku,
(__CONST_SOCKADDR_ARG) &remaddr, 0);
ksnTRUDPstatReset(ke->kc->ku);
#else
trudpChannelData *tcd;
if((tcd = trudpGetChannel(
ke->kc->ku, (__CONST_SOCKADDR_ARG)&remaddr, 0)) != (void*)-1)
trudp_ChannelSendReset(tcd);
#endif

if(!make_addr(arp->addr, arp->port, (__SOCKADDR_ARG) &remaddr, &addrlen)) {
trudpChannelData *tcd = trudpGetChannel(ke->kc->ku, (__CONST_SOCKADDR_ARG)&remaddr, 0);
if((tcd != (void*)-1) || (tcd != NULL)) {
trudp_ChannelSendReset(tcd);
}
}
}

// Show menu
ke->event_cb(ke, EV_K_USER , NULL, 0, NULL);
}
Expand Down
1 change: 0 additions & 1 deletion src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ nobase_teonetinclude_HEADERS = \
net_recon.h \
net_split.h \
tr-udp.h \
tr-udp_.h \
tr-udp_stat.h \
pidfile.h \
teonet.hpp \
Expand Down
35 changes: 14 additions & 21 deletions src/ev_mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include "utils/rlutil.h"
#include "modules/metric.h"

#define MODULE _ANSI_CYAN "event_manager" _ANSI_NONE
#define MODULE "event_manager"

// Global module variables
static int teoRestartApp_f = 0; // Restart teonet application before exit
Expand Down Expand Up @@ -915,51 +915,44 @@ int check_connected_cb(ksnetArpClass *ka, char *peer_name,
* @param revents
*/
void idle_cb (EV_P_ ev_idle *w, int revents) {

#define kev ((ksnetEvMgrClass *)((ksnCoreClass *)w->data)->ke)
ksnetEvMgrClass *ke = ((ksnCoreClass *)w->data)->ke;

#ifdef DEBUG_KSNET
ksn_printf(kev, MODULE, DEBUG_VV, "idle callback %d\n", kev->idle_count);
ksn_printf(ke, MODULE, DEBUG_VV, "idle callback %d\n", ke->idle_count);
#endif

// Stop this watcher
ev_idle_stop(EV_A_ w);

// Idle count startup (first time run)
if(!kev->idle_count) {
if(!ke->idle_count) {
//! \todo: open_local_port(kev);
#if TRUDP_VERSION == 1
// Set statistic start time
if(!kev->kc->ku->started) kev->kc->ku->started = ksnetEvMgrGetTime(kev);
#endif
// Connect to R-Host
connect_r_host_cb(kev);
connect_r_host_cb(ke);
// Send event to application
if(kev->ta) kev->ta->t_id = pthread_self();
if(kev->event_cb != NULL) kev->event_cb(kev, EV_K_STARTED, NULL, 0, NULL);
if(ke->ta) ke->ta->t_id = pthread_self();
if(ke->event_cb != NULL) ke->event_cb(ke, EV_K_STARTED, NULL, 0, NULL);
// Start host socket in the event manager
if(!kev->ksn_cfg.r_tcp_f) {
ev_io_start(kev->ev_loop, &kev->kc->host_w);
if(!ke->ksn_cfg.r_tcp_f) {
ev_io_start(ke->ev_loop, &ke->kc->host_w);
}
}
// Idle count max value
else if(kev->idle_count == UINT32_MAX) kev->idle_count = 0;
else if(ke->idle_count == UINT32_MAX) ke->idle_count = 0;

// Increment count
kev->idle_count++;
ke->idle_count++;

// Check host events to send him service information
//! \todo: host_cb(EV_A_ (ev_io*)w, revents);

// Send idle Event
if(kev->event_cb != NULL) {
kev->event_cb(kev, EV_K_IDLE , NULL, 0, NULL);
if(ke->event_cb != NULL) {
ke->event_cb(ke, EV_K_IDLE , NULL, 0, NULL);
}

// Set last host event time
ksnCoreSetEventTime(kev->kc);

#undef kev
ksnCoreSetEventTime(ke->kc);
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/modules/l0-server.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ static bool processKeyExchange(ksnLNullClass *kl, ksnLNullData *kld, int fd,
// Other modules not declared functions
void *ksnCoreCreatePacket(ksnCoreClass *kc, uint8_t cmd, const void *data,
size_t data_len, size_t *packet_len);
#include "tr-udp_.h" // ksnTRUDPmakeAddr

// External constants
extern const char *localhost;
Expand Down
1 change: 0 additions & 1 deletion src/modules/tcp_proxy.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

#include "ev_mgr.h"
#include "net_core.h"
#include "tr-udp_.h"
#include "utils/rlutil.h"

#define MODULE _ANSI_YELLOW "tcp_proxy" _ANSI_NONE
Expand Down
74 changes: 14 additions & 60 deletions src/net_arp.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <string.h>

#include "ev_mgr.h"
#include "tr-udp_.h"
#include "utils/rlutil.h"
#include "utils/utils.h"
#include "utils/teo_memory.h"
Expand Down Expand Up @@ -150,10 +149,9 @@ void *ksnetArpSetHostPort(ksnetArpClass *ka, char* name, int port) {
*
* @param ka Pointer to ksnetArpClass
* @param name Peer name to remove
* @return True if successfully removed
* @return 1 if successfully removed
*/
int ksnetArpRemove(ksnetArpClass *ka, char* name) {

size_t var_len = 0;
char* peer_name = strdup(name);

Expand All @@ -162,17 +160,11 @@ int ksnetArpRemove(ksnetArpClass *ka, char* name) {

// If removed successfully
if(arp != (void*)-1) {

// Remove peer from TR-UDP module
// \TODO The 'if(arp)' was added because we drop here. Check why arp may be NULL.
if(arp) {
#if TRUDP_VERSION == 1
ksnTRUDPresetAddr(((ksnetEvMgrClass*) ka->ke)->kc->ku, arp->addr,
arp->port, 1);
#elif TRUDP_VERSION == 2
trudpChannelDestroyAddr(((ksnetEvMgrClass*) ka->ke)->kc->ku, arp->data.addr,
arp->data.port, 0);
#endif
}

// Remove from Stream module
Expand All @@ -187,6 +179,7 @@ int ksnetArpRemove(ksnetArpClass *ka, char* name) {
if(arp->type) free(arp->type);
free(arp);
}

free(peer_name);

return arp ? 1 : 0;
Expand All @@ -200,30 +193,25 @@ int ksnetArpRemove(ksnetArpClass *ka, char* name) {
* @param ka
*/
void ksnetArpRemoveAll(ksnetArpClass *ka) {

ksnetEvMgrClass *ke = ka->ke;
PblIterator *it = pblMapIteratorNew(ka->map);
if(it != NULL) {

if(it != NULL) {
while(pblIteratorHasNext(it)) {

void *entry = pblIteratorNext(it);
char *name = pblMapEntryKey(entry);
ksnet_arp_data_ext *arp = pblMapEntryValue(entry);
if(arp->type) free(arp->type);
}

pblIteratorFree(it);
}

pblMapFree(ka->map);
ke->ksn_cfg.r_host_name[0] = '\0';
ka->map = pblMapNewHashMap();
ksnetArpAddHost(ka);
#if TRUDP_VERSION == 1
ksnTRUDPremoveAll(ke->kc->ku);
#elif TRUDP_VERSION == 2
trudpChannelDestroyAll(ke->kc->ku);
#endif
}

/**
Expand Down Expand Up @@ -533,7 +521,6 @@ char *ksnetArpShowLine(int num, char *name, ksnet_arp_data* data) {
* @return String with formated ARP table. Should be free after use
*/
char *ksnetArpShowStr(ksnetArpClass *ka) {

char *str;
const char *div = "-------------------------------------------------------"
"----------------------------\n";
Expand All @@ -548,99 +535,66 @@ char *ksnetArpShowStr(ksnetArpClass *ka) {

PblIterator *it = pblMapIteratorNew(ka->map);
int num = 0;
if(it != NULL) {

if(it != NULL) {
while(pblIteratorHasNext(it)) {

void *entry = pblIteratorNext(it);
char *name = pblMapEntryKey(entry);
ksnet_arp_data *data = pblMapEntryValue(entry);
char *last_triptime = ksnet_formatMessage("%7.3f",
data->last_triptime);

// Get TR-UDP ip map data by key
#if TRUDP_VERSION == 1
size_t val_len;
size_t key_len = KSN_BUFFER_SM_SIZE;
char key[key_len];
key_len = snprintf(key, key_len, "%s:%d", data->addr, data->port);
ip_map_data *ip_map_d = pblMapGet(
((ksnetEvMgrClass*)ka->ke)->kc->ku->ip_map, key, key_len,
&val_len);

// Last trip time
char *tcp_last_triptime = ip_map_d != NULL ?
ksnet_formatMessage("%7.3f / ",
ip_map_d->stat.triptime_last/1000.0) : strdup(null_str);

// Last 10 max trip time
char *tcp_triptime_last10_max = ip_map_d != NULL ?
ksnet_formatMessage("%.3f ms",
ip_map_d->stat.triptime_last_max/1000.0) : strdup(null_str);

#elif TRUDP_VERSION == 2
char *last_triptime = ksnet_formatMessage("%7.3f", data->last_triptime);

// Get TR-UDP by address and port
trudpChannelData *tcd = trudpGetChannelAddr(
((ksnetEvMgrClass*)ka->ke)->kc->ku,
data->addr, data->port, 0
);

// Set Last and Middle trip time
char *tcp_last_triptime, *tcp_triptime_last10_max;
if(tcd != (void*)-1) {
tcp_last_triptime = ksnet_formatMessage("%7.3f / ",
tcd->triptime/1000.0);
tcp_triptime_last10_max = ksnet_formatMessage("%.3f ms",
tcd->triptimeMiddle/1000.0);
}
else {
tcp_last_triptime = ksnet_formatMessage("%7.3f / ", tcd->triptime/1000.0);
tcp_triptime_last10_max = ksnet_formatMessage("%.3f ms", tcd->triptimeMiddle/1000.0);
} else {
tcp_last_triptime = strdup(null_str);
tcp_triptime_last10_max = strdup(null_str);
}
#endif

str = ksnet_sformatMessage(str, "%s"
"%3d %s%-15s%s %3d %-15s %5d %7s %s %s%s%s\n",
str,

// Number
++num,

// Peer name
getANSIColor(LIGHTGREEN), name, getANSIColor(NONE),

// Index
data->mode,

// IP
data->addr,

// Port
data->port,

// Trip time
data->mode < 0 ? "" : last_triptime,

// ARP Trip time type (ms)
data->mode < 0 ? "" : "ms",

// TCP Proxy last trip time type (ms)
"",
tcp_last_triptime,
tcp_triptime_last10_max

// Rx/Tx
//"", //(data->idx >= 0 && data->direct_con ? itoa( (&kn->host->peers[data->idx])->incomingDataTotal) : ""),
//"", // (data->idx >= 0 && data->direct_con ? "/" : ""),
//"" //(data->idx >= 0 && data->direct_con ? itoa( (&kn->host->peers[data->idx])->outgoingDataTotal) : "")
);

free(last_triptime);
free(tcp_last_triptime);
free(tcp_triptime_last10_max);
}

pblIteratorFree(it);
}
str = ksnet_sformatMessage(str, "%s%s", str, div);

str = ksnet_sformatMessage(str, "%s%s", str, div);

return str;
}
Expand Down
Loading