1 /* packet-ospf.h (c) 1998 Hannes Boehm */
3 #define OSPF_HEADER_LENGTH 24
11 #define OSPF_AUTH_NONE 0
12 #define OSPF_AUTH_SIMPLE 1
13 #define OSPF_AUTH_CRYPT 2
15 #define OSPF_OPTIONS_E 2
16 #define OSPF_OPTIONS_MC 4
17 #define OSPF_OPTIONS_NP 8
18 #define OSPF_OPTIONS_EA 16
19 #define OSPF_OPTIONS_DC 32
21 #define OSPF_DBD_FLAG_MS 1
22 #define OSPF_DBD_FLAG_M 2
23 #define OSPF_DBD_FLAG_I 4
25 #define OSPF_LS_REQ_LENGTH 12
27 #define OSPF_LSTYPE_ROUTER 1
28 #define OSPF_LSTYPE_NETWORK 2
29 #define OSPF_LSTYPE_SUMMERY 3
30 #define OSPF_LSTYPE_ASBR 4
31 #define OSPF_LSTYPE_ASEXT 5
33 #define OSPF_LINK_PTP 1
34 #define OSPF_LINK_TRANSIT 2
35 #define OSPF_LINK_STUB 3
36 #define OSPF_LINK_VIRTUAL 4
38 #define OSPF_LSA_HEADER_LENGTH 20
40 typedef struct _e_ospfhdr {
51 typedef struct _e_ospf_hello {
53 guint16 hellointervall;
56 guint32 dead_interval;
61 typedef struct _e_ospf_dbd {
62 guint16 interface_mtu;
68 typedef struct _e_ospf_ls_req {
74 typedef struct _e_ospf_lsa_hdr {
85 typedef struct _e_ospf_router_lsa {
91 typedef struct _e_ospf_router_data {
99 typedef struct _e_ospf_router_metric {
103 } e_ospf_router_metric;
105 typedef struct _e_ospf_network_lsa {
106 guint32 network_mask;
107 } e_ospf_network_lsa;
109 typedef struct _e_ospf_lsa_upd_hdr {
111 } e_ospf_lsa_upd_hdr;
113 typedef struct _e_ospf_summary_lsa {
114 guint32 network_mask;
115 } e_ospf_summary_lsa;
117 void dissect_ospf_hello(const u_char*, int, frame_data*, GtkTree*);
118 void dissect_ospf_db_desc(const u_char*, int, frame_data*, GtkTree*);
119 void dissect_ospf_ls_req(const u_char*, int, frame_data*, GtkTree*);
120 void dissect_ospf_ls_upd(const u_char*, int, frame_data*, GtkTree*);
121 void dissect_ospf_ls_ack(const u_char*, int, frame_data*, GtkTree*);
123 /* dissect_ospf_lsa returns the length of the LSA
124 * if disassemble_body is set to FALSE (e.g. in LSA ACK
125 * packets), the header length is returned
127 int dissect_ospf_lsa(const u_char*, int, frame_data*, GtkTree*, int disassemble_body);