OSPFv3: fix more minor issues
* Add 3 more LS types and the M6-bit.
* Print multicast LS type and prefix option as deprecated.
* Remove needless forward declarations.
* Make ospf6_decode_v3() consider vflag for every packet type and raise
the margin from "> 0" to "> 1" because it is already "> 0" that far.
* Fix a message to refer to packet type instead of LS type.
* Remove irrelevant comment.
* Don't print unknown protocol version 2nd time.
diff --git a/ospf6.h b/ospf6.h
index b081064..92f1186 100644
--- a/ospf6.h
+++ b/ospf6.h
@@ -44,6 +44,7 @@
#define OSPF6_DB_INIT 0x04 /* */
#define OSPF6_DB_MORE 0x02
#define OSPF6_DB_MASTER 0x01
+#define OSPF6_DB_M6 0x10 /* IPv6 MTU */
/* ls_type */
#define LS_TYPE_ROUTER 1 /* router link */
@@ -57,6 +58,9 @@
#define LS_TYPE_INTRA_AP 9 /* Intra-Area-Prefix */
#define LS_TYPE_INTRA_ATE 10 /* Intra-Area-TE */
#define LS_TYPE_GRACE 11 /* Grace LSA */
+#define LS_TYPE_RI 12 /* Router information */
+#define LS_TYPE_INTER_ASTE 13 /* Inter-AS-TE */
+#define LS_TYPE_L1VPN 14 /* L1VPN */
#define LS_TYPE_MASK 0x1fff
#define LS_SCOPE_LINKLOCAL 0x0000
diff --git a/print-ospf6.c b/print-ospf6.c
index e95e437..19df6c8 100644
--- a/print-ospf6.c
+++ b/print-ospf6.c
@@ -88,12 +88,15 @@
{ LS_TYPE_INTER_AP, "Inter-Area Prefix" },
{ LS_TYPE_INTER_AR, "Inter-Area Router" },
{ LS_TYPE_ASE, "External" },
- { LS_TYPE_GROUP, "Multicast Group" },
+ { LS_TYPE_GROUP, "Deprecated" },
{ LS_TYPE_NSSA, "NSSA" },
{ LS_TYPE_LINK, "Link" },
{ LS_TYPE_INTRA_AP, "Intra-Area Prefix" },
{ LS_TYPE_INTRA_ATE, "Intra-Area TE" },
{ LS_TYPE_GRACE, "Grace" },
+ { LS_TYPE_RI, "Router Information" },
+ { LS_TYPE_INTER_ASTE, "Inter-AS-TE" },
+ { LS_TYPE_L1VPN, "Layer 1 VPN" },
{ 0, NULL }
};
@@ -108,24 +111,19 @@
{ OSPF6_DB_INIT, "Init" },
{ OSPF6_DB_MORE, "More" },
{ OSPF6_DB_MASTER, "Master" },
+ { OSPF6_DB_M6, "IPv6 MTU" },
{ 0, NULL }
};
static const struct tok ospf6_lsa_prefix_option_values[] = {
{ LSA_PREFIX_OPT_NU, "No Unicast" },
{ LSA_PREFIX_OPT_LA, "Local address" },
- { LSA_PREFIX_OPT_MC, "Multicast" },
+ { LSA_PREFIX_OPT_MC, "Deprecated" },
{ LSA_PREFIX_OPT_P, "Propagate" },
{ LSA_PREFIX_OPT_DN, "Down" },
{ 0, NULL }
};
-/* Forwards */
-static void ospf6_print_ls_type(u_int, const rtrid_t *);
-static int ospf6_print_lshdr(const struct lsa6_hdr *);
-static int ospf6_print_lsa(const struct lsa6 *);
-static int ospf6_decode_v3(const struct ospf6hdr *, const u_char *);
-
static void
ospf6_print_ls_type(register u_int ls_type, register const rtrid_t *ls_stateid)
@@ -502,7 +500,7 @@
if (op->ospf6_hello.hello_bdr != 0)
printf(", Backup Designated Router %s",
ipaddr_string(&op->ospf6_hello.hello_bdr));
- if (vflag) {
+ if (vflag > 1) {
printf("\n\t Neighbor List:");
ap = op->ospf6_hello.hello_neighbor;
while ((u_char *)ap < dataend) {
@@ -526,16 +524,17 @@
printf(", MTU %u, DD-Sequence 0x%08x",
EXTRACT_16BITS(&op->ospf6_db.db_mtu),
EXTRACT_32BITS(&op->ospf6_db.db_seq));
-
- /* Print all the LS adv's */
- lshp = op->ospf6_db.db_lshdr;
- while (!ospf6_print_lshdr(lshp)) {
- ++lshp;
- }
+ if (vflag > 1) {
+ /* Print all the LS adv's */
+ lshp = op->ospf6_db.db_lshdr;
+ while (!ospf6_print_lshdr(lshp)) {
+ ++lshp;
+ }
+ }
break;
case OSPF_TYPE_LS_REQ:
- if (vflag) {
+ if (vflag > 1) {
lsrp = op->ospf6_lsr;
while ((u_char *)lsrp < dataend) {
TCHECK(*lsrp);
@@ -549,7 +548,7 @@
break;
case OSPF_TYPE_LS_UPDATE:
- if (vflag) {
+ if (vflag > 1) {
lsap = op->ospf6_lsu.lsu_lsa;
TCHECK(op->ospf6_lsu.lsu_count);
i = EXTRACT_32BITS(&op->ospf6_lsu.lsu_count);
@@ -564,7 +563,7 @@
case OSPF_TYPE_LS_ACK:
- if (vflag) {
+ if (vflag > 1) {
lshp = op->ospf6_lsa.lsa_lshdr;
while (!ospf6_print_lshdr(lshp)) {
@@ -593,7 +592,7 @@
/* If the type is valid translate it, or just print the type */
/* value. If it's not valid, say so and return */
TCHECK(op->ospf6_type);
- cp = tok2str(ospf6_type_values, "unknown LS-type", op->ospf6_type);
+ cp = tok2str(ospf6_type_values, "unknown packet type (%u)", op->ospf6_type);
printf("OSPFv%u, %s, length %d", op->ospf6_version, cp, length);
if (*cp == 'u') {
return;
@@ -610,7 +609,6 @@
}
dataend = bp + length;
- /* Print the routerid if it is not the same as the source */
TCHECK(op->ospf6_routerid);
printf("\n\tRouter-ID %s", ipaddr_string(&op->ospf6_routerid));
@@ -631,10 +629,6 @@
if (ospf6_decode_v3(op, dataend))
goto trunc;
break;
-
- default:
- printf(" ospf [version %d]", op->ospf6_version);
- break;
} /* end switch on version */
return;