📄 ospf_structures.h
字号:
ULONG advertising_router; seq_t sequence_number; USHORT checksum; USHORT length; /* length of advertisement*/} OSPF_LS_OPAQUE_HEADER;typedef _struct OSPF_LS_HEADER{ USHORT age; UNION_OSPF_OPTIONS options; BYTE_ENUM (OSPF_LS_TYPE) type; /* Type of advertisement */ ULONG id; /* Link State Id */ ULONG advertising_router; seq_t sequence_number; USHORT checksum; USHORT length; /* length of advertisement*/} OSPF_LS_HEADER;typedef _struct OSPF_HELLO_HEADER{ ULONG network_mask; /* network mask associated with this interface */ USHORT hello_interval; /* number of seconds between this router's Hello packets */ UNION_OSPF_OPTIONS options; /* optional capabilities supported by this router */ BYTE router_priority; /* if set to 0, this router is not eligible to become designated router */ ULONG router_dead_interval; /* number of seconds before declaring a silent router down */ ULONG designated_router; /* identity of the designated router for this network */ ULONG backup_designated_router; /* identity of the backup designated router for this network */ ULONG neighbor; /* IDs of each router from whom valid Hello packets have been seen recently on this network */} OSPF_HELLO_HEADER;typedef _struct OSPF_DATABASE_HEADER{ /* RFC 2178 G.9 */ USHORT interface_mtu; UNION_OSPF_OPTIONS options; UNION_OSPF_FLAGS flags; ULONG sequence; OSPF_LS_HEADER link_state_advertisement_header;} _pack OSPF_DATABASE_HEADER;typedef _struct OSPF_LS_REQUESTED_ADVERTISEMENT{ BYTE reserved_bytes[3]; BYTE type; /* Type of advertisement */ ULONG id; /* Link State Id */ ULONG advertising_router;} _pack OSPF_LS_REQUESTED_ADVERTISEMENT;typedef _struct OSPF_LS_REQUEST_HEADER{ OSPF_LS_REQUESTED_ADVERTISEMENT requested_advertisement;} _pack OSPF_LS_REQUEST_HEADER;#if (_BYTE_ORDER == _LITTLE_ENDIAN )typedef _struct OSPF_ROUTER_LINK_BIT_OPTIONS{ BIT_FIELD (enum,BOOLEAN) bit_B:1; BIT_FIELD (enum,BOOLEAN) bit_E:1; BIT_FIELD (enum,BOOLEAN) bit_V:1; BIT_FIELD (enum,BOOLEAN) not_used:5;} _pack OSPF_ROUTER_LINK_BIT_OPTIONS;#else /* _BYTE_ORDER == _BIG_ENDIAN */typedef _struct OSPF_ROUTER_LINK_BIT_OPTIONS{ BIT_FIELD (enum,BOOLEAN) not_used:5; BIT_FIELD (enum,BOOLEAN) bit_V:1; BIT_FIELD (enum,BOOLEAN) bit_E:1; BIT_FIELD (enum,BOOLEAN) bit_B:1;} _pack OSPF_ROUTER_LINK_BIT_OPTIONS;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */typedef _union UNION_OSPF_ROUTER_LINK_BIT_OPTIONS{ OSPF_ROUTER_LINK_BIT_OPTIONS _bit; USHORT _ushort;} _pack UNION_OSPF_ROUTER_LINK_BIT_OPTIONS;typedef _struct OSPF_ROUTER_LINK_METRIC_PIECE{ USHORT tos; USHORT metric;} _pack OSPF_ROUTER_LINK_METRIC_PIECE;typedef _struct OSPF_ROUTER_LINK_PIECE{ ULONG link_id; ULONG link_data; BYTE_ENUM (OSPF_ROUTER_LINK_TYPE) type; BYTE number_of_metrics; USHORT tos0_metric;} _pack OSPF_ROUTER_LINK_PIECE;typedef _struct OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_HEADER ls_header; UNION_OSPF_ROUTER_LINK_BIT_OPTIONS bit_options; USHORT number_of_links; OSPF_ROUTER_LINK_PIECE link;} OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_ROUTER_LSA_LINK{ _struct OSPF_ROUTER_LSA_LINK *sptr_forward_link; _struct OSPF_ROUTER_LSA_LINK *sptr_backward_link; OSPF_LS_HEADER ls_header; UNION_OSPF_ROUTER_LINK_BIT_OPTIONS bit_options; USHORT number_of_links; OSPF_ROUTER_LINK_PIECE link;} _pack OSPF_ROUTER_LSA_LINK;typedef _struct OSPF_NETWORK_LINK_PIECE{ ULONG link_id;} _pack OSPF_NETWORK_LINK_PIECE;typedef _struct OSPF_NETWORK_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_HEADER ls_header; ULONG network_mask; OSPF_NETWORK_LINK_PIECE attached_router;} _pack OSPF_NETWORK_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_NETWORK_LSA_LINK{ _struct OSPF_NETWORK_LSA_LINK *sptr_forward_link; _struct OSPF_NETWORK_LSA_LINK *sptr_backward_link; OSPF_LS_HEADER ls_header; ULONG network_mask; OSPF_NETWORK_LINK_PIECE attached_router;} _pack OSPF_NETWORK_LSA_LINK;typedef _struct OSPF_SUMMARY_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric;} _pack OSPF_SUMMARY_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_SUMMARY_LSA_LINK{ _struct OSPF_SUMMARY_LSA_LINK *sptr_forward_link; _struct OSPF_SUMMARY_LSA_LINK *sptr_backward_link; OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric;} _pack OSPF_SUMMARY_LSA_LINK;typedef _struct OSPF_EXTERNAL_LINK_METRIC_PIECE{ USHORT tos; USHORT metric; ULONG forwarding_address; ULONG external_route_tag;} _pack OSPF_EXTERNAL_LINK_METRIC_PIECE;typedef _struct OSPF_EXTERNAL_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric; ULONG tos0_forwarding_address; ULONG tos0_external_route_tag;} _pack OSPF_EXTERNAL_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_EXTERNAL_LSA_LINK{ _struct OSPF_EXTERNAL_LSA_LINK *sptr_forward_link; _struct OSPF_EXTERNAL_LSA_LINK *sptr_backward_link; OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric; ULONG tos0_forwarding_address; ULONG tos0_external_route_tag;} _pack OSPF_EXTERNAL_LSA_LINK;typedef _struct OSPF_TYPE_7_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric; ULONG tos0_forwarding_address; ULONG tos0_external_route_tag;} _pack OSPF_TYPE_7_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_TYPE_7_LSA_LINK{ _struct OSPF_TYPE_7_LSA_LINK *sptr_forward_link; _struct OSPF_TYPE_7_LSA_LINK *sptr_backward_link; OSPF_LS_HEADER ls_header; ULONG network_mask; ULONG tos0_metric; ULONG tos0_forwarding_address; ULONG tos0_external_route_tag;} _pack OSPF_TYPE_7_LSA_LINK;/*opaque lsa type 9, 10, 11 lsa jkw*/typedef _struct OSPF_OPAQUE_LSA{ OSPF_LS_OPAQUE_HEADER ls_header; void *data;} _pack OSPF_OPAQUE_LSA;typedef _struct OSPF_TYPE_9_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_OPAQUE_HEADER ls_header; void *data; struct OSPF_INTERFACE *opaque_interface;} _pack OSPF_TYPE_9_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_TYPE_9_LSA_LINK{ _struct OSPF_TYPE_9_LSA_LINK *sptr_forward_link; _struct OSPF_TYPE_9_LSA_LINK *sptr_backward_link; OSPF_LS_OPAQUE_HEADER ls_header; void *data; struct OSPF_INTERFACE *opaque_interface;} _pack OSPF_TYPE_9_LSA_LINK;typedef _struct OSPF_TYPE_10_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_OPAQUE_HEADER ls_header; void *data; struct OSPF_AREA_ENTRY *opaque_area;} _pack OSPF_TYPE_10_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_TYPE_10_LSA_LINK{ _struct OSPF_TYPE_10_LSA_LINK *sptr_forward_link; _struct OSPF_TYPE_10_LSA_LINK *sptr_backward_link; OSPF_LS_OPAQUE_HEADER ls_header; void *data; struct OSPF_AREA_ENTRY *opaque_area;} _pack OSPF_TYPE_10_LSA_LINK;typedef _struct OSPF_TYPE_11_LINK_ADVERTISEMENT_HEADER{ OSPF_LS_OPAQUE_HEADER ls_header; void *data;} _pack OSPF_TYPE_11_LINK_ADVERTISEMENT_HEADER;typedef _struct OSPF_TYPE_11_LSA_LINK{ OSPF_LS_OPAQUE_HEADER ls_header; void *data; _struct OSPF_TYPE_11_LSA_LINK *sptr_forward_link; _struct OSPF_TYPE_11_LSA_LINK *sptr_backward_link;} _pack OSPF_TYPE_11_LSA_LINK;typedef _union UNION_OSPF_ADVERTISEMENT_HEADER{ OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER router; OSPF_NETWORK_LINK_ADVERTISEMENT_HEADER network; OSPF_SUMMARY_LINK_ADVERTISEMENT_HEADER summary; OSPF_EXTERNAL_LINK_ADVERTISEMENT_HEADER external; OSPF_TYPE_7_LINK_ADVERTISEMENT_HEADER type_7; /*opaque lsa add new opaque lsa types to union jkw*/ OSPF_TYPE_9_LINK_ADVERTISEMENT_HEADER type_9; OSPF_TYPE_10_LINK_ADVERTISEMENT_HEADER type_10; OSPF_TYPE_11_LINK_ADVERTISEMENT_HEADER type_11;} _pack UNION_OSPF_ADVERTISEMENT_HEADER;typedef _struct OSPF_LS_UPDATE_HEADER{ ULONG number_of_advertisements; UNION_OSPF_ADVERTISEMENT_HEADER advertisement_header;} _pack OSPF_LS_UPDATE_HEADER;typedef _struct OSPF_LS_ACKNOWLEDGEMENT_HEADER{ OSPF_LS_HEADER ls_advertisement_header;} _pack OSPF_LS_ACKNOWLEDGEMENT_HEADER;typedef _union UNION_OSPF_PACKET_TYPES{ OSPF_HELLO_HEADER hello; OSPF_DATABASE_HEADER database; OSPF_LS_REQUEST_HEADER ls_request; OSPF_LS_UPDATE_HEADER ls_update; OSPF_LS_ACKNOWLEDGEMENT_HEADER ls_acknowledgement;} _pack UNION_OSPF_PACKET_TYPES;typedef _struct OSPF_HEADER /* the standard 24 byte header for OSPF (page 178) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -