void vrrp_print_data(void) { FILE *file; file = fopen ("/tmp/keepalived.data","w"); fprintf(file, "------< VRRP Topology >------\n"); vrrp_print_list(file, vrrp_data->vrrp, &vrrp_print); if (!LIST_ISEMPTY(vrrp_data->vrrp_sync_group)) { fprintf(file, "------< VRRP Sync groups >------\n"); vrrp_print_list(file, vrrp_data->vrrp_sync_group, &vgroup_print); } fclose(file); }
void vrrp_print_data(void) { FILE *file; file = fopen ("/tmp/keepalived.data","w"); if (!file) { log_message(LOG_INFO, "Can't open /tmp/keepalived.data (%d: %s)", errno, strerror(errno)); return; } fprintf(file, "------< VRRP Topology >------\n"); vrrp_print_list(file, vrrp_data->vrrp, &vrrp_print); if (!LIST_ISEMPTY(vrrp_data->vrrp_sync_group)) { fprintf(file, "------< VRRP Sync groups >------\n"); vrrp_print_list(file, vrrp_data->vrrp_sync_group, &vgroup_print); } fclose(file); }
void vrrp_print(FILE *file, void *data) { vrrp_t *vrrp = data; char auth_data[sizeof(vrrp->auth_data) + 1]; fprintf(file, " VRRP Instance = %s\n", vrrp->iname); fprintf(file, " VRRP Version = %d\n", vrrp->version); if (vrrp->family == AF_INET6) fprintf(file, " Using Native IPv6\n"); if (vrrp->state == VRRP_STATE_BACK) { fprintf(file, " State = BACKUP\n"); fprintf(file, " Master router = %s\n", inet_sockaddrtos(&vrrp->master_saddr)); fprintf(file, " Master priority = %d\n", vrrp->master_priority); } else if (vrrp->state == VRRP_STATE_FAULT) fprintf(file, " State = FAULT\n"); else if (vrrp->state == VRRP_STATE_MAST) fprintf(file, " State = MASTER\n"); else fprintf(file, " State = %d\n", vrrp->state); fprintf(file, " Last transition = %ld\n", vrrp->last_transition.tv_sec); fprintf(file, " Listening device = %s\n", IF_NAME(vrrp->ifp)); if (vrrp->dont_track_primary) fprintf(file, " VRRP interface tracking disabled\n"); fprintf(file, " Using src_ip = %s\n", inet_sockaddrtos(&vrrp->saddr)); if (vrrp->lvs_syncd_if) fprintf(file, " Runing LVS sync daemon on interface = %s\n", vrrp->lvs_syncd_if); if (vrrp->garp_delay) fprintf(file, " Gratuitous ARP delay = %d\n", vrrp->garp_delay/TIMER_HZ); fprintf(file, " Virtual Router ID = %d\n", vrrp->vrid); fprintf(file, " Priority = %d\n", vrrp->base_priority); fprintf(file, " Advert interval = %d %s\n", (vrrp->version == VRRP_VERSION_2) ? (vrrp->adver_int / TIMER_HZ) : (vrrp->adver_int * 1000 / TIMER_HZ), (vrrp->version == VRRP_VERSION_2) ? "sec" : "milli-sec"); fprintf(file, " Accept = %s\n", ((vrrp->accept) ? "enabled" : "disabled")); if (vrrp->nopreempt) fprintf(file, " Preempt = disabled\n"); else fprintf(file, " Preempt = enabled\n"); if (vrrp->preempt_delay) fprintf(file, " Preempt delay = %ld secs\n", vrrp->preempt_delay / TIMER_HZ); if (vrrp->auth_type) { fprintf(file, " Authentication type = %s\n", (vrrp->auth_type == VRRP_AUTH_AH) ? "IPSEC_AH" : "SIMPLE_PASSWORD"); if (vrrp->auth_type != VRRP_AUTH_AH) { /* vrrp->auth_data is not \0 terminated */ memcpy(auth_data, vrrp->auth_data, sizeof(vrrp->auth_data)); auth_data[sizeof(vrrp->auth_data)] = '\0'; fprintf(file, " Password = %s\n", auth_data); } } else fprintf(file, " Authentication type = none\n"); if (!LIST_ISEMPTY(vrrp->track_ifp)) { fprintf(file, " Tracked interfaces = %d\n", LIST_SIZE(vrrp->track_ifp)); vrrp_print_list(file, vrrp->track_ifp, &if_print); } if (!LIST_ISEMPTY(vrrp->track_script)) { fprintf(file, " Tracked scripts = %d\n", LIST_SIZE(vrrp->track_script)); vrrp_print_list(file, vrrp->track_script, &vscript_print); } if (!LIST_ISEMPTY(vrrp->vip)) { fprintf(file, " Virtual IP = %d\n", LIST_SIZE(vrrp->vip)); vrrp_print_list(file, vrrp->vip, &address_print); } if (!LIST_ISEMPTY(vrrp->evip)) { fprintf(file, " Virtual IP Excluded = %d\n", LIST_SIZE(vrrp->evip)); vrrp_print_list(file, vrrp->evip, &address_print); } if (!LIST_ISEMPTY(vrrp->vroutes)) { fprintf(file, " Virtual Routes = %d\n", LIST_SIZE(vrrp->vroutes)); vrrp_print_list(file, vrrp->vroutes, &route_print); } if (!LIST_ISEMPTY(vrrp->vrules)) { fprintf(file, " Virtual Rules = %d\n", LIST_SIZE(vrrp->vrules)); vrrp_print_list(file, vrrp->vrules, &rule_print); } if (vrrp->script_backup) fprintf(file, " Backup state transition script = %s\n", vrrp->script_backup); if (vrrp->script_master) fprintf(file, " Master state transition script = %s\n", vrrp->script_master); if (vrrp->script_fault) fprintf(file, " Fault state transition script = %s\n", vrrp->script_fault); if (vrrp->script_stop) fprintf(file, " Stop state transition script = %s\n", vrrp->script_stop); if (vrrp->script) fprintf(file, " Generic state transition script = '%s'\n", vrrp->script); if (vrrp->smtp_alert) fprintf(file, " Using smtp notification\n"); }
static void vrrp_print(FILE *file, void *data) { vrrp_t *vrrp = data; #ifdef _WITH_VRRP_AUTH_ char auth_data[sizeof(vrrp->auth_data) + 1]; #endif char time_str[26]; fprintf(file, " VRRP Instance = %s\n", vrrp->iname); fprintf(file, " VRRP Version = %d\n", vrrp->version); if (vrrp->family == AF_INET6) fprintf(file, " Using Native IPv6\n"); if (vrrp->state == VRRP_STATE_BACK) { fprintf(file, " State = BACKUP\n"); fprintf(file, " Master router = %s\n", inet_sockaddrtos(&vrrp->master_saddr)); fprintf(file, " Master priority = %d\n", vrrp->master_priority); } else if (vrrp->state == VRRP_STATE_FAULT) fprintf(file, " State = FAULT\n"); else if (vrrp->state == VRRP_STATE_MAST) fprintf(file, " State = MASTER\n"); else fprintf(file, " State = %d\n", vrrp->state); ctime_r(&vrrp->last_transition.tv_sec, time_str); time_str[sizeof(time_str)-2] = '\0'; /* Remove '\n' char */ fprintf(file, " Last transition = %ld (%s)\n", vrrp->last_transition.tv_sec, time_str); fprintf(file, " Listening device = %s\n", IF_NAME(vrrp->ifp)); if (vrrp->dont_track_primary) fprintf(file, " VRRP interface tracking disabled\n"); if (vrrp->skip_check_adv_addr) fprintf(file, " Skip checking advert IP addresses\n"); if (vrrp->strict_mode) fprintf(file, " Enforcing VRRP compliance\n"); fprintf(file, " Using src_ip = %s\n", inet_sockaddrtos(&vrrp->saddr)); fprintf(file, " Gratuitous ARP delay = %d\n", vrrp->garp_delay/TIMER_HZ); fprintf(file, " Gratuitous ARP repeat = %d\n", vrrp->garp_rep); fprintf(file, " Gratuitous ARP refresh = %lu\n", vrrp->garp_refresh.tv_sec/TIMER_HZ); fprintf(file, " Gratuitous ARP refresh repeat = %d\n", vrrp->garp_refresh_rep); fprintf(file, " Gratuitous ARP lower priority delay = %d", vrrp->garp_lower_prio_delay / TIMER_HZ); fprintf(file, " Gratuitous ARP lower priority repeat = %d", vrrp->garp_lower_prio_rep); fprintf(file, " Send advert after receive lower priority advert = %s", vrrp->lower_prio_no_advert ? "false" : "true"); fprintf(file, " Virtual Router ID = %d\n", vrrp->vrid); fprintf(file, " Priority = %d\n", vrrp->base_priority); fprintf(file, " Advert interval = %d %s\n", (vrrp->version == VRRP_VERSION_2) ? (vrrp->adver_int / TIMER_HZ) : (vrrp->adver_int / (TIMER_HZ / 1000)), (vrrp->version == VRRP_VERSION_2) ? "sec" : "milli-sec"); fprintf(file, " Accept = %s\n", ((vrrp->accept) ? "enabled" : "disabled")); if (vrrp->nopreempt) fprintf(file, " Preempt = disabled\n"); else fprintf(file, " Preempt = enabled\n"); if (vrrp->preempt_delay) fprintf(file, " Preempt delay = %ld secs\n", vrrp->preempt_delay / TIMER_HZ); #if defined _WITH_VRRP_AUTH_ if (vrrp->auth_type) { fprintf(file, " Authentication type = %s\n", (vrrp->auth_type == VRRP_AUTH_AH) ? "IPSEC_AH" : "SIMPLE_PASSWORD"); if (vrrp->auth_type != VRRP_AUTH_AH) { /* vrrp->auth_data is not \0 terminated */ memcpy(auth_data, vrrp->auth_data, sizeof(vrrp->auth_data)); auth_data[sizeof(vrrp->auth_data)] = '\0'; fprintf(file, " Password = %s\n", auth_data); } } else fprintf(file, " Authentication type = none\n"); #endif if (!LIST_ISEMPTY(vrrp->track_ifp)) { fprintf(file, " Tracked interfaces = %d\n", LIST_SIZE(vrrp->track_ifp)); vrrp_print_list(file, vrrp->track_ifp, &if_print); } if (!LIST_ISEMPTY(vrrp->track_script)) { fprintf(file, " Tracked scripts = %d\n", LIST_SIZE(vrrp->track_script)); vrrp_print_list(file, vrrp->track_script, &vscript_print); } if (!LIST_ISEMPTY(vrrp->vip)) { fprintf(file, " Virtual IP = %d\n", LIST_SIZE(vrrp->vip)); vrrp_print_list(file, vrrp->vip, &address_print); } if (!LIST_ISEMPTY(vrrp->evip)) { fprintf(file, " Virtual IP Excluded = %d\n", LIST_SIZE(vrrp->evip)); vrrp_print_list(file, vrrp->evip, &address_print); } #ifdef _HAVE_FIB_ROUTING_ if (!LIST_ISEMPTY(vrrp->vroutes)) { fprintf(file, " Virtual Routes = %d\n", LIST_SIZE(vrrp->vroutes)); vrrp_print_list(file, vrrp->vroutes, &route_print); } if (!LIST_ISEMPTY(vrrp->vrules)) { fprintf(file, " Virtual Rules = %d\n", LIST_SIZE(vrrp->vrules)); vrrp_print_list(file, vrrp->vrules, &rule_print); } #endif if (vrrp->script_backup) fprintf(file, " Backup state transition script = %s\n", vrrp->script_backup); if (vrrp->script_master) fprintf(file, " Master state transition script = %s\n", vrrp->script_master); if (vrrp->script_fault) fprintf(file, " Fault state transition script = %s\n", vrrp->script_fault); if (vrrp->script_stop) fprintf(file, " Stop state transition script = %s\n", vrrp->script_stop); if (vrrp->script) fprintf(file, " Generic state transition script = '%s'\n", vrrp->script); if (vrrp->smtp_alert) fprintf(file, " Using smtp notification\n"); }