📄 ospf_structures.h
字号:
/* ospf_structures.h - ospf structures*//* Copyright 2000-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------03f,03jul03,ram Backed out SPR#88600 workaround03e,11jun03,ram SPR#88965 Separate route table and LSDB hash parameters03d,06jun03,kkz Unpacked HELLO_HEADER structure (makes no difference - struct is naturally packed) and OSPF_ROUTER_LINK_ADVERTISEMENT_HEADER03c,26may03,agi Removed RWOS-specific references03b,26may03,dsk SPR 88600 fix for stuck in EXCHANGE_START (timer added to restart if stuck in exchange start state too long)03a,23may03,agi Renamed OSPF watchdog, semaphores02z,22may03,dsk SPR#88619 Fix early LSA retransmission02y,09may03,agi Added OSPF tasks structures02y,08may03,asr Changes to make OSPF virtual stack compatible02x,22apr03,ram SPR#76812 Modifications for OSPF performance enhancements02w,29jan03,mwv SPR 85893 added member ls_database_pending_delete to OSPF_LS_DATABASE_ENTRY02v,28jan03,ram SPR 85050 Added support for external route redistribution based on OSPF external metric values02u,06jan03,ram SPR 85432 Changes to allow more OSPF external route processing02t,09dec02,ram SPR 83418 Added support for OSPF metric type and value configuration02s,24dec02,dsk SPR#75194, ANVL 27.15 - added sptr_old_routing_table pointer to the ospf datastructure02s,20feb03,kc Fixed SPR#86319 - rename inject_default_route_if_stub_area to inject_summary_lsa_into_stub_area in OSPF_AREA_ENTRY and OSPF_AREA_CONFIGURATION_CLASS structures.02q,09dec02,hme Fixed SPR#75796 ANVL 37.102p,19nov02,mwv Merge TMS code SPR 8428402o,05aug02,jkw Fix TSR 28803002n,28jun02,kc Fixed SPR 78381 - Added inject_default_route_if_stub_area to OSPF_AREA_ENTRY structure.02m,24may02,kc Added ifnet_index and ifnet_flags to OSPF_INTERFACE structure.02l,23apr02,kc Added number_of_stub_areas and number_of_nssa_areas counters to OSPF_CLASS. Removed unused bufPtr array from OSPF_CLASS.02k,13feb02,jkw Remove preproc around structures. Possible alignment problems.02j,20dec01,jkw Removed sptr_area->sptr_interfaces structure.02i,13dec01,kc Removed unused mib_import_as_external from OSPF_AREA_ENTRY structure.02h,13nov01,jkw Change number of address ranges to ULONG02g,25oct01,kc Added area_id to OSPF_ADDRESS_RANGE_LIST_ENTRY.02f,13oct01,kc Dynamic configuration changes.02e,29sep01,kc Added interface_index in OSPF_INTERFACE structure.02d,29sep01,kc Defined separate M_BLK_ID for OSPF_ADDR_ALLSPF and OSPF_ADDR_ALLDR in OSPF_INTERFACE structure.02c,22sep01,kc Made sptr_interface linked list visible in OSPF_CLASS.02b,22aug01,jkw Added opaque lsa structure changes.02a,13aug01,aos Added new tid member to OSPF class01z,23jul01,jkw Added in changes for new UNION_OSPF_LS_ID structure01y,20jun01,jkw Added unnumbered link support01x,21may01,jkw Updated for point to point01w,11may01,aos Added new ls_database_last_originated_time_stamp member to OSPF_LS_DATABASE_ENTRY01v,26sep00,reshma Added WindRiver CopyRight01u,25sep00,reshma RFC-1587 implementation for OSPF NSSA Option, also tested against ANVL.01t,20jul00,reshma Unix compatibility related changes.01s,06jul00,reshma Removed unnecessary header files and defines.01r,04apr00,reshma Added some MIB support (Read only). Passed all important ANVL OSPF tests.01q,23dec99,reshma Compatibility with VxWorks-IP and VxWorks RTM-interface01p,19may99,jack redefined OSPF_PATRICIA_32_BITS_KEY_MAX_BIT_POSITION as per fixes in patricia01o,22jan99,jack unpacked structs that shouldnt be packed01n,22jan99,jack removed pack on three structures01m,28dec98,jack Compiled and added some comments01l,03dec98,jack Structure unpacking01k,13nov98,jack Changes related to introducing queuing in OSPF to RTM interface and bug fix on the external route additions path (to RTM)01j,11nov98,jack Config changes, linted and big endian changes01i,30oct98,jack Incorporate changes for compilation on Vxworks01h,23aug98,jack ANVL tested OSPF with PATRICIA tree route table and no recursion01g,10aug98,jack PATRICIA Route Table Based OSPF Code Base01f,08jul98,jack Patricia RT table related changes - need to be tested01e,04jun98,jack Integration with RTM and BGP01d,10jul97,cindy Pre-release v1.52b01c,10feb97,cindy Release Version 1.5201b,22oct97,cindy Release Version 1.5001a,05jun96,cindy First Beta Release*//* includes */#include <inetLib.h>#include <net/if.h>#include <netinet/ip.h>#include <sys/socket.h>#include <net/protosw.h>#include <net/socketvar.h>#include "ospf_container.h"/************************************************************************/#if !defined (_OSPF_STRUCTURES_H_)#define _OSPF_STRUCTURES_H_enum PROTOCOL_STACK_TYPE{ IP_PROTOCOL_STACK, IPX_PROTOCOL_STACK, SPANNING_TREE_STACK, SOURCE_ROUTING_STACK, NLSP_PROTOCOL_STACK, DLSW_PROTOCOL_STACK, OSPF_PROTOCOL_STACK, APPLETALK_PROTOCOL_STACK, NETBIOS_PROTOCOL_STACK, VINES_PROTOCOL_STACK, CONSOLE_PROTOCOL_STACK, L2TP_PROTOCOL_STACK, RTM_PROTOCOL_STACK, PPTP_DATA_TUNNEL, PPP_OVER_ETHERNET_PROTOCOL_STACK, VPN_INTERFACE_VIRTUAL_PROTOCOL_STACK};enum PROTOCOL_CONTROL_OPERATION{ OPEN_PROTOCOL_STACK, CLOSE_PROTOCOL_STACK, GET_IP_ADDRESS_FOR_PORT, IS_PROTOCOL_STACK_ENABLED = 0x0100, GET_NUMBER_OF_PROTOCOL_STACKS_VIRTUAL_PORTS, GET_PROTOCOL_STACK_TYPE, GET_PROTOCOL_STACK_PROTOCOL_ID, GET_PROTOCOL_STACK_SSAP, GET_PROTOCOL_STACK_DSAP, GET_PROTOCOL_STACK_VIRTUAL_PORT_PACKET_TYPE, GET_PROTOCOL_STACK_REAL_PORT_NUMBER_USING_VIRTUAL_PORT_NUMBER, INITIALIZE_SOCKET_PROTOCOL_STACK_INTERFACE, IS_TOKEN_RING_FRAME_SOURCE_ROUTED, IS_TOKEN_RING_FRAME_A_MAC, GET_LENGTH_OF_TOKEN_RING_RIF, CLEAR_SOURCE_ROUTED_BIT, MOVE_RIF_INTO_PACKET, IS_MAC_ADDRESS_SOURCE_ROUTED, REGISTER_TO_IP_FROM_UPPER_LAYER, INITIALIZE_STACK_FUNCTION_POINTERS, INITIALIZE_PROTOCOL_FUNCTION_POINTERS, GET_PROTOCOL_ADDRESS, CLEAR_CACHED_ROUTE, REINITIALIZE_PROTOCOL_STACK, PROTOCOL_STACK_ROUTERWARE_CONTROL, UNINITIALIZE_PROTOCOL_STACK, PROTOCOL_ROUTE_ADDED, PROTOCOL_ROUTE_DELETED, PROTOCOL_ROUTE_CHANGED, LLC_PROTOCOL_STACK, REGISTER_NAT_FILTER = 200, DEREGISTER_NAT_FILTER, OPEN_PROTOCOL_STACK_PORT, CLOSE_PROTOCOL_STACK_PORT, ADD_IP_ADDRESS_AND_NETWORK_MASK_FOR_PORT, ADD_REMOTE_IP_ADDRESS_FOR_PORT, OPEN_VIRTUAL_PORT, CLOSE_VIRTUAL_PORT, REINITIALIZE_VIRTUAL_PORT, UNINITIALIZE_VIRTUAL_PORT};enum LSL_PACKET_TYPE{ RAW_8023, ETHERNET_TYPE_II, LLC_PACKET, SNAP_PACKET, WAN_PACKET, SAME_TYPE_AS_RX_PACKET_, __ENUM_USHORT_FILLER_ = 0x1000};typedef struct OSPF_RETURN_TYPE{ enum OSPF_PACKET_STATE packet_state; BYTE_ENUM (BOOLEAN) exit_routine;} OSPF_RETURN_TYPE;/* used for pointer manipulation when inserting and removing nodes in a list */typedef struct OSPF_GENERIC_NODE{ struct OSPF_GENERIC_NODE *sptr_forward_link; struct OSPF_GENERIC_NODE *sptr_backward_link;} OSPF_GENERIC_NODE;/* used for pointer manipulation when inserting and removing nodes in a list */typedef struct OSPF_STACK_NODE{ struct OSPF_STACK_NODE *sptr_forward_link; struct OSPF_STACK_NODE *sptr_backward_link; void *vptr_data;} OSPF_STACK_NODE;#if (_BYTE_ORDER == _LITTLE_ENDIAN )typedef _struct OSPF_OPTIONS{ BIT_FIELD (enum,BOOLEAN) tos:1; BIT_FIELD (enum,BOOLEAN) externals:1; BIT_FIELD (enum,BOOLEAN) multicast:1; BIT_FIELD (enum,BOOLEAN) nssa:1; BIT_FIELD (enum,BOOLEAN) dont_propagate:1; /*opaque lsa new opaque option bit jkw*/ BIT_FIELD (enum,BOOLEAN) demand_circuit:1; BIT_FIELD (enum,BOOLEAN) opaque:1; BIT_FIELD (enum,BOOLEAN) not_used:1;} _pack OSPF_OPTIONS;#else /* _BYTE_ORDER == _BIG_ENDIAN */typedef _struct OSPF_OPTIONS{ /*opaque lsa new opaque option bit jkw*/ BIT_FIELD (enum,BOOLEAN) not_used:1; BIT_FIELD (enum,BOOLEAN) opaque:1; BIT_FIELD (enum,BOOLEAN) demand_circuit:1; BIT_FIELD (enum,BOOLEAN) dont_propagate:1; BIT_FIELD (enum,BOOLEAN) nssa:1; BIT_FIELD (enum,BOOLEAN) multicast:1; BIT_FIELD (enum,BOOLEAN) externals:1; BIT_FIELD (enum,BOOLEAN) tos:1;} _pack OSPF_OPTIONS;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */typedef _union UNION_OSPF_OPTIONS{ OSPF_OPTIONS _bit; BYTE _byte;} _pack UNION_OSPF_OPTIONS;#if (_BYTE_ORDER == _LITTLE_ENDIAN )typedef _struct OSPF_FLAGS{ BIT_FIELD (enum,BOOLEAN) master:1; BIT_FIELD (enum,BOOLEAN) more:1; BIT_FIELD (enum,BOOLEAN) initialize:1; BIT_FIELD (enum,BOOLEAN) not_used:5;} _pack OSPF_FLAGS;#else /* _BYTE_ORDER == _BIG_ENDIAN */typedef _struct OSPF_FLAGS{ BIT_FIELD (enum,BOOLEAN) not_used:5; BIT_FIELD (enum,BOOLEAN) initialize:1; BIT_FIELD (enum,BOOLEAN) more:1; BIT_FIELD (enum,BOOLEAN) master:1;} _pack OSPF_FLAGS;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */typedef _union UNION_OSPF_FLAGS{ OSPF_FLAGS _bit; BYTE _byte;} _pack UNION_OSPF_FLAGS;typedef _struct OSPF_MD5_AUTHENTICATION{ USHORT offset; BYTE key_ID; BYTE authentication_data_length; ULONG cryptographic_sequence_number;} _pack OSPF_MD5_AUTHENTICATION;typedef _union UNION_OSPF_AUTHENTICATION_FIELD{ BYTE key_or_plain_text_passwd[OSPF_AUTHENTICATION_SIMPLE_SIZE]; OSPF_MD5_AUTHENTICATION md5;} _pack UNION_OSPF_AUTHENTICATION_FIELD;/*opaque lsa new opaque lsa header jkw*/typedef _struct OSPF_LS_ID{ BYTE opaque_type; BYTE opaque_reserved; USHORT opaque_instance;} _pack OSPF_LS_ID;typedef _union UNION_OSPF_LS_ID{ OSPF_LS_ID opaque_lsid; ULONG lsid;} _pack UNION_OSPF_LS_ID;typedef _struct OSPF_LS_OPAQUE_HEADER{ USHORT age; UNION_OSPF_OPTIONS options; BYTE_ENUM (OSPF_LS_TYPE) type; /* Type of advertisement */ UNION_OSPF_LS_ID id; /* Link State Id */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -