]> The Tcpdump Group git mirrors - tcpdump/blobdiff - ospf.h
Remove the -a flag. It's nonsensical to apply the local netmask to all
[tcpdump] / ospf.h
diff --git a/ospf.h b/ospf.h
index eee79441fb389951d2d93cef33cc8530ef960a66..8307f1cc5e9cda31e97a3cb50a7361134f1cbc7b 100644 (file)
--- a/ospf.h
+++ b/ospf.h
@@ -1,3 +1,4 @@
+/* @(#) $Header: /tcpdump/master/tcpdump/ospf.h,v 1.7 2002-12-11 07:13:56 guy Exp $ (LBL) */
 /*
  * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997
  *     The Regents of the University of California.  All rights reserved.
  *
  * OSPF support contributed by Jeffrey Honig ([email protected])
  */
-#define        OSPF_TYPE_UMD   0       /* UMd's special monitoring packets */
-#define        OSPF_TYPE_HELLO 1       /* Hello */
-#define        OSPF_TYPE_DB    2       /* Database Description */
-#define        OSPF_TYPE_LSR   3       /* Link State Request */
-#define        OSPF_TYPE_LSU   4       /* Link State Update */
-#define        OSPF_TYPE_LSA   5       /* Link State Ack */
-#define        OSPF_TYPE_MAX   6
-
-/* Options *_options   */
+#define        OSPF_TYPE_UMD           0       /* UMd's special monitoring packets */
+#define        OSPF_TYPE_HELLO         1       /* Hello */
+#define        OSPF_TYPE_DD            2       /* Database Description */
+#define        OSPF_TYPE_LS_REQ        3       /* Link State Request */
+#define        OSPF_TYPE_LS_UPDATE     4       /* Link State Update */
+#define        OSPF_TYPE_LS_ACK        5       /* Link State Ack */
+
+/* Options field
+ *
+ * +------------------------------------+
+ * | * | O | DC | EA | N/P | MC | E | T |
+ * +------------------------------------+
+ *
+ */
+                
 #define OSPF_OPTION_T  0x01    /* T bit: TOS support   */
 #define OSPF_OPTION_E  0x02    /* E bit: External routes advertised    */
 #define        OSPF_OPTION_MC  0x04    /* MC bit: Multicast capable */
+#define        OSPF_OPTION_NP  0x08    /* N/P bit: NSSA capable */
+#define        OSPF_OPTION_EA  0x10    /* EA bit: External Attribute capable */
+#define        OSPF_OPTION_DC  0x20    /* DC bit: Demand circuit capable */
+#define        OSPF_OPTION_O   0x40    /* O bit: Opaque LSA capable */
 
 /* ospf_authtype       */
 #define        OSPF_AUTH_NONE          0       /* No auth-data */
 #define        OSPF_AUTH_SIMPLE        1       /* Simple password */
 #define OSPF_AUTH_MD5          2       /* MD5 authentication */
-#define     OSPF_AUTH_MD5_LEN  16      /* length of MD5 authentication */
-
+#define OSPF_AUTH_MD5_LEN      16      /* length of MD5 authentication */
 
 /* db_flags    */
 #define        OSPF_DB_INIT            0x04        /*  */
 #define        LS_TYPE_ASE             5   /* ASE  */
 #define        LS_TYPE_GROUP           6   /* Group membership (multicast */
                                    /* extensions 23 July 1991) */
-#define        LS_TYPE_MAX             7
+#define        LS_TYPE_NSSA            7   /* rfc1587 - Not so Stubby Areas */
+#define        LS_TYPE_OPAQUE_LL       9   /* rfc2370 - Opaque Link Local */
+#define        LS_TYPE_OPAQUE_AL      10   /* rfc2370 - Opaque Link Local */
+#define        LS_TYPE_OPAQUE_DW      11   /* rfc2370 - Opaque Domain Wide */
 
 /*************************************************
  *
 
 /* link state advertisement header */
 struct lsa_hdr {
-    u_short ls_age;
-    u_char ls_options;
-    u_char ls_type;
+    u_int16_t ls_age;
+    u_int8_t ls_options;
+    u_int8_t ls_type;
     struct in_addr ls_stateid;
     struct in_addr ls_router;
     u_int32_t ls_seq;
-    u_short ls_chksum;
-    u_short ls_length;
-} ;
+    u_int16_t ls_chksum;
+    u_int16_t ls_length;
+};
 
 /* link state advertisement */
 struct lsa {
@@ -109,15 +122,15 @@ struct lsa {
     union {
        /* Router links advertisements */
        struct {
-           u_char rla_flags;
-           u_char rla_zero[1];
-           u_short rla_count;
+           u_int8_t rla_flags;
+           u_int8_t rla_zero[1];
+           u_int16_t rla_count;
            struct rlalink {
                struct in_addr link_id;
                struct in_addr link_data;
-               u_char link_type;
-               u_char link_toscount;
-               u_short link_tos0metric;
+               u_int8_t link_type;
+               u_int8_t link_toscount;
+               u_int16_t link_tos0metric;
            } rla_link[1];              /* may repeat   */
        } un_rla;
 
@@ -148,18 +161,29 @@ struct lsa {
            u_int32_t mcla_vtype;
            struct in_addr mcla_vid;
        } un_mcla[1];
+
+       /* Opaque LSA */
+       struct opaque {
+           u_int8_t opaque_type;
+           u_int8_t opaque_id[3];
+           struct in_addr adv_router;
+           struct in_addr sequence_num;
+           u_int16_t chksum;
+            u_int16_t length;
+       } un_opaque[1];
+
     } lsa_un;
-} ;
+};
 
 
 /*
  * TOS metric struct (will be 0 or more in router links update)
  */
 struct tos_metric {
-    u_char tos_type;
-    u_char tos_zero;
-    u_short tos_metric;
-} ;
+    u_int8_t tos_type;
+    u_int8_t tos_zero;
+    u_int16_t tos_metric;
+};
 
 #define        OSPF_AUTH_SIZE  8
 
@@ -167,22 +191,22 @@ struct tos_metric {
  * the main header
  */
 struct ospfhdr {
-    u_char ospf_version;
-    u_char ospf_type;
-    u_short ospf_len;
+    u_int8_t ospf_version;
+    u_int8_t ospf_type;
+    u_int16_t ospf_len;
     struct in_addr ospf_routerid;
     struct in_addr ospf_areaid;
-    u_short ospf_chksum;
-    u_short ospf_authtype;
-    u_char ospf_authdata[OSPF_AUTH_SIZE];
+    u_int16_t ospf_chksum;
+    u_int16_t ospf_authtype;
+    u_int8_t ospf_authdata[OSPF_AUTH_SIZE];
     union {
 
        /* Hello packet */
        struct {
            struct in_addr hello_mask;
-           u_short hello_helloint;
-           u_char hello_options;
-           u_char hello_priority;
+           u_int16_t hello_helloint;
+           u_int8_t hello_options;
+           u_int8_t hello_priority;
            u_int32_t hello_deadint;
            struct in_addr hello_dr;
            struct in_addr hello_bdr;
@@ -191,9 +215,9 @@ struct ospfhdr {
 
        /* Database Description packet */
        struct {
-           u_char db_zero[2];
-           u_char db_options;
-           u_char db_flags;
+           u_int8_t db_zero[2];
+           u_int8_t db_options;
+           u_int8_t db_flags;
            u_int32_t db_seq;
            struct lsa_hdr db_lshdr[1]; /* may repeat   */
        } un_db;
@@ -216,7 +240,7 @@ struct ospfhdr {
            struct lsa_hdr lsa_lshdr[1]; /* may repeat  */
        } un_lsa ;
     } ospf_un ;
-} ;
+};
 
 #define        ospf_hello      ospf_un.un_hello
 #define        ospf_db         ospf_un.un_db