This commit is contained in:
lishu
2019-04-02 09:32:33 +08:00
parent e2c4b4e6a1
commit fb46b33447
3 changed files with 54 additions and 12 deletions

View File

@@ -19,6 +19,7 @@
#include "hard_keepalive.h" #include "hard_keepalive.h"
#include "main.h" #include "main.h"
#include "MESA_handle_logger.h"
extern frag_rssb_parameter_t g_frag_run; extern frag_rssb_parameter_t g_frag_run;
extern frag_rssb_configure_t g_frag_cfg; extern frag_rssb_configure_t g_frag_cfg;
@@ -134,17 +135,18 @@ void* thread_hard_keepalive(void *param)
memcpy(discriminator_temp, buf+MY_ID_OFFSET, ID_SIZE); memcpy(discriminator_temp, buf+MY_ID_OFFSET, ID_SIZE);
memcpy(buf+MY_ID_OFFSET, buf+YOUR_ID_OFFSET, ID_SIZE); memcpy(buf+MY_ID_OFFSET, buf+YOUR_ID_OFFSET, ID_SIZE);
memcpy(buf+YOUR_ID_OFFSET, discriminator_temp, ID_SIZE); memcpy(buf+YOUR_ID_OFFSET, discriminator_temp, ID_SIZE);
/*<2A><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>state״̬*/ /*<2A><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>state״̬*/
int state = 0; uint64_t state = getbit(g_frag_cfg.bfd_down_stat,0);
for(int i=0;i<g_frag_cfg.bfd_down_num;i++) for(uint64_t i=1;i<g_frag_cfg.bfd_down_num;i++)
{ {
state &= getbit(g_frag_cfg.bfd_down_stat,i); state &= getbit(g_frag_cfg.bfd_down_stat,i);
} }
if(state) if(state)
{ {
/*STATE_DOWN 2bit: 0 1*/ /*STATE_DOWN 2bit: 0 1*/
clrbit(((bfd_header_t*)buf clrbit(((bfd_header_t*)buf)->flags,7);
)->flags,8); setbit(((bfd_header_t*)buf)->flags,6);
printf("wait_queue is overflow, app is down.\n"); printf("wait_queue is overflow, app is down.\n");
MESA_handle_runtime_log(g_frag_run.logger, RLOG_LV_FATAL, FRAG_REASSEMBLY_MODULE_NAME, MESA_handle_runtime_log(g_frag_run.logger, RLOG_LV_FATAL, FRAG_REASSEMBLY_MODULE_NAME,
"{%s:%d} wait_queue is overflow, app is down.", "{%s:%d} wait_queue is overflow, app is down.",
@@ -152,9 +154,9 @@ void* thread_hard_keepalive(void *param)
} }
else else
{ {
else /*STATE_UP 2bit: 1 1*/
{ setbit(((bfd_header_t*)buf)->flags,7);
/*STATE_UP 2bit: 1 1*/ setbit(((bfd_header_t*)buf)->flags,6);
} }
send_rec = udp_socket_send(recv_pkt_sd, send_rec = udp_socket_send(recv_pkt_sd,
src_ip, src_ip,

View File

@@ -25,6 +25,9 @@
#include "frag_reassembly_in.h" #include "frag_reassembly_in.h"
#include "log.h" #include "log.h"
#include "main.h" #include "main.h"
#include "MESA_handle_logger.h"
#include "hard_keepalive.h"
extern frag_rssb_parameter_t g_frag_run; extern frag_rssb_parameter_t g_frag_run;
extern frag_rssb_configure_t g_frag_cfg; extern frag_rssb_configure_t g_frag_cfg;
@@ -381,7 +384,43 @@ void get_rssb_queuelog_count()
setbit(g_frag_cfg.bfd_down_stat,g_frag_cfg.bfd_down_index); setbit(g_frag_cfg.bfd_down_stat,g_frag_cfg.bfd_down_index);
} }
g_frag_cfg.bfd_down_index++; g_frag_cfg.bfd_down_index++;
g_frag_cfg.bfd_down_index = g_frag_cfg.bfd_down_index%g_frag_cfg.bfd_down_num; g_frag_cfg.bfd_down_index = g_frag_cfg.bfd_down_index%g_frag_cfg.bfd_down_num;
/*
uint64_t state = getbit(g_frag_cfg.bfd_down_stat,0);
for(uint64_t i=1;i<g_frag_cfg.bfd_down_num;i++)
{
state &= getbit(g_frag_cfg.bfd_down_stat,i);
}
printf("%lld\n", g_frag_cfg.bfd_down_stat);
printf("%d\n\n", state);
if(state)
{
printf("wait_queue is overflow, app is down.\n");
MESA_handle_runtime_log(g_frag_run.logger, RLOG_LV_FATAL, FRAG_REASSEMBLY_MODULE_NAME,
"{%s:%d} wait_queue is overflow, app is down.",
__FILE__,__LINE__);
}
char buf[1500] = {0};
setbit(((bfd_header_t*)buf)->flags,7);
setbit(((bfd_header_t*)buf)->flags,6);
if(state)
{
clrbit(((bfd_header_t*)buf)->flags,7);
setbit(((bfd_header_t*)buf)->flags,6);
printf("wait_queue is overflow, app is down.\n");
MESA_handle_runtime_log(g_frag_run.logger, RLOG_LV_FATAL, FRAG_REASSEMBLY_MODULE_NAME,
"{%s:%d} wait_queue is overflow, app is down.",
__FILE__,__LINE__);
}
else
{
setbit(((bfd_header_t*)buf)->flags,7);
setbit(((bfd_header_t*)buf)->flags,6);
}
*/
} }
void get_rssb_hashlog_count() void get_rssb_hashlog_count()

View File

@@ -23,6 +23,7 @@ typedef long atomic_t;
#define setbit(x,y) x|=(1<<y) #define setbit(x,y) x|=(1<<y)
#define clrbit(x,y) x&=~(1<<y) #define clrbit(x,y) x&=~(1<<y)
#define getbit(x,y) ((x) >> (y)&1)
/*********************************************debug log type***********************************/ /*********************************************debug log type***********************************/
typedef enum typedef enum