Choco OS  V.0.16.9.0
Join to the chocolate world
oc_udp.h
Go to the documentation of this file.
1 
31 #ifndef SYSTEM_CORE_INC_NET_PROTOCOLS_UDP_OC_UDP_H_
32 #define SYSTEM_CORE_INC_NET_PROTOCOLS_UDP_OC_UDP_H_
33 
34 #include <oc_net.h>
35 #include <oc_netif.h>
36 #include <limits.h>
37 #include <oc_process.h>
38 
44 #define _________________________________________DEFINITIONS_SECTION________________________________________________________________________
45 
51 #undef _________________________________________DEFINITIONS_SECTION________________________________________________________________________
52 
53 
59 #define _________________________________________TYPES_SECTION_____________________________________________________________________________
60 
65 //==========================================================================================================================================
73 //==========================================================================================================================================
74 typedef enum
75 {
77  oC_Udp_Port_MAX = UINT16_MAX ,
78 
79  // ==================== WELL KNOWN PORTS ==================== //
236 
238 
239 } oC_Udp_Port_t;
240 
241 //==========================================================================================================================================
245 //==========================================================================================================================================
246 typedef struct PACKED
247 {
248 #if defined(LITTLE_ENDIAN)
249  uint16_t SourcePort;
250  uint16_t DestinationPort;
251  uint16_t Length;
252  uint16_t Checksum;
253 #elif defined(BIG_ENDIAN)
254 # error oC_Udp_Header_t structure is not defined for BIG ENDIAN!
255 #else
256 # error Unknown endianess
257 #endif
259 
260 //==========================================================================================================================================
264 //==========================================================================================================================================
265 typedef union PACKED
266 {
267  struct
268  {
271  uint8_t Zeroes;
272  uint8_t Protocol;
273  uint16_t UdpLength;
274  uint16_t SourcePort;
275  uint16_t DestinationPort;
276  uint16_t Length;
277  uint16_t Checksum;
278  uint32_t Data[2];
279  } IPv4;
280 
281  struct
282  {
283  uint8_t IPv6IsNotDefinedYet;
284  } IPv6;
286 
287 //==========================================================================================================================================
291 //==========================================================================================================================================
292 typedef struct PACKED
293 {
295  uint8_t Data[4];
297 
298 //==========================================================================================================================================
304 //==========================================================================================================================================
305 typedef union
306 {
307  oC_Net_Packet_t Packet;
308 
309  struct
310  {
312  oC_Udp_Datagram_t UdpDatagram;
313  } IPv4;
314 
315  struct
316  {
318  oC_Udp_Datagram_t UdpDatagram;
319  } IPv6;
321 
322 //==========================================================================================================================================
329 //==========================================================================================================================================
330 typedef struct Udp_t * oC_Udp_t;
331 
333 #undef _________________________________________TYPES_SECTION_____________________________________________________________________________
334 
340 #define _________________________________________PROTOTYPES_SECTION_________________________________________________________________________
341 
342 extern oC_ErrorCode_t oC_Udp_TurnOn ( void );
343 extern oC_ErrorCode_t oC_Udp_TurnOff ( void );
344 extern bool oC_Udp_IsPortReserved ( oC_Udp_Port_t Port , oC_Process_t Process );
345 extern oC_ErrorCode_t oC_Udp_ReservePort ( oC_Udp_Port_t * Port , oC_Time_t Timeout );
346 extern oC_ErrorCode_t oC_Udp_ReleasePort ( oC_Udp_Port_t Port , oC_Time_t Timeout );
347 extern oC_ErrorCode_t oC_Udp_ReleaseAllPortsReservedBy ( oC_Process_t Process , oC_Time_t Timeout );
349 extern oC_Udp_Packet_t* oC_Udp_Packet_New ( Allocator_t PacketAllocator , oC_Net_PacketType_t Type , const void * Data , uint16_t Size );
350 extern bool oC_Udp_Packet_Delete ( oC_Udp_Packet_t ** Packet );
351 extern uint16_t oC_Udp_Packet_GetDataSize ( const oC_Udp_Packet_t * Packet );
352 extern bool oC_Udp_Packet_SetData ( oC_Udp_Packet_t * Packet , const void * Data , uint16_t Size );
353 extern oC_ErrorCode_t oC_Udp_Packet_ReadData ( const oC_Udp_Packet_t * Packet , void * outData , uint16_t Size );
354 extern void * oC_Udp_Packet_GetDataReference ( oC_Udp_Packet_t * Packet );
355 extern oC_ErrorCode_t oC_Udp_Send ( oC_Netif_t Netif , oC_Udp_Port_t LocalPort , const oC_Net_Address_t * Destination, oC_Udp_Packet_t * Packet , oC_Time_t Timeout );
356 extern oC_ErrorCode_t oC_Udp_Receive ( oC_Netif_t Netif , oC_Udp_Port_t LocalPort , oC_Udp_Packet_t * Packet , oC_Time_t Timeout );
357 extern oC_ErrorCode_t oC_Udp_CalculateChecksum ( oC_Udp_Packet_t * Packet , bool * outChecksumCorrect , uint16_t * outExpectedChecksum );
358 
359 #undef _________________________________________PROTOTYPES_SECTION_________________________________________________________________________
360 
361 
362 #endif /* SYSTEM_CORE_INC_NET_PROTOCOLS_UDP_OC_UDP_H_ */
IBM RMC (Remote monitoring and Control) protocol, used by System p5 AIX Integrated Virtualization Man...
Definition: oc_udp.h:213
oC_Net_Ipv4_t SourceIp
Source IP address.
Definition: oc_net.h:231
FirstClass Protocol (FCP), used by FirstClass client/server groupware system.
Definition: oc_udp.h:181
Internet Printing Protocol (IPP)
Definition: oc_udp.h:203
Netnews Administration System (NAS)
Definition: oc_udp.h:234
Xerox Network Systems (XNS) Mail.
Definition: oc_udp.h:102
Post Office Protocol, version 3 (POP3)
Definition: oc_udp.h:120
HTTP RPC Ep Map, Remote procedure call over Hypertext Transfer Protocol, often used by Distributed Co...
Definition: oc_udp.h:201
new-rwho, new-who
Definition: oc_udp.h:196
Authentication Service (auth), the precedessor to identification protocol.
Definition: oc_udp.h:122
Real Time Streaming Protocol (RTSP)
Definition: oc_udp.h:197
Background File Transfer Program (BFTP)
Definition: oc_udp.h:135
Any private Remote job entry.
Definition: oc_udp.h:109
uint32_t Length
Length of the packet in bytes.
Definition: oc_net.h:222
oC_ErrorCode_t oC_Udp_ReleaseAllPortsReservedBy(oC_Process_t Process, oC_Time_t Timeout)
releases all ports reserved by the process
Definition: oc_udp.c:481
Internetwork Packet Exchange (IPX)
Definition: oc_udp.h:148
Simple Network Paging Protocol (SNPP), RFC 1568.
Definition: oc_udp.h:175
struct PACKED oC_Udp_Header_t
stores UDP header
IBM Systems Network Architecture (SNA) gateway access server.
Definition: oc_udp.h:118
uint16_t Length
A field that specifies the length in bytes of the UDP header and UDP data.
Definition: oc_udp.h:251
NNTP over TLS/SSL (NNTPS)
Definition: oc_udp.h:200
Simple Network Management Protocol (SNMP)
Definition: oc_udp.h:139
Message posting protocol (MPP)
Definition: oc_udp.h:149
Rpc2portmap.
Definition: oc_udp.h:162
Lightweight Directory Access Protocol (LDAP)
Definition: oc_udp.h:169
AURP (AppleTalk Update-based Routing Protocol)
Definition: oc_udp.h:168
rmonitor, Remote Monitor
Definition: oc_udp.h:198
union PACKED oC_Udp_PseudoHeader_t
pseudo UDP header required only for checksum calculation
bool oC_Udp_IsPortReserved(oC_Udp_Port_t Port, oC_Process_t Process)
checks if the given UDP port is reserved
Definition: oc_udp.c:235
Remote procedure call (RPC)
Definition: oc_udp.h:191
oC_Udp_Port_t
stores UDP port number
Definition: oc_udp.h:74
oC_Net_Ipv4PacketHeader_t Header
Header of the IPv4 packet.
Definition: oc_net.h:276
identifier for allocations
Definition: oc_stdlib.h:159
cloanto-net-1 (used by Cloanto Amiga Explorer and VMs)
Definition: oc_udp.h:160
NetWare Core Protocol (NCP) is used for a variety things such as access to primary NetWare server res...
Definition: oc_udp.h:189
Print server.
Definition: oc_udp.h:141
commerce (Commerce Applications)
Definition: oc_udp.h:193
Simple Mail Transfer Protocol (SMTP), used for e-mail routing between mail servers.
Definition: oc_udp.h:89
Internet Message Access Protocol (IMAP), version 3.
Definition: oc_udp.h:150
Telnet protocol over TLS/SSL.
Definition: oc_udp.h:235
Domain Name System (DNS)
Definition: oc_udp.h:98
netwall, For Emergency Broadcasts
Definition: oc_udp.h:192
kerberos-iv, Kerberos version IV
Definition: oc_udp.h:220
Digital Equipment Corporation DECnet (Phase V+) over TCP/IP.
Definition: oc_udp.h:170
NetBIOS Name Service, used for name registration and resolution.
Definition: oc_udp.h:131
NETCONF over SSH.
Definition: oc_udp.h:224
stores UDP packet
Definition: oc_udp.h:305
Service Location Protocol (SLP)
Definition: oc_udp.h:172
tell send
Definition: oc_udp.h:222
Finger protocol.
Definition: oc_udp.h:110
IEEE-MMS.
Definition: oc_udp.h:210
number of special ports, that are reserved for special service
Definition: oc_udp.h:237
uint16_t Checksum
The checksum field may be used for error-checking of the header and data.
Definition: oc_udp.h:252
Quick Mail Transfer Protocol.
Definition: oc_udp.h:146
Daytime Protocol.
Definition: oc_udp.h:83
Simple Gateway Monitoring Protocol (SGMP), a protocol for remote inspection and alteration of gateway...
Definition: oc_udp.h:136
Doom, first online first-person shooter.
Definition: oc_udp.h:214
Internet Message Access Protocol (IMAP), management of electronic mail messages on a server...
Definition: oc_udp.h:134
http-mgmt
Definition: oc_udp.h:154
securecast1, outgoing packets to NAI&#39;s SecureCast serversAs of 2000
Definition: oc_udp.h:164
TACACS+ Login Host protocol.
Definition: oc_udp.h:95
Microsoft EPMAP (End Point Mapper), also known as DCE/RPC Locator service, used to remotely manage se...
Definition: oc_udp.h:130
Echo Protocol.
Definition: oc_udp.h:82
SupportSoft Nexus Remote Command (data), a proxy gateway connecting remote control traffic...
Definition: oc_udp.h:211
stores network address
Definition: oc_net.h:441
Network Time Protocol (NTP), used for time synchronization.
Definition: oc_udp.h:127
Contains interface for netif object.
REALM-RUSD (ApplianceWare Server Appliance Management Protocol)
Definition: oc_udp.h:215
Bootstrap Protocol (BOOTP) client; also used by Dynamic Host Configuration Protocol (DHCP) ...
Definition: oc_udp.h:104
Host Name Server Protocol.
Definition: oc_udp.h:93
codaauth2, Coda authentication server
Definition: oc_udp.h:163
Resource Location Protocol (RLP)[importance?]—used for determining the location of higher level serv...
Definition: oc_udp.h:92
oC_Net_PacketType_t
stores type of the packet
Definition: oc_net.h:174
SupportSoft Nexus Remote Command (control/listening), a proxy gateway connecting remote control traff...
Definition: oc_udp.h:207
Uninterruptible power supply (UPS)
Definition: oc_udp.h:171
have been assigned to TCPMUX by IANA, but by design only TCP is specified.
Definition: oc_udp.h:80
PKIX Time Stamp Protocol (TSP)
Definition: oc_udp.h:155
Message Send Protocol.
Definition: oc_udp.h:85
X Display Manager Control Protocol (XDMCP), used for remote logins to an X Display Manager server...
Definition: oc_udp.h:142
uint32_t oC_Net_Ipv4_t
stores IPv4 address
Definition: oc_net.h:132
On-Demand Mail Relay (ODMR)
Definition: oc_udp.h:161
ClearCase albd.
Definition: oc_udp.h:165
Mapping of Airline Traffic over Internet Protocol (MATIP) type A.
Definition: oc_udp.h:158
Distributed Mail System Protocol (DMSP, sometimes referred to as Pcmail)
Definition: oc_udp.h:138
Optimized Link State Routing (OLSR)
Definition: oc_udp.h:218
Formerly Unisys Unitary Login, renamed by Unisys to NXEdit.
Definition: oc_udp.h:128
ISO Transport Service Access Point (TSAP) Class 0 protocol;.
Definition: oc_udp.h:114
RLZ DBase.
Definition: oc_udp.h:204
MSDP, Multicast Source Discovery Protocol.
Definition: oc_udp.h:206
UUCP Mapping Project (path service)
Definition: oc_udp.h:124
Simple File Transfer Protocol.
Definition: oc_udp.h:123
NETCONF for SOAP over BEEP.
Definition: oc_udp.h:227
Efficient Short Remote Operations (ESRO)
Definition: oc_udp.h:151
A Remote Network Server System.
Definition: oc_udp.h:167
NetBIOS Datagram Service.
Definition: oc_udp.h:132
Reverse Routing Header (RRH)
Definition: oc_udp.h:221
bool oC_Udp_Packet_Delete(oC_Udp_Packet_t **Packet)
release memory allocated for a UDP packet
Definition: oc_udp.c:589
Arcisdms.
Definition: oc_udp.h:152
oC_ErrorCode_t oC_Udp_ReservePort(oC_Udp_Port_t *Port, oC_Time_t Timeout)
reserves a UDP port
Definition: oc_udp.c:281
comsat, together with biff
Definition: oc_udp.h:182
mdbs-daemon
Definition: oc_udp.h:223
oC_ErrorCode_t oC_Udp_TurnOn(void)
turns on UDP module
Definition: oc_udp.c:132
oC_ErrorCode_t oC_Udp_CalculateChecksum(oC_Udp_Packet_t *Packet, bool *outChecksumCorrect, uint16_t *outExpectedChecksum)
Calculates checksum for UDP packet.
Definition: oc_udp.c:926
oC_ErrorCode_t oC_Udp_ReleasePort(oC_Udp_Port_t Port, oC_Time_t Timeout)
releases a port
Definition: oc_udp.c:412
Remote Mail Checking Protocol.
Definition: oc_udp.h:96
Xerox Network Systems (XNS) authentication.
Definition: oc_udp.h:100
oC_ErrorCode_t oC_Udp_TurnOff(void)
turns off UDP module
Definition: oc_udp.c:188
FTPS Protocol (data), FTP over TLS/SSL.
Definition: oc_udp.h:232
Time Protocol.
Definition: oc_udp.h:90
stores network packet
Definition: oc_net.h:302
MATIP type B.
Definition: oc_udp.h:159
CCSO Nameserver.
Definition: oc_udp.h:116
Gopher protocol.
Definition: oc_udp.h:106
Xerox Network Systems (XNS) Time Protocol.
Definition: oc_udp.h:97
Route Access Protocol (RAP)
Definition: oc_udp.h:91
Group Domain Of Interpretation (GDOI) protocol.
Definition: oc_udp.h:228
Mobile IP Agent (RFC 5944)
Definition: oc_udp.h:174
Xerox Network Systems (XNS) clearinghouse.
Definition: oc_udp.h:99
uint16_t oC_Udp_Packet_GetDataSize(const oC_Udp_Packet_t *Packet)
returns size of the data inside UDP packet
Definition: oc_udp.c:607
OWAMP control (RFC 4656)
Definition: oc_udp.h:230
Citadel, multiservice protocol for dedicated clients for the Citadel groupware system.
Definition: oc_udp.h:180
uint16_t oC_Udp_Packet_GetMaximumDataSize(oC_Net_PacketType_t Type)
returns maximum size of the data for UDP packet
Definition: oc_udp.c:522
Precision Time Protocol (PTP) general messages.
Definition: oc_udp.h:157
Special value for marks port as not filled.
Definition: oc_udp.h:76
NETCONF over BEEP.
Definition: oc_udp.h:225
FTPS Protocol (control), FTP over TLS/SSL.
Definition: oc_udp.h:233
Character Generator Protocol (CHARGEN)
Definition: oc_udp.h:86
Internet Security Association and Key Management Protocol (ISAKMP) / Internet Key Exchange (IKE) ...
Definition: oc_udp.h:178
DNS over TLS (RFC 7858)
Definition: oc_udp.h:229
SANity.
Definition: oc_udp.h:208
NIC host name.
Definition: oc_udp.h:113
maximum number of ports
Definition: oc_udp.h:77
Timed, Timeserver.
Definition: oc_udp.h:190
NETRJS protocol.
Definition: oc_udp.h:107
struct Udp_t * oC_Udp_t
stores information about UDP state
Definition: oc_udp.h:330
Simple Network Management Protocol Trap (SNMPTRAP)
Definition: oc_udp.h:140
Border Gateway Multicast Protocol (BGMP)
Definition: oc_udp.h:153
Post Office Protocol, version 2 (POP2)
Definition: oc_udp.h:119
oC_ErrorCode_t oC_Udp_Packet_ReadData(const oC_Udp_Packet_t *Packet, void *outData, uint16_t Size)
reads data of the UDP packet
Definition: oc_udp.c:652
Trivial File Transfer Protocol (TFTP)
Definition: oc_udp.h:105
uint8_t Data[IPv4_MAXIMUM_DATA_LENGTH]
Data of the packet.
Definition: oc_net.h:277
DHCPv6 client.
Definition: oc_udp.h:194
Any private dial out service.
Definition: oc_udp.h:108
Tinc VPN daemon.
Definition: oc_udp.h:212
oC_Udp_Packet_t * oC_Udp_Packet_New(Allocator_t PacketAllocator, oC_Net_PacketType_t Type, const void *Data, uint16_t Size)
allocates memory for a UDP packet
Definition: oc_udp.c:547
AppleTalk Routing Maintenance.
Definition: oc_udp.h:145
Precision Time Protocol (PTP) event messages.
Definition: oc_udp.h:156
uint16_t SourcePort
This field identifies the sender&#39;s port when meaningful and should be assumed to be the port to reply...
Definition: oc_udp.h:249
Linux-HA high-availability heartbeat.
Definition: oc_udp.h:217
NETCONF for SOAP over HTTPS.
Definition: oc_udp.h:226
Structured Query Language (SQL) Services.
Definition: oc_udp.h:125
Digital Imaging and Communications in Medicine (DICOM; also port 11112)
Definition: oc_udp.h:115
uint32_t Checksum
Header checksum - number used for errors detection.
Definition: oc_net.h:230
DHCPv6 server.
Definition: oc_udp.h:195
ANSI Z39.50.
Definition: oc_udp.h:147
Bootstrap Protocol (BOOTP) server; also used by Dynamic Host Configuration Protocol (DHCP) ...
Definition: oc_udp.h:103
Modbus Protocol.
Definition: oc_udp.h:179
Telnet protocol—unencrypted text communications.
Definition: oc_udp.h:88
The file with interface for process mechanism.
uint16_t DestinationPort
This field identifies the receiver&#39;s port and is required.
Definition: oc_udp.h:250
uint32_t Protocol
Contains selected protocol (TCP/UDP/ICMP,etc).
Definition: oc_net.h:229
Any private terminal access.
Definition: oc_udp.h:101
bool oC_Udp_Packet_SetData(oC_Udp_Packet_t *Packet, const void *Data, uint16_t Size)
sets data inside UDP packet
Definition: oc_udp.c:629
Lightweight Directory Access Protocol over TLS/SSL (LDAPS)
Definition: oc_udp.h:205
DCE endpoint resolution.
Definition: oc_udp.h:129
Label Distribution Protocol (LDP), a routing protocol used in MPLS networks.
Definition: oc_udp.h:209
SNMP multiplexing protocol (SMUX)
Definition: oc_udp.h:144
oC_ErrorCode_t oC_Udp_Send(oC_Netif_t Netif, oC_Udp_Port_t LocalPort, const oC_Net_Address_t *Destination, oC_Udp_Packet_t *Packet, oC_Time_t Timeout)
sends UDP packet
Definition: oc_udp.c:732
dnsix (DoD Network Security for Information Exchange) Securit Attribute Token Map ...
Definition: oc_udp.h:112
oC_Net_Ipv4_t DestinationIp
Destination IP address.
Definition: oc_net.h:232
TWAMP control (RFC 5357)
Definition: oc_udp.h:231
Open Network Computing Remote Procedure Call (ONC RPC, sometimes referred to as Sun RPC) ...
Definition: oc_udp.h:121
oC_ErrorCode_t oC_Udp_Receive(oC_Netif_t Netif, oC_Udp_Port_t LocalPort, oC_Udp_Packet_t *Packet, oC_Time_t Timeout)
receives UDP packet
Definition: oc_udp.c:852
File with interface for the NET module.
void * oC_Udp_Packet_GetDataReference(oC_Udp_Packet_t *Packet)
returns reference to the data inside UDP packet
Definition: oc_udp.c:679
oC_Udp_Header_t Header
Header of the UDP packet.
Definition: oc_udp.h:294
Internet Relay Chat (IRC)
Definition: oc_udp.h:143
WHOIS protocol.
Definition: oc_udp.h:94
Kerberos (protocol) administration.
Definition: oc_udp.h:219
Remote User Telnet Service (RTelnet)
Definition: oc_udp.h:117
Velneo Application Transfer Protocol (VATP)
Definition: oc_udp.h:216
Routing Information Protocol (RIP)
Definition: oc_udp.h:187
HP data alarm manager.
Definition: oc_udp.h:166
ASF Remote Management and Control Protocol (ASF-RMCP) & IPMI Remote Management Protocol.
Definition: oc_udp.h:202
struct PACKED oC_Udp_Datagram_t
stores UDP datagram
Kerberos Change/Set password.
Definition: oc_udp.h:176
Remote job entry.
Definition: oc_udp.h:81
Structured Query Language (SQL) Service.
Definition: oc_udp.h:137
oC_Net_Ipv6_t Destination
Destination IP address.
Definition: oc_net.h:258
NetBIOS Session Service.
Definition: oc_udp.h:133
tcpnethaspsrv, Aladdin Knowledge Systems Hasp services
Definition: oc_udp.h:177
Quote of the Day (QOTD)
Definition: oc_udp.h:84
Kerberos authentication system.
Definition: oc_udp.h:111
Routing Information Protocol Next Generation (RIPng)
Definition: oc_udp.h:188
Syslog, used for system logging.
Definition: oc_udp.h:184
Network News Transfer Protocol (NNTP), retrieval of newsgroup messages.
Definition: oc_udp.h:126
stores IPv6 address
Definition: oc_net.h:142
File Transfer Protocol (FTP) data transfer.
Definition: oc_udp.h:87
NNSP, part of Network News Transfer Protocol.
Definition: oc_udp.h:173