#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.64 2007-09-27 10:20:26 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.66 2007-10-08 07:53:21 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
{ OSPF_OPTION_E, "External" },
{ OSPF_OPTION_MC, "Multicast" },
{ OSPF_OPTION_NP, "NSSA" },
- { OSPF_OPTION_EA, "Advertise External" },
- { OSPF_OPTION_DC, "Demand Circuit" },
- { OSPF_OPTION_O, "Opaque" },
- { OSPF_OPTION_DN, "Up/Down" },
- { 0, NULL }
-};
-
-static struct tok ospf_option_values2[] = {
- { OSPF_OPTION_T, "TOS" },
- { OSPF_OPTION_E, "External" },
- { OSPF_OPTION_MC, "Multicast" },
- { OSPF_OPTION_NP, "NSSA" },
- { OSPF_OPTION_L, "LLS" },
+ { OSPF_OPTION_L, "LLS" },
{ OSPF_OPTION_DC, "Demand Circuit" },
{ OSPF_OPTION_O, "Opaque" },
{ OSPF_OPTION_DN, "Up/Down" },
* Print all the per-topology metrics.
*/
static void
-ospf_print_tos_metrics(const struct tos_metric *metrics)
+ospf_print_tos_metrics(const union un_tos *tos)
{
int metric_count;
int toscount;
- toscount = metrics->tos_count+1;
+ toscount = tos->link.link_tos_count+1;
metric_count = 0;
/*
while (toscount) {
printf("\n\t\ttopology %s(%u), metric %u",
tok2str(ospf_topology_values, "",
- metric_count ? metrics->tos_type : 0),
- metric_count ? metrics->tos_type : 0,
- EXTRACT_16BITS(&metrics->tos_metric));
+ metric_count ? tos->metrics.tos_type : 0),
+ metric_count ? tos->metrics.tos_type : 0,
+ EXTRACT_16BITS(&tos->metrics.tos_metric));
metric_count++;
- metrics++;
+ tos++;
toscount--;
}
}
rlp = lsap->lsa_un.un_rla.rla_link;
while (j--) {
TCHECK(*rlp);
- switch (rlp->metrics.tos_type) {
+ switch (rlp->un_tos.link.link_type) {
case RLA_TYPE_VIRTUAL:
printf("\n\t Virtual Link: Neighbor Router-ID: %s, Interface Address: %s",
default:
printf("\n\t Unknown Router Link Type (%u)",
- rlp->metrics.tos_type);
+ rlp->un_tos.link.link_type);
return (ls_end);
}
- ospf_print_tos_metrics(&rlp->metrics);
+ ospf_print_tos_metrics(&rlp->un_tos);
rlp = (struct rlalink *)((u_char *)(rlp + 1) +
- ((rlp->metrics.tos_count) * sizeof(struct tos_metric)));
+ ((rlp->un_tos.link.link_tos_count) * sizeof(union un_tos)));
}
break;
static int
ospf_decode_lls(register const struct ospfhdr *op,
- register u_int length)
+ register u_int length)
{
register const u_char *dptr;
register const u_char *dataend;
case OSPF_TYPE_HELLO:
printf("\n\tOptions [%s]",
- bittok2str(ospf_option_values2,"none",op->ospf_hello.hello_options));
+ bittok2str(ospf_option_values,"none",op->ospf_hello.hello_options));
TCHECK(op->ospf_hello.hello_deadint);
printf("\n\t Hello Timer %us, Dead Timer %us, Mask %s, Priority %u",
case OSPF_TYPE_DD:
TCHECK(op->ospf_db.db_options);
printf("\n\tOptions [%s]",
- bittok2str(ospf_option_values2,"none",op->ospf_db.db_options));
+ bittok2str(ospf_option_values,"none",op->ospf_db.db_options));
TCHECK(op->ospf_db.db_flags);
printf(", DD Flags [%s]",
bittok2str(ospf_dd_flag_values,"none",op->ospf_db.db_flags));
TCHECK(op->ospf_db.db_ifmtu);
if (op->ospf_db.db_ifmtu) {
- printf(", MTU: %u", ntohs(op->ospf_db.db_ifmtu));
+ printf(", MTU: %u", EXTRACT_16BITS(&op->ospf_db.db_ifmtu));
}
TCHECK(op->ospf_db.db_seq);
printf(", Sequence: 0x%08x", EXTRACT_32BITS(&op->ospf_db.db_seq));
/* Print all the LS adv's */
lshp = op->ospf_db.db_lshdr;
- while ((u_char *)lshp < dataend && ospf_print_lshdr(lshp) != -1) {
+ while (((u_char *)lshp < dataend) && ospf_print_lshdr(lshp) != -1) {
++lshp;
}
break;