wireshark/packet-ospf.h

136 lines
3.1 KiB
C

/* packet-ospf.h (c) 1998 Hannes Boehm */
#define OSPF_HEADER_LENGTH 24
#define OSPF_HELLO 1
#define OSPF_DB_DESC 2
#define OSPF_LS_REQ 3
#define OSPF_LS_UPD 4
#define OSPF_LS_ACK 5
#define OSPF_AUTH_NONE 0
#define OSPF_AUTH_SIMPLE 1
#define OSPF_AUTH_CRYPT 2
#define OSPF_OPTIONS_E 2
#define OSPF_OPTIONS_MC 4
#define OSPF_OPTIONS_NP 8
#define OSPF_OPTIONS_EA 16
#define OSPF_OPTIONS_DC 32
#define OSPF_DBD_FLAG_MS 1
#define OSPF_DBD_FLAG_M 2
#define OSPF_DBD_FLAG_I 4
#define OSPF_LS_REQ_LENGTH 12
#define OSPF_LSTYPE_ROUTER 1
#define OSPF_LSTYPE_NETWORK 2
#define OSPF_LSTYPE_SUMMERY 3
#define OSPF_LSTYPE_ASBR 4
#define OSPF_LSTYPE_ASEXT 5
#define OSPF_LINK_PTP 1
#define OSPF_LINK_TRANSIT 2
#define OSPF_LINK_STUB 3
#define OSPF_LINK_VIRTUAL 4
#define OSPF_LSA_HEADER_LENGTH 20
typedef struct _e_ospfhdr {
guint8 version;
guint8 packet_type;
guint16 length;
guint32 routerid;
guint32 area;
guint16 checksum;
guint16 auth_type;
char auth_data[8];
} e_ospfhdr;
typedef struct _e_ospf_hello {
guint32 network_mask;
guint16 hellointervall;
guint8 options;
guint8 priority;
guint32 dead_interval;
guint32 drouter;
guint32 bdrouter;
} e_ospf_hello ;
typedef struct _e_ospf_dbd {
guint16 interface_mtu;
guint8 options;
guint8 flags;
guint32 dd_sequence;
} e_ospf_dbd;
typedef struct _e_ospf_ls_req {
guint32 ls_type;
guint32 ls_id;
guint32 adv_router;
} e_ospf_ls_req;
typedef struct _e_ospf_lsa_hdr {
guint16 ls_age;
guint8 options;
guint8 ls_type;
guint32 ls_id;
guint32 adv_router;
guint32 ls_seq;
guint16 ls_checksum;
guint16 length;
} e_ospf_lsa_hdr;
typedef struct _e_ospf_router_lsa {
guint8 flags;
guint8 empfty;
guint16 nr_links;
} e_ospf_router_lsa;
typedef struct _e_ospf_router_data {
guint32 link_id;
guint32 link_data;
guint8 link_type;
guint8 nr_tos;
guint16 tos0_metric;
} e_ospf_router_data;
typedef struct _e_ospf_router_metric {
guint8 tos;
guint8 empty;
guint16 metric;
} e_ospf_router_metric;
typedef struct _e_ospf_network_lsa {
guint32 network_mask;
} e_ospf_network_lsa;
typedef struct _e_ospf_lsa_upd_hdr {
guint32 lsa_nr;
} e_ospf_lsa_upd_hdr;
typedef struct _e_ospf_summary_lsa {
guint32 network_mask;
} e_ospf_summary_lsa;
typedef struct _e_ospf_asexternal_lsa {
guint8 options;
guint8 metric[3];
guint32 gateway;
guint32 external_tag;
} e_ospf_asexternal_lsa;
void dissect_ospf_hello(const u_char*, int, frame_data*, proto_tree*);
void dissect_ospf_db_desc(const u_char*, int, frame_data*, proto_tree*);
void dissect_ospf_ls_req(const u_char*, int, frame_data*, proto_tree*);
void dissect_ospf_ls_upd(const u_char*, int, frame_data*, proto_tree*);
void dissect_ospf_ls_ack(const u_char*, int, frame_data*, proto_tree*);
/* dissect_ospf_lsa returns the length of the LSA
* if disassemble_body is set to FALSE (e.g. in LSA ACK
* packets), the LSA-header length is returned (20)
*/
int dissect_ospf_lsa(const u_char*, int, frame_data*, proto_tree*, int disassemble_body);