- ls_length = EXTRACT_16BITS(&lsap->ls_hdr.ls_length)-sizeof(struct lsa_hdr);
-
- printf(", Advertising Router: %s, seq 0x%08x, age %us, length: %u",
- ipaddr_string(&lsap->ls_hdr.ls_router),
- EXTRACT_32BITS(&lsap->ls_hdr.ls_seq),
- EXTRACT_16BITS(&lsap->ls_hdr.ls_age),
- ls_length);
-
- switch (lsap->ls_hdr.ls_type) {
- /* the LSA header for opaque LSAs was slightly changed */
- case LS_TYPE_OPAQUE_LL:
- case LS_TYPE_OPAQUE_AL:
- case LS_TYPE_OPAQUE_DW:
-
- printf("\n\t %s LSA (%d), Opaque-Type: %s LSA (%u), Opaque-ID: %u",
- tok2str(lsa_values,"unknown",lsap->ls_hdr.ls_type),
- (lsap->ls_hdr.ls_type),
- tok2str(lsa_opaque_values,
- "unknown",
- *(&lsap->ls_hdr.un_lsa_id.opaque_field.opaque_type)),
- *(&lsap->ls_hdr.un_lsa_id.opaque_field.opaque_type),
- EXTRACT_24BITS(&lsap->ls_hdr.un_lsa_id.opaque_field.opaque_id));
- break;
-
- /* all other LSA types use regular style LSA headers */
- default:
- printf("\n\t %s LSA (%d), LSA-ID: %s",
- tok2str(lsa_values,"unknown",lsap->ls_hdr.ls_type),
- lsap->ls_hdr.ls_type,
- ipaddr_string(&lsap->ls_hdr.un_lsa_id.lsa_id));
- break;
- }
-
- printf("\n\t Options: %s", bittok2str(ospf_option_values,"none",lsap->ls_hdr.ls_options));
-
- TCHECK(lsap->ls_hdr.ls_length);
- ls_end = (u_char *)lsap + EXTRACT_16BITS(&lsap->ls_hdr.ls_length);