Unit Protocol

From Ultibo.org
Jump to: navigation, search

Return to Unit Reference


Description


Ultibo Network Protocol Interface unit

Constants



Protocol specific constants PROTOCOL_*
PROTOCOL_THREAD_NAME = 'Network Protocol'; Thread name for Network protocol threads
PROTOCOL_THREAD_PRIORITY = THREAD_PRIORITY_HIGHER; Thread priority for Network protocol threads


Protocol timer key values SOCKET_TIMER_KEY_*
SOCKET_TIMER_KEY_NONE = TIMER_KEY_NONE;  
SOCKET_TIMER_KEY_MAX = TIMER_KEY_MAX;  
SOCKET_TIMER_KEY_MIN = TIMER_KEY_MIN;  


Protocol timer flag values SOCKET_TIMER_FLAG_*
SOCKET_TIMER_FLAG_NONE = $00000000;  
SOCKET_TIMER_FLAG_ACTIVE = $00000001; The socket timer item is active in a timer
SOCKET_TIMER_FLAG_DYNAMIC = $00000002; The socket timer item was allocated dynamically


ICMP header type ICMP_*
ICMP_ECHOREPLY = 0; echo reply
ICMP_UNREACH = 3; dest unreachable
ICMP_SOURCEQUENCH = 4; packet lost, slow down
ICMP_REDIRECT = 5; shorter route
ICMP_ECHO = 8; echo service
ICMP_ROUTERADVERT = 9; router advertisement
ICMP_ROUTERSOLICIT = 10; router solicitation
ICMP_TIMXCEED = 11; time exceeded
ICMP_PARAMPROB = 12; ip header bad
ICMP_TSTAMP = 13; timestamp request
ICMP_TSTAMPREPLY = 14; timestamp reply
ICMP_IREQ = 15; information request
ICMP_IREQREPLY = 16; information reply
ICMP_MASKREQ = 17; address mask request
ICMP_MASKREPLY = 18; address mask reply


ICMP header code ICMP_UNREACH_*
ICMP_UNREACH_NET = 0; bad net
ICMP_UNREACH_HOST = 1; bad host
ICMP_UNREACH_PROTOCOL = 2; bad protocol
ICMP_UNREACH_PORT = 3; bad port
ICMP_UNREACH_NEEDFRAG = 4; IP_DF caused drop
ICMP_UNREACH_SRCFAIL = 5; src route failed
ICMP_UNREACH_NET_UNKNOWN = 6; unknown net
ICMP_UNREACH_HOST_UNKNOWN = 7; unknown host
ICMP_UNREACH_ISOLATED = 8; src host isolated
ICMP_UNREACH_NET_PROHIB = 9; prohibited access
ICMP_UNREACH_HOST_PROHIB = 10; ditto
ICMP_UNREACH_TOSNET = 11; bad tos for net
ICMP_UNREACH_TOSHOST = 12; bad tos for host
ICMP_UNREACH_FILTER_PROHIB = 13; admin prohib
ICMP_UNREACH_HOST_PRECEDENCE = 14; host prec vio.
ICMP_UNREACH_PRECEDENCE_CUTOFF = 15; prec cutoff
 
ICMP_REDIRECT_NET = 0; for network
ICMP_REDIRECT_HOST = 1; for host
ICMP_REDIRECT_TOSNET = 2; for tos and net
ICMP_REDIRECT_TOSHOST = 3; for tos and host
 
ICMP_TIMXCEED_INTRANS = 0; ttl=0 in transit
ICMP_TIMXCEED_REASS = 1; ttl=0 in reassembly
 
ICMP_PARAMPROB_OPTABSENT = 1; req. opt. absent


IGMP header type IGMP_*
IGMP_VERSION = 2;  
IGMP_QUERY = $0011;  
IGMP_REPORTV1 = $0012;  
IGMP_REPORTV2 = $0016;  
IGMP_LEAVE = $0017;  


Type definitions



Protocol statistics

PProtocolStatistics = ^TProtocolStatistics;

TProtocolStatistics = record

PacketsIn:Int64;  
PacketsOut:Int64;  
BytesIn:Int64;  
BytesOut:Int64;  
ErrorsIn:Int64;  
ErrorsOut:Int64;  
PacketsLost:Int64;  

Socket timer item

PSocketTimerItem = ^TSocketTimerItem;

TSocketTimerItem = record

Key:Integer; Ordering key for timer list
Flags:LongWord; Flags for this timer item
Socket:TObject; The socket referenced by this timer list item
Prev:PSocketTimerItem; Previous item in timer list
Next:PSocketTimerItem; Next item in timer list

Protocol callback

TProtocolCallback = function(AProtocol:TNetworkProtocol):Boolean of object;

Filter callback

TFilterCallback = function(AFilter:TNetworkFilter):Boolean of object;

Configuration callback

TConfigCallback = function(AConfig:TNetworkConfig):Boolean of object;


Class definitions



Protocol specific classes

TProtocolManager = class(TObject)
TProtocolTransport = class(TListObject)
TNetworkProtocol = class(TListObject)
TSocketTimer = class(TObject)
TSocketThread = class(TThread)
TProtocolPort = class(TListObject)
TProtocolSocket = class(TTransportSocket)
TProtocolState = class(TObject)
TProtocolOptions = class(TObject)
TFilterTransport = class(TListObject)
TNetworkFilter = class(TListObject)
TConfigTransport = class(TListObject)
TNetworkConfig = class(TListObject)
TNetworkClient = class(TListObject)


Public variables



Protocol specific variables

ProtocolManager:TProtocolManager;


Function declarations



Initialization functions

procedure ProtocolInit;
Description: To be documented
Note None documented


function ProtocolStart:LongWord;
Description: To be documented
Note None documented


function ProtocolStop:LongWord;
Description: To be documented
Note None documented


Protocol helper functions

procedure ProtocolCheckTimer(Data:Pointer);
Description: To be documented
Note None documented


Return to Unit Reference