20180929 更新负载端口
This commit is contained in:
@@ -232,4 +232,5 @@ capacity=32
|
||||
cost=32
|
||||
wlb_report_interval=10
|
||||
|
||||
hard_balance_port=20000
|
||||
bfd_recv_port=
|
||||
bfd_send_port=
|
||||
@@ -106,12 +106,13 @@ int create_send_udp_socket()
|
||||
void* thread_hard_keepalive(void *param)
|
||||
{
|
||||
char buf[1500] = {0};
|
||||
long port = (long)param;
|
||||
char discriminator_temp[ID_SIZE] = {0};
|
||||
bfd_port_t* bfd_port = (bfd_port_t*)param;
|
||||
int size = 0;
|
||||
uint32_t src_ip = 0;
|
||||
int send_rec = 0;
|
||||
fd_set rset;
|
||||
int recv_pkt_sd = create_recv_udp_socket(htons(port));
|
||||
int recv_pkt_sd = create_recv_udp_socket(htons(bfd_port->recv_port));
|
||||
int send_pkt_sd = create_send_udp_socket();
|
||||
|
||||
if(-1==recv_pkt_sd || -1==send_pkt_sd)
|
||||
@@ -133,9 +134,13 @@ void* thread_hard_keepalive(void *param)
|
||||
size = udp_socket_recv(recv_pkt_sd, &src_ip, (unsigned char*)buf, sizeof(buf));
|
||||
if(size>0)
|
||||
{
|
||||
/*<2A><><EFBFBD><EFBFBD>discriminator*/
|
||||
memcpy(discriminator_temp, buf+MY_ID_OFFSET, ID_SIZE);
|
||||
memcpy(buf+MY_ID_OFFSET, buf+YOUR_ID_OFFSET, ID_SIZE);
|
||||
memcpy(buf+YOUR_ID_OFFSET, discriminator_temp, ID_SIZE);
|
||||
send_rec = udp_socket_send(send_pkt_sd,
|
||||
src_ip,
|
||||
htons(port),
|
||||
htons(bfd_port->send_port),
|
||||
(char*)buf,size);
|
||||
if(-1==send_rec)
|
||||
{
|
||||
@@ -152,10 +157,8 @@ void* thread_hard_keepalive(void *param)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int hard_keepalive_run(uint32_t udp_port)
|
||||
int hard_keepalive_run(void* bfd_port)
|
||||
{
|
||||
if(udp_port<=0) return -1;
|
||||
|
||||
pthread_t thread_desc;
|
||||
pthread_attr_t attr;
|
||||
|
||||
@@ -170,7 +173,7 @@ int hard_keepalive_run(uint32_t udp_port)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if(0 != pthread_create(&(thread_desc), &(attr), thread_hard_keepalive, (void*)udp_port))
|
||||
if(0 != pthread_create(&(thread_desc), &(attr), thread_hard_keepalive, (void*)bfd_port))
|
||||
{
|
||||
pthread_attr_destroy(&(attr));
|
||||
return -1;
|
||||
|
||||
@@ -1,14 +1,35 @@
|
||||
#ifndef _HARD_KEEPALIVE_H
|
||||
#define _HARD_KEEPALIVE_H
|
||||
|
||||
typedef struct bfd_port_s
|
||||
{
|
||||
uint32_t recv_port;
|
||||
uint32_t send_port;
|
||||
}bfd_port_t;
|
||||
|
||||
#define MY_ID_OFFSET 4
|
||||
#define YOUR_ID_OFFSET 8
|
||||
#define ID_SIZE 4
|
||||
typedef struct bfd_header_s
|
||||
{
|
||||
unsigned char version_diag;
|
||||
unsigned char flags;
|
||||
unsigned char detect_time_multiplier;
|
||||
unsigned char length;
|
||||
unsigned char my_discriminator[4]; /* ҵ?º? ²²â*/
|
||||
unsigned char your_discriminator[4];
|
||||
unsigned char desired_min_tx_interval[4];
|
||||
unsigned char required_min_rx_interval[4];
|
||||
unsigned char required_min_echo_interval[4];
|
||||
}bfd_header_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*return 0:succ -1:fail*/
|
||||
int hard_keepalive_run(uint32_t udp_port);
|
||||
|
||||
/*return 0:succ -1:fail*/
|
||||
int hard_keepalive_run(void* bfd_port);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
10
src/main.c
10
src/main.c
@@ -740,7 +740,8 @@ int read_conf_and_init(const char* filename)
|
||||
MESA_load_profile_uint_def(filename, "WLB", "cost", (unsigned int*)&g_frag_cfg.cost,32);
|
||||
MESA_load_profile_uint_def(filename, "WLB", "wlb_report_interval", (unsigned int*)&g_frag_cfg.wlb_report_interval,10);
|
||||
MESA_load_profile_uint_def(filename, "WLB", "enable_override", (unsigned int*)&g_frag_cfg.enable_override,0);
|
||||
MESA_load_profile_uint_def(filename, "WLB", "hard_balance_port", (unsigned int*)&g_frag_cfg.hard_balance_port,0);
|
||||
MESA_load_profile_uint_def(filename, "WLB", "bfd_recv_port", (unsigned int*)&g_frag_cfg.bfd_recv_port,0);
|
||||
MESA_load_profile_uint_def(filename, "WLB", "bfd_send_port", (unsigned int*)&g_frag_cfg.bfd_send_port,0);
|
||||
|
||||
/*send bizman :<3A><>ƴװ<C6B4><D7B0>ǰ<EFBFBD>˷<EFBFBD><CBB7><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>˿<EFBFBD>*/
|
||||
MESA_load_profile_short_def(filename, "NETWORK", "BizmanAckPort", (short*)&g_frag_cfg.bizman_ack_port,22084);
|
||||
@@ -1281,9 +1282,12 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if(g_frag_cfg.hard_balance_port>0)
|
||||
if(g_frag_cfg.bfd_recv_port>0 && g_frag_cfg.bfd_send_port>0)
|
||||
{
|
||||
hard_keepalive_run(g_frag_cfg.hard_balance_port);
|
||||
bfd_port_t bfd_port;
|
||||
bfd_port.recv_port = g_frag_cfg.bfd_recv_port;
|
||||
bfd_port.send_port = g_frag_cfg.bfd_send_port;
|
||||
hard_keepalive_run(&bfd_port);
|
||||
}
|
||||
|
||||
while(1)
|
||||
|
||||
@@ -241,7 +241,8 @@ typedef struct frag_rssb_configure_s
|
||||
uint32_t health_check_port;
|
||||
int16_t save_media;
|
||||
|
||||
uint32_t hard_balance_port;
|
||||
uint32_t bfd_recv_port;
|
||||
uint32_t bfd_send_port;
|
||||
}frag_rssb_configure_t;
|
||||
|
||||
typedef struct frag_rssb_status_s
|
||||
|
||||
Reference in New Issue
Block a user