void show_db_hdr_msg_detail(struct lsa_hdr *lsa) { printf("LS age: %d\n", ntohs(lsa->age)); printf("LS Type: %s\n", print_ls_type(lsa->type)); switch (ntohs(lsa->type)) { case LSA_TYPE_ROUTER: case LSA_TYPE_INTER_A_PREFIX: case LSA_TYPE_INTER_A_ROUTER: case LSA_TYPE_INTRA_A_PREFIX: case LSA_TYPE_EXTERNAL: printf("Link State ID: %s\n", log_id(lsa->ls_id)); break; case LSA_TYPE_LINK: printf("Link State ID: %s (Interface ID of Advertising " "Router)\n", log_id(lsa->ls_id)); break; case LSA_TYPE_NETWORK: printf("Link State ID: %s (Interface ID of Designated " "Router)\n", log_id(lsa->ls_id)); break; } printf("Advertising Router: %s\n", log_adv_rtr(lsa->adv_rtr)); printf("LS Seq Number: 0x%08x\n", ntohl(lsa->seq_num)); printf("Checksum: 0x%04x\n", ntohs(lsa->ls_chksum)); printf("Length: %d\n", ntohs(lsa->len)); }
int show_database_msg(struct imsg *imsg) { static struct in_addr area_id; static char ifname[IF_NAMESIZE]; static u_int16_t lasttype; struct area *area; struct iface *iface; struct lsa_hdr *lsa; switch (imsg->hdr.type) { case IMSG_CTL_SHOW_DATABASE: case IMSG_CTL_SHOW_DB_SELF: lsa = imsg->data; if (lsa->type != lasttype) { show_database_head(area_id, ifname, lsa->type); printf("%-15s %-15s %-4s %-10s %-8s\n", "Link ID", "Adv Router", "Age", "Seq#", "Checksum"); } printf("%-15s %-15s %-4d 0x%08x 0x%04x\n", log_id(lsa->ls_id), log_adv_rtr(lsa->adv_rtr), ntohs(lsa->age), ntohl(lsa->seq_num), ntohs(lsa->ls_chksum)); lasttype = lsa->type; break; case IMSG_CTL_AREA: area = imsg->data; area_id = area->id; lasttype = 0; break; case IMSG_CTL_IFACE: iface = imsg->data; strlcpy(ifname, iface->name, sizeof(ifname)); lasttype = 0; break; case IMSG_CTL_END: printf("\n"); return (1); default: break; } return (0); }
void show_db_hdr_msg_detail(struct lsa_hdr *lsa) { printf("LS age: %d\n", ntohs(lsa->age)); printf("Options: %s\n", print_ospf_options(lsa->opts)); printf("LS Type: %s\n", print_ls_type(lsa->type)); switch (lsa->type) { case LSA_TYPE_ROUTER: printf("Link State ID: %s\n", log_id(lsa->ls_id)); break; case LSA_TYPE_NETWORK: printf("Link State ID: %s (address of Designated Router)\n", log_id(lsa->ls_id)); break; case LSA_TYPE_SUM_NETWORK: printf("Link State ID: %s (Network ID)\n", log_id(lsa->ls_id)); break; case LSA_TYPE_SUM_ROUTER: printf("Link State ID: %s (ASBR Router ID)\n", log_id(lsa->ls_id)); break; case LSA_TYPE_EXTERNAL: printf("Link State ID: %s (External Network Number)\n", log_id(lsa->ls_id)); break; case LSA_TYPE_LINK_OPAQ: case LSA_TYPE_AREA_OPAQ: case LSA_TYPE_AS_OPAQ: printf("Link State ID: %s Type %d ID %d\n", log_id(lsa->ls_id), LSA_24_GETHI(ntohl(lsa->ls_id)), LSA_24_GETLO(ntohl(lsa->ls_id))); break; } printf("Advertising Router: %s\n", log_adv_rtr(lsa->adv_rtr)); printf("LS Seq Number: 0x%08x\n", ntohl(lsa->seq_num)); printf("Checksum: 0x%04x\n", ntohs(lsa->ls_chksum)); printf("Length: %d\n", ntohs(lsa->len)); }