int show_interface_msg(struct imsg *imsg) { struct ctl_iface *iface; char *netid; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_INTERFACE: iface = imsg->data; if (asprintf(&netid, "%s", log_in6addr(&iface->addr)) == -1) err(1, NULL); printf("%-11s %-29s %-6s %-10s %-10s %s\n", iface->name, netid, if_state_name(iface->state), fmt_timeframe_core(iface->hello_timer), get_linkstate(iface->if_type, iface->linkstate), fmt_timeframe_core(iface->uptime)); free(netid); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_nbr_msg(struct imsg *imsg) { struct ctl_nbr *nbr; char *state; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_NBR: nbr = imsg->data; if (asprintf(&state, "%s/%s", nbr_state_name(nbr->nbr_state), if_state_name(nbr->iface_state)) == -1) err(1, NULL); printf("%-15s %-3d %-12s %-10s", inet_ntoa(nbr->id), nbr->priority, state, fmt_timeframe_core(nbr->dead_timer)); printf("%-11s %s\n", nbr->name, nbr->uptime == 0 ? "-" : fmt_timeframe_core(nbr->uptime)); free(state); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_interface_detail_msg(struct imsg *imsg) { struct ctl_iface *iface; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_INTERFACE: iface = imsg->data; printf("\n"); printf("Interface %s, line protocol is %s\n", iface->name, print_link(iface->flags)); printf(" Internet address %s Area %s\n", log_in6addr(&iface->addr), inet_ntoa(iface->area)); printf(" Link type %s, state %s", get_media_descr(get_ifms_type(iface->if_type)), get_linkstate(iface->if_type, iface->linkstate)); if (iface->linkstate != LINK_STATE_DOWN && iface->baudrate > 0) { printf(", "); print_baudrate(iface->baudrate); } printf("\n"); printf(" Router ID %s, network type %s, cost: %d\n", inet_ntoa(iface->rtr_id), if_type_name(iface->type), iface->metric); printf(" Transmit delay is %d sec(s), state %s, priority %d\n", iface->transmit_delay, if_state_name(iface->state), iface->priority); printf(" Designated Router (ID) %s\n", inet_ntoa(iface->dr_id)); printf(" Interface address %s\n", log_in6addr(&iface->dr_addr)); printf(" Backup Designated Router (ID) %s\n", inet_ntoa(iface->bdr_id)); printf(" Interface address %s\n", log_in6addr(&iface->bdr_addr)); printf(" Timer intervals configured, " "hello %d, dead %d, wait %d, retransmit %d\n", iface->hello_interval, iface->dead_interval, iface->dead_interval, iface->rxmt_interval); if (iface->passive) printf(" Passive interface (No Hellos)\n"); else if (iface->hello_timer < 0) printf(" Hello timer not running\n"); else printf(" Hello timer due in %s\n", fmt_timeframe_core(iface->hello_timer)); printf(" Uptime %s\n", fmt_timeframe_core(iface->uptime)); printf(" Neighbor count is %d, adjacent neighbor count is " "%d\n", iface->nbr_cnt, iface->adj_cnt); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_interface_msg(struct imsg *imsg) { struct ctl_iface *iface; char *netid; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_INTERFACE: iface = imsg->data; if (asprintf(&netid, "%s/%d", inet_ntoa(iface->addr), mask2prefixlen(iface->mask.s_addr)) == -1) err(1, NULL); printf("%-11s %-18s %-6s %-10s %-10s %s %3d %3d\n", iface->name, netid, if_state_name(iface->state), iface->hello_timer.tv_sec < 0 ? "-" : fmt_timeframe_core(iface->hello_timer.tv_sec), get_linkstate(iface->mediatype, iface->linkstate), fmt_timeframe_core(iface->uptime), iface->nbr_cnt, iface->adj_cnt); free(netid); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_interface_msg(struct imsg *imsg) { struct ctl_iface *iface; char *timers; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_INTERFACE: iface = imsg->data; if (asprintf(&timers, "%u/%u", iface->hello_interval, iface->hello_holdtime) == -1) err(1, NULL); printf("%-11s %-10s %-10s %-8s %12s %3u\n", iface->name, if_state_name(iface->state), get_linkstate(iface->mediatype, iface->linkstate), iface->uptime == 0 ? "00:00:00" : fmt_timeframe_core(iface->uptime), timers, iface->adj_cnt); free(timers); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
const char * fmt_timeframe(time_t t) { if (t == 0) return ("Never"); else return (fmt_timeframe_core(time(NULL) - t)); }
int show_nbr_detail_msg(struct imsg *imsg) { struct ctl_nbr *nbr; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_NBR: nbr = imsg->data; printf("\nNeighbor %s, ", inet_ntoa(nbr->id)); printf("interface address %s\n", log_in6addr(&nbr->addr)); printf(" Area %s, interface %s\n", inet_ntoa(nbr->area), nbr->name); printf(" Neighbor priority is %d, " "State is %s, %d state changes\n", nbr->priority, nbr_state_name(nbr->nbr_state), nbr->state_chng_cnt); printf(" DR is %s, ", inet_ntoa(nbr->dr)); printf("BDR is %s\n", inet_ntoa(nbr->bdr)); printf(" Options %s\n", print_ospf_options(nbr->options)); printf(" Dead timer due in %s\n", fmt_timeframe_core(nbr->dead_timer)); printf(" Uptime %s\n", fmt_timeframe_core(nbr->uptime)); printf(" Database Summary List %d\n", nbr->db_sum_lst_cnt); printf(" Link State Request List %d\n", nbr->ls_req_lst_cnt); printf(" Link State Retransmission List %d\n", nbr->ls_retrans_lst_cnt); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_summary_msg(struct imsg *imsg) { struct ctl_sum *sum; struct ctl_sum_area *sumarea; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_SUM: sum = imsg->data; printf("Router ID: %s\n", inet_ntoa(sum->rtr_id)); printf("Uptime: %s\n", fmt_timeframe_core(sum->uptime)); printf("RFC1583 compatibility flag is "); if (sum->rfc1583compat) printf("enabled\n"); else printf("disabled\n"); printf("SPF delay is %d msec(s), hold time between two SPFs " "is %d msec(s)\n", sum->spf_delay, sum->spf_hold_time); printf("Number of external LSA(s) %d (Checksum sum 0x%x)\n", sum->num_ext_lsa, sum->ext_lsa_cksum); printf("Number of areas attached to this router: %d\n", sum->num_area); break; case IMSG_CTL_SHOW_SUM_AREA: sumarea = imsg->data; printf("\nArea ID: %s\n", inet_ntoa(sumarea->area)); printf(" Number of interfaces in this area: %d\n", sumarea->num_iface); printf(" Number of fully adjacent neighbors in this " "area: %d\n", sumarea->num_adj_nbr); printf(" SPF algorithm executed %d time(s)\n", sumarea->num_spf_calc); printf(" Number LSA(s) %d (Checksum sum 0x%x)\n", sumarea->num_lsa, sumarea->lsa_cksum); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_rib_msg(struct imsg *imsg) { struct ctl_rt *rt; char *dstnet; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_RIB: rt = imsg->data; switch (rt->d_type) { case DT_NET: if (asprintf(&dstnet, "%s/%d", log_in6addr(&rt->prefix), rt->prefixlen) == -1) err(1, NULL); break; case DT_RTR: if (asprintf(&dstnet, "%s", log_in6addr(&rt->prefix)) == -1) err(1, NULL); break; default: errx(1, "Invalid route type"); } printf("%-20s %-17s %-12s %-9s %-7d %s\n", dstnet, log_in6addr_scope(&rt->nexthop, rt->ifindex), path_type_name(rt->p_type), dst_type_name(rt->d_type), rt->cost, rt->uptime == 0 ? "-" : fmt_timeframe_core(rt->uptime)); free(dstnet); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_nbr_msg(struct imsg *imsg) { struct ctl_nbr *nbr; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_NBR: nbr = imsg->data; printf("%-15s %-19s", inet_ntoa(nbr->id), nbr_state_name(nbr->nbr_state)); printf("%-15s %-15s\n", inet_ntoa(nbr->addr), nbr->uptime == 0 ? "-" : fmt_timeframe_core(nbr->uptime)); break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
int show_interface_detail_msg(struct imsg *imsg) { struct ctl_iface *iface; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_INTERFACE: iface = imsg->data; printf("\n"); printf("Interface %s, line protocol is %s\n", iface->name, print_link(iface->flags)); printf(" Internet address %s/%d, ", inet_ntoa(iface->addr), mask2prefixlen(iface->mask.s_addr)); printf("Area %s\n", inet_ntoa(iface->area)); printf(" Linkstate %s\n", get_linkstate(iface->mediatype, iface->linkstate)); printf(" Router ID %s, network type %s, cost: %d\n", inet_ntoa(iface->rtr_id), if_type_name(iface->type), iface->metric); printf(" Transmit delay is %d sec(s), state %s, priority %d\n", iface->transmit_delay, if_state_name(iface->state), iface->priority); printf(" Designated Router (ID) %s, ", inet_ntoa(iface->dr_id)); printf("interface address %s\n", inet_ntoa(iface->dr_addr)); printf(" Backup Designated Router (ID) %s, ", inet_ntoa(iface->bdr_id)); printf("interface address %s\n", inet_ntoa(iface->bdr_addr)); if (iface->dead_interval == FAST_RTR_DEAD_TIME) { printf(" Timer intervals configured, " "hello %d msec, dead %d, wait %d, retransmit %d\n", iface->fast_hello_interval, iface->dead_interval, iface->dead_interval, iface->rxmt_interval); } else { printf(" Timer intervals configured, " "hello %d, dead %d, wait %d, retransmit %d\n", iface->hello_interval, iface->dead_interval, iface->dead_interval, iface->rxmt_interval); } if (iface->passive) printf(" Passive interface (No Hellos)\n"); else if (iface->hello_timer.tv_sec < 0) printf(" Hello timer not running\n"); else printf(" Hello timer due in %s+%ldmsec\n", fmt_timeframe_core(iface->hello_timer.tv_sec), iface->hello_timer.tv_usec / 1000); printf(" Uptime %s\n", fmt_timeframe_core(iface->uptime)); printf(" Neighbor count is %d, adjacent neighbor count is " "%d\n", iface->nbr_cnt, iface->adj_cnt); if (iface->auth_type > 0) { switch (iface->auth_type) { case AUTH_SIMPLE: printf(" Simple password authentication " "enabled\n"); break; case AUTH_CRYPT: printf(" Message digest authentication " "enabled\n"); printf(" Primary key id is %d\n", iface->auth_keyid); break; default: break; } } break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }