Unit ICMPv6

From Ultibo.org
Revision as of 05:24, 31 August 2021 by Ultibo (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Return to Unit Reference


Description


Ultibo ICMPv6 (Internet Control Message Protocol Version 6) unit

Constants



ICMPv6 protocol ICMP6_PROTOCOL_*
Note: Some ICMPV6 definitions are in the Protocol or IPv6 modules
 
ICMP6_PROTOCOL_NAME = 'ICMPV6';  


ICMPv6 specific constants ICMP6_*
ICMP6_TIMEOUT = 0; Wait forever on a ICMP6 Read
ICMP6_BUFFER_SIZE = 65536; ICMP6 Receive Buffer Size
 
ICMP6_HEADER_SIZE = 5; SizeOf(TICMP6Header);
 
ICMP6_PACKET_SIZE = 8; SizeOf(TICMP6Packet)


Type definitions



ICMPv6 header

PICMP6Header = ^TICMP6Header;

TICMP6Header = packed record

Note: Some ICMPv6 definitions are in the Protocol or IPv6 modules
ICMP6Type:Byte; ICMP_UNREACH etc
Code:Byte; ICMP_UNREACH_NET,ICMP_UNREACH_PORT etc
Checksum:Word; 1s Compliment checksum of Structure
CurrentHopLimit:Byte;  

ICMPv6 packet

PICMP6Packet = ^TICMP6Packet;

TICMP6Packet = record

Note: 8 Bytes (Used by ICMP6Buffer)
Size:LongWord; LongWord to keep size even
Next:PICMP6Packet; Followed by RemoteAddress (4 or 16 Bytes)


Class definitions



ICMPv6 specific classes

TICMP6ProtocolTransport = class(TProtocolTransport)
TICMP6Protocol = class(TNetworkProtocol)
TICMP6Socket = class(TProtocolSocket)
TICMP6Buffer = class(TSocketBuffer)


Public variables


None defined

Function declarations



Initialization functions

procedure ICMP6Init;
Description: To be documented
Note None documented


ICMPv6 functions

function CheckICMP6(AFamily:Word; ABuffer:Pointer):Boolean;
Description: Verify that the packet is a valid ICMP6 packet
Buffer The complete packet including Transport header


function GetICMP6HeaderOffset(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
Buffer The complete packet including Transport header


function GetICMP6HeaderLength(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
Buffer The complete packet including Transport header


function GetICMP6DataOffset(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
Buffer The complete packet including Transport header


function GetICMP6DataLength(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
Buffer The complete packet including Transport header


function ChecksumICMP6(AFamily:Word; ABuffer:Pointer; AOffset,ALength:Word):Word;
Description: Checksum the ICMP6 Header on Send/Validate the Checksum on Receive
Note None documented


Return to Unit Reference