Difference between revisions of "Unit ICMP"
From Ultibo.org
(8 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
'''Ultibo ICMP (Internet Control Message Protocol) unit''' | '''Ultibo ICMP (Internet Control Message Protocol) unit''' | ||
− | |||
− | |||
=== Constants === | === Constants === | ||
Line 14: | Line 12: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''ICMP | + | <div style="font-size: 14px; padding-left: 12px;">'''ICMP protocol''' <code> ICMP_PROTOCOL_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 29: | Line 27: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''ICMP constants''' <code> ICMP_* </code></div> | + | <div style="font-size: 14px; padding-left: 12px;">'''ICMP specific constants''' <code> ICMP_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 197: | Line 195: | ||
</div></div> | </div></div> | ||
− | '''ICMP | + | '''ICMP IP header |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 534: | Line 532: | ||
− | '''ICMP | + | '''ICMP specific classes''' |
− | + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | | [[TICMPProtocolTransport|<code>TICMPProtocolTransport = class(TProtocolTransport)</code>]] |
− | + | ||
− | + | ||
− | | <code> | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
− | + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | | [[TICMPProtocol|<code>TICMPProtocol = class(TNetworkProtocol)</code>]] |
− | + | ||
− | + | ||
− | | <code> | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
− | + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | | [[TICMPSocket|<code>TICMPSocket = class(TProtocolSocket)</code>]] |
− | + | ||
− | + | ||
− | + | ||
− | | <code> | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
− | + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | | [[TICMPBuffer|<code>TICMPBuffer = class(TSocketBuffer)</code>]] |
− | + | ||
− | + | ||
− | | <code> | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
− | |||
<br /> | <br /> | ||
− | |||
=== Public variables === | === Public variables === | ||
---- | ---- | ||
Line 880: | Line 572: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 895: | Line 587: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Buffer |
| The complete packet including Transport header | | The complete packet including Transport header | ||
|- | |- | ||
Line 907: | Line 599: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Buffer |
| The complete packet including Transport header | | The complete packet including Transport header | ||
|- | |- | ||
Line 919: | Line 611: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Buffer |
| The complete packet including Transport header | | The complete packet including Transport header | ||
|- | |- | ||
Line 931: | Line 623: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Buffer |
| The complete packet including Transport header | | The complete packet including Transport header | ||
|- | |- | ||
Line 943: | Line 635: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Buffer |
| The complete packet including Transport header | | The complete packet including Transport header | ||
|- | |- | ||
Line 951: | Line 643: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
<pre style="border: 0; padding-bottom:0px;">function ChecksumICMP(AFamily:Word; ABuffer:Pointer; AOffset,ALength:Word):Word;</pre> | <pre style="border: 0; padding-bottom:0px;">function ChecksumICMP(AFamily:Word; ABuffer:Pointer; AOffset,ALength:Word):Word;</pre> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Checksum the ICMP Header on Send / Validate the Checksum on Receive</div> | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Checksum the ICMP Header on Send/Validate the Checksum on Receive</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 05:24, 31 August 2021
Return to Unit Reference
Contents
[hide]Description
Ultibo ICMP (Internet Control Message Protocol) unit
Constants
[Expand]
ICMP protocol
ICMP_PROTOCOL_*
[Expand]
ICMP specific constants
ICMP_*
Type definitions
ICMP unused header
[Expand]
PICMPUnusedHeader = ^TICMPUnusedHeader;
TICMPUnusedHeader = packed record {Unreachable, TimeExceeded, SourceQuench etc}
ICMP unreach header
ICMP expire header
ICMP quench header
ICMP pointer header
ICMP param header
ICMP IP header
ICMP redirect header
ICMP echo header
ICMP time stamp header
ICMP info header
ICMP mask header
ICMP router address
ICMP advert header
ICMP solicit header
ICMP header
ICMP packet
Class definitions
ICMP specific classes
TICMPProtocolTransport = class(TProtocolTransport)
|
TICMPProtocol = class(TNetworkProtocol)
|
TICMPSocket = class(TProtocolSocket)
|
TICMPBuffer = class(TSocketBuffer)
|
Public variables
None defined
Function declarations
Initialization functions
ICMP functions
[Expand]
function CheckICMP(AFamily:Word; ABuffer:Pointer):Boolean;
Description: Verify that the packet is a valid ICMP packet
[Expand]
function GetICMPHeaderOffset(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
[Expand]
function GetICMPHeaderLength(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
[Expand]
function GetICMPDataOffset(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
[Expand]
function GetICMPDataLength(AFamily:Word; ABuffer:Pointer):Word;
Description: To be documented
[Expand]
function ChecksumICMP(AFamily:Word; ABuffer:Pointer; AOffset,ALength:Word):Word;
Description: Checksum the ICMP Header on Send/Validate the Checksum on Receive
Return to Unit Reference