mirror of
https://github.com/ntop/n2n.git
synced 2024-09-20 00:51:10 +02:00
Merge branch 'fix_sn_mgmt_core2' into fix_sn_mgmt_core
This commit is contained in:
commit
d7605edfd7
|
@ -15,6 +15,11 @@ static ssize_t sendto_sock(n2n_sn_t *sss,
|
|||
const uint8_t *pktbuf,
|
||||
size_t pktsize);
|
||||
|
||||
static int sendto_mgmt(n2n_sn_t *sss,
|
||||
const struct sockaddr_in *sender_sock,
|
||||
const uint8_t *mgmt_buf,
|
||||
size_t mgmt_size);
|
||||
|
||||
static int try_broadcast(n2n_sn_t * sss,
|
||||
const struct sn_community *comm,
|
||||
const n2n_common_t * cmn,
|
||||
|
@ -295,10 +300,11 @@ static int process_mgmt(n2n_sn_t *sss,
|
|||
char resbuf[N2N_SN_PKTBUF_SIZE];
|
||||
size_t ressize = 0;
|
||||
uint32_t num_edges = 0;
|
||||
ssize_t r;
|
||||
uint32_t num = 0;
|
||||
struct sn_community *community, *tmp;
|
||||
struct peer_info * peer, *tmpPeer;
|
||||
macstr_t mac_buf;
|
||||
n2n_sock_str_t sockbuf;
|
||||
|
||||
traceEvent(TRACE_DEBUG, "process_mgmt");
|
||||
|
||||
|
@ -346,29 +352,45 @@ static int process_mgmt(n2n_sn_t *sss,
|
|||
(long unsigned int)(now - sss->stats.last_reg_super));
|
||||
|
||||
ressize += snprintf(resbuf+ressize, N2N_SN_PKTBUF_SIZE-ressize,
|
||||
"cur_cmnts");
|
||||
"cur_cmnts %u\n", HASH_COUNT(sss->communities));
|
||||
HASH_ITER(hh, sss->communities, community, tmp) {
|
||||
ressize += snprintf(resbuf + ressize, N2N_SN_PKTBUF_SIZE - ressize,
|
||||
" [%s]",
|
||||
community->community);
|
||||
"community: %s\n", community->community);
|
||||
sendto_mgmt(sss, sender_sock, resbuf, ressize);
|
||||
ressize = 0;
|
||||
|
||||
num = 0;
|
||||
HASH_ITER(hh, community->edges, peer, tmpPeer) {
|
||||
ressize += snprintf(resbuf + ressize, N2N_SN_PKTBUF_SIZE - ressize,
|
||||
" {%s}",
|
||||
macaddr_str(mac_buf, peer->mac_addr));
|
||||
"\t[id: %u][MAC: %s][edge: %s][last seen: %lu sec ago]\n",
|
||||
++num, macaddr_str(mac_buf, peer->mac_addr),
|
||||
sock_to_cstr(sockbuf, &(peer->sock)), now-peer->last_seen);
|
||||
|
||||
sendto_mgmt(sss, sender_sock, resbuf, ressize);
|
||||
ressize = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ressize += snprintf(resbuf+ressize, N2N_SN_PKTBUF_SIZE-ressize,
|
||||
"\n");
|
||||
sendto_mgmt(sss, sender_sock, resbuf, ressize);
|
||||
|
||||
r = sendto(sss->mgmt_sock, resbuf, ressize, 0 /*flags*/,
|
||||
(struct sockaddr *)sender_sock, sizeof(struct sockaddr_in));
|
||||
|
||||
if (r <= 0)
|
||||
{
|
||||
++(sss->stats.errors);
|
||||
traceEvent(TRACE_ERROR, "process_mgmt : sendto failed. %s", strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sendto_mgmt(n2n_sn_t *sss,
|
||||
const struct sockaddr_in *sender_sock,
|
||||
const uint8_t *mgmt_buf,
|
||||
size_t mgmt_size)
|
||||
{
|
||||
ssize_t r = sendto(sss->mgmt_sock, mgmt_buf, mgmt_size, 0 /*flags*/,
|
||||
(struct sockaddr *)sender_sock, sizeof (struct sockaddr_in));
|
||||
|
||||
if (r <= 0) {
|
||||
++(sss->stats.errors);
|
||||
traceEvent (TRACE_ERROR, "process_mgmt : sendto failed. %s", strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user