/* Daemon init sequence */ static void start_check(void) { /* Initialize sub-system */ if (ipvs_start() != IPVS_SUCCESS) { stop_check(KEEPALIVED_EXIT_FATAL); return; } init_checkers_queue(); #ifdef _WITH_VRRP_ init_interface_queue(); kernel_netlink_init(); #endif /* Parse configuration file */ global_data = alloc_global_data(); check_data = alloc_check_data(); if (!check_data) stop_check(KEEPALIVED_EXIT_FATAL); init_data(conf_file, check_init_keywords); init_global_data(global_data); /* Post initializations */ #ifdef _MEM_CHECK_ log_message(LOG_INFO, "Configuration is using : %zu Bytes", mem_allocated); #endif /* Remove any entries left over from previous invocation */ if (!reload && global_data->lvs_flush) ipvs_flush_cmd(); #ifdef _WITH_SNMP_CHECKER_ if (!reload && global_data->enable_snmp_checker) check_snmp_agent_init(global_data->snmp_socket); #endif /* SSL load static data & initialize common ctx context */ if (!init_ssl_ctx()) stop_check(KEEPALIVED_EXIT_FATAL); /* fill 'vsg' members of the virtual_server_t structure. * We must do that after parsing config, because * vs and vsg declarations may appear in any order */ link_vsg_to_vs(); /* Set the process priority and non swappable if configured */ if (global_data->checker_process_priority) set_process_priority(global_data->checker_process_priority); if (global_data->checker_no_swap) set_process_dont_swap(4096); /* guess a stack size to reserve */ /* Processing differential configuration parsing */ if (reload) clear_diff_services(); /* Initialize IPVS topology */ if (!init_services()) stop_check(KEEPALIVED_EXIT_FATAL); /* Dump configuration */ if (__test_bit(DUMP_CONF_BIT, &debug)) { dump_global_data(global_data); dump_check_data(check_data); } #ifdef _WITH_VRRP_ /* Initialize linkbeat */ init_interface_linkbeat(); #endif /* Register checkers thread */ register_checkers_thread(); }
/* Daemon init sequence */ static void start_check(void) { /* Initialize sub-system */ if (ipvs_start() != IPVS_SUCCESS) { stop_check(); return; } init_checkers_queue(); #ifdef _WITH_VRRP_ init_interface_queue(); kernel_netlink_init(); #endif #ifdef _WITH_SNMP_ if (!reload && snmp) check_snmp_agent_init(snmp_socket); #endif /* Parse configuration file */ global_data = alloc_global_data(); check_data = alloc_check_data(); init_data(conf_file, check_init_keywords); if (!check_data) { stop_check(); return; } init_global_data(global_data); /* Post initializations */ #ifdef _DEBUG_ log_message(LOG_INFO, "Configuration is using : %lu Bytes", mem_allocated); #endif /* SSL load static data & initialize common ctx context */ if (!init_ssl_ctx()) { stop_check(); return; } /* fill 'vsg' members of the virtual_server_t structure. * We must do that after parsing config, because * vs and vsg declarations may appear in any order */ link_vsg_to_vs(); /* Processing differential configuration parsing */ if (reload) clear_diff_services(); /* Initialize IPVS topology */ if (!init_services()) { stop_check(); return; } /* Dump configuration */ if (__test_bit(DUMP_CONF_BIT, &debug)) { dump_global_data(global_data); dump_check_data(check_data); } #ifdef _WITH_VRRP_ /* Initialize linkbeat */ init_interface_linkbeat(); #endif /* Register checkers thread */ register_checkers_thread(); }