20180929 更新负载端口

This commit is contained in:
lishu
2018-09-29 17:51:33 +08:00
parent 19cfcaf353
commit 8121ece1e4
5 changed files with 44 additions and 14 deletions

View File

@@ -232,4 +232,5 @@ capacity=32
cost=32
wlb_report_interval=10
hard_balance_port=20000
bfd_recv_port=
bfd_send_port=

View File

@@ -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;

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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