1 /* packet-ospf.h (c) 1998 Hannes Boehm */
3 /* $Id: packet-ospf.h,v 1.7 2000/03/09 18:31:51 ashokn Exp $ */
5 #define OSPF_HEADER_LENGTH 24
13 #define OSPF_AUTH_NONE 0
14 #define OSPF_AUTH_SIMPLE 1
15 #define OSPF_AUTH_CRYPT 2
17 #define OSPF_OPTIONS_E 2
18 #define OSPF_OPTIONS_MC 4
19 #define OSPF_OPTIONS_NP 8
20 #define OSPF_OPTIONS_EA 16
21 #define OSPF_OPTIONS_DC 32
23 #define OSPF_DBD_FLAG_MS 1
24 #define OSPF_DBD_FLAG_M 2
25 #define OSPF_DBD_FLAG_I 4
27 #define OSPF_LS_REQ_LENGTH 12
29 #define OSPF_LSTYPE_ROUTER 1
30 #define OSPF_LSTYPE_NETWORK 2
31 #define OSPF_LSTYPE_SUMMERY 3
32 #define OSPF_LSTYPE_ASBR 4
33 #define OSPF_LSTYPE_ASEXT 5
35 /* Opaque LSA types */
36 #define OSPF_LSTYPE_OP_LINKLOCAL 9
37 #define OSPF_LSTYPE_OP_AREALOCAL 10
38 #define OSPF_LSTYPE_OP_ASWIDE 11
40 #define OSPF_LINK_PTP 1
41 #define OSPF_LINK_TRANSIT 2
42 #define OSPF_LINK_STUB 3
43 #define OSPF_LINK_VIRTUAL 4
45 #define OSPF_LSA_HEADER_LENGTH 20
47 /* Known opaque LSAs */
48 #define OSPF_LSA_MPLS_TE 1
50 typedef struct _e_ospfhdr {
61 typedef struct _e_ospf_hello {
63 guint16 hellointervall;
66 guint32 dead_interval;
71 typedef struct _e_ospf_dbd {
72 guint16 interface_mtu;
78 typedef struct _e_ospf_ls_req {
84 typedef struct _e_ospf_lsa_hdr {
95 typedef struct _e_ospf_router_lsa {
101 typedef struct _e_ospf_router_data {
107 } e_ospf_router_data;
109 typedef struct _e_ospf_router_metric {
113 } e_ospf_router_metric;
115 typedef struct _e_ospf_network_lsa {
116 guint32 network_mask;
117 } e_ospf_network_lsa;
119 typedef struct _e_ospf_lsa_upd_hdr {
121 } e_ospf_lsa_upd_hdr;
123 typedef struct _e_ospf_summary_lsa {
124 guint32 network_mask;
125 } e_ospf_summary_lsa;
127 typedef struct _e_ospf_asexternal_lsa {
131 guint32 external_tag;
132 } e_ospf_asexternal_lsa;
134 typedef struct _e_ospf_crypto {
138 guint32 sequence_num;
141 void dissect_ospf(const u_char *, int, frame_data *, proto_tree *);
142 void dissect_ospf_hello(const u_char*, int, frame_data*, proto_tree*);
143 void dissect_ospf_db_desc(const u_char*, int, frame_data*, proto_tree*);
144 void dissect_ospf_ls_req(const u_char*, int, frame_data*, proto_tree*);
145 void dissect_ospf_ls_upd(const u_char*, int, frame_data*, proto_tree*);
146 void dissect_ospf_ls_ack(const u_char*, int, frame_data*, proto_tree*);
148 /* dissect_ospf_lsa returns the length of the LSA
149 * if disassemble_body is set to FALSE (e.g. in LSA ACK
150 * packets), the LSA-header length is returned (20)
152 int dissect_ospf_lsa(const u_char*, int, frame_data*, proto_tree*, int disassemble_body);