📄 ospf_ip_structures.h
字号:
/* ospf_ip_structures.h *//* Copyright 2000-2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history___________________02b,19nov02,mwv Merge TMS code SPR 8428402a,07oct02,agi Fixed compiler warnings01b,10oct01,jkw Added port_number back to IP_ROUTE_ENTRY structure.01a,22sep01,kc Removed port_number from IP_ROUTE_ENTRY structure.*/#if !defined (__OSPF_IP_STRUCTURES_H__) #define __OSPF_IP_STRUCTURES_H__#if __DCC____packed__ enum IP_ROUTE_TYPE#elseenum IP_ROUTE_TYPE#endif{ OTHER_ROUTE_TYPE = 0x01, /* none of the following */ INVALID_ROUTE_TYPE = 0x02, /* an invalidated route */ DIRECT_ROUTE_TYPE = 0x03, /* route to directly connected (sub-)network */ INDIRECT_ROUTE_TYPE = 0x04 /* route to a non-local host/(sub-)network */#if __DCC__};#else} _pack;#endif#if __DCC____packed__ enum IP_PROTOCOL_VALUE#elseenum IP_PROTOCOL_VALUE#endif{ RESERVED_PROTOCOL = 0, ICMP_PROTOCOL = 1, IGMP_PROTOCOL = 2, VX_IP_PROTOCOL = 4, /* * Original name IP_PROTOCOL changed due * to variable name collision in * rwutil.h- V2 version */ TCP_PROTOCOL = 6, IGP_PROTOCOL = 9, UDP_PROTOCOL = 17, IDRP_PROTOCOL = 45, RSVP_PROTOCOL = 46, GRE_PROTOCOL = 47, IPSEC_ESP_PROTOCOL = 50, IPSEC_AH_PROTOCOL = 51, IGRP_PROTOCOL = 88, OSPF_PROTOCOL = 89, IPIP_PROTOCOL = 94, ETHERIP_PROTOCOL = 97#if __DCC__};#else} _pack;#endif#if __DCC____packed__ enum IP_ROUTE_PROTOCOL_TYPE#elseenum IP_ROUTE_PROTOCOL_TYPE#endif{ OTHER_ROUTING_PROTOCOL_TYPE = 0x01, IP_ROUTING_PROTOCOL_TYPE = 0x01, /* * IP_ROUTING_PROTOCOL_TYPE is * intentionally defined as 1 * as well */ LOCALLY_CONFIGURED_TYPE = 0x02, NETWORK_MANAGEMENT_PROTOCOL_TYPE = 0x03, ICMP_PROTOCOL_TYPE = 0x04, EGP_PROTOCOL_TYPE = 0x05, GGP_PROTOCOL_TYPE = 0x06, HELLO_PROTOCOL_TYPE = 0x07, RIP_PROTOCOL_TYPE = 0x08, IS_IS_PROTOCOL_TYPE = 0x09, ES_IS_PROTOCOL_TYPE = 0x0a, CISCO_IGRP_TYPE = 0x0b, BBN_SPF_IGP_TYPE = 0x0c, OSPF_PROTOCOL_TYPE = 0x0d, BGP_PROTOCOL_TYPE = 0x0e#if __DCC__};#else} _pack;#endif#if __DCC____packed__ enum IP_ROUTE_OPERATION#elseenum IP_ROUTE_OPERATION#endif{ ADD_IP_ROUTE = 0x01, DELETE_IP_ROUTE = 0x02#if __DCC__};#else} _pack;#endiftypedef _struct SERVICE_TYPE_BIT_STRUCTURE{#if (_BYTE_ORDER == _LITTLE_ENDIAN ) unsigned char unused:2; unsigned char high_reliability:1; unsigned char high_throughput:1; unsigned char low_delay:1; unsigned char precedence:3;#else /* _BYTE_ORDER == _BIG_ENDIAN */ unsigned char precedence:3; unsigned char low_delay:1; unsigned char high_throughput:1; unsigned char high_reliability:1; unsigned char unused:2;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */} _pack SERVICE_TYPE_BIT_STRUCTURE;typedef _union UNION_SERVICE_TYPE_BIT_STRUCTURE{ SERVICE_TYPE_BIT_STRUCTURE _bit; BYTE _byte;} _pack UNION_SERVICE_TYPE_BIT_STRUCTURE;typedef _union UNION_USER_OPTIONS{ BYTE char_options[MAXIMUM_IP_OPTION_LENGTH]; /* according to rfc791 format in network order */ ULONG ulong_options[MAXIMUM_IP_OPTION_LENGTH / sizeof (ULONG)];} _pack UNION_USER_OPTIONS;typedef _struct IP_UPPER_LAYER_PARAMETERS{ ULONG source_address; ULONG destination_address; BYTE_ENUM (BOOLEAN) do_not_fragment_flag; SERVICE_TYPE_BIT_STRUCTURE type_of_service; USHORT sequence_id; BYTE time_to_live; BYTE protocol; BYTE option_length; UNION_USER_OPTIONS user_options; void *vptr_cached_route; /* address of cached route stored in user's space */ USHORT virtual_port_number; /* do not route, send out through this port if not NO_SUCH_PORT */ ULONG gateway;} _pack IP_UPPER_LAYER_PARAMETERS;typedef _struct VERSION_LENGTH_BIT_STRUCTURE{#if (_BYTE_ORDER == _LITTLE_ENDIAN ) unsigned char header_length:4; unsigned char version:4;#else /* _BYTE_ORDER == _BIG_ENDIAN */ unsigned char version:4; unsigned char header_length:4;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */} _pack VERSION_LENGTH_BIT_STRUCTURE;typedef _struct FLAG_FRAGMENT_OFFSET_BIT_STRUCTURE{#if (_BYTE_ORDER == _LITTLE_ENDIAN ) unsigned char fragment_offset_most_significant_part:5; unsigned char more_fragment_flag:1; unsigned char do_not_fragment_flag:1; unsigned char unused_bit:1;#else /* _BYTE_ORDER == _BIG_ENDIAN */ unsigned char unused_bit:1; unsigned char do_not_fragment_flag:1; unsigned char more_fragment_flag:1; unsigned char fragment_offset_most_significant_part:5;#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */} _pack FLAG_FRAGMENT_OFFSET_BIT_STRUCTURE;typedef _struct IP_HEADER{ VERSION_LENGTH_BIT_STRUCTURE version_header_length; SERVICE_TYPE_BIT_STRUCTURE service_type; USHORT total_length; USHORT identifier; FLAG_FRAGMENT_OFFSET_BIT_STRUCTURE flags_fragment_offset; BYTE fragment_offset_least_significant_part; BYTE time_to_live; BYTE protocol; USHORT header_checksum; ULONG source_ip_address; ULONG destination_ip_address;} _pack IP_HEADER;typedef struct IP_PARAMETERS{ USHORT header_length; USHORT total_length; ULONG source_address; ULONG destination_address; USHORT offset; SERVICE_TYPE_BIT_STRUCTURE type_of_service; USHORT id; BYTE time_to_live; BYTE_ENUM (IP_PROTOCOL_VALUE) protocol; BYTE options_length; BYTE_ENUM (BOOLEAN) do_not_fragment_flag; BYTE_ENUM (BOOLEAN) more_fragment_flag; BYTE version; USHORT checksum; USHORT rx_port_number; ULONG gateway; BYTE_ENUM (BOOLEAN) union_ip_packet_is_to_be_freed; BYTE_ENUM (BOOLEAN) packet_forwarded_by_upper_layer; BYTE_ENUM (BOOLEAN) packet_recognized_by_upper_layer;} IP_PARAMETERS;typedef _union UNION_OPTIONS_OR_DATA{ BYTE data; BYTE ip_options;} _pack UNION_OPTIONS_OR_DATA;typedef _struct IP_PACKET{ UNION_MAC_HEADER mac_header; IP_HEADER header; UNION_OPTIONS_OR_DATA options_or_data;} _pack IP_PACKET;typedef struct PSEUDO_IP_PARAMETERS{ ULONG source_address; ULONG destination_address; BYTE zero_field; BYTE protocol; USHORT length;} PSEUDO_IP_PARAMETERS;#ifndef INVALID_SOCKET_DESCRIPTOR#define INVALID_SOCKET_DESCRIPTOR 0#endif#ifndef SOCKET_OPEN_MODE_WAIT_FOR_MULTIPLE_CONNECTION#define SOCKET_OPEN_MODE_WAIT_FOR_MULTIPLE_CONNECTION 0xFFFF#endif#ifndef WOULD_BLOCK_ERROR#define WOULD_BLOCK_ERROR 0xFFFF#endifextern enum TEST send_ip_packet_from_upper_layer (IP_UPPER_LAYER_PARAMETERS *sptr_ip_upper_layer_parameters, enum BOOLEAN forwarded_packet, IP_PACKET *sptr_ip_packet, USHORT number_of_bytes_including_mac_header, void (*fptr_tx_completion) (USHORT port_number, IP_PACKET *sptr_ip_packet));extern IP_PACKET *get_an_ip_send_packet (USHORT port_number, ULONG size_of_packet);extern void free_an_ip_send_packet (USHORT port_number, void *vptr_txed_packet);#endif /* __OSPF_IP_STRUCTURES_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -