IPv4 (Internet Protocol Version 4) More...
Go to the source code of this file.
Data Structures | |
struct | _Ipv4Header |
IPv4 header. More... | |
struct | _Ipv4PseudoHeader |
IPv4 pseudo header. More... | |
struct | Ipv4AddrEntry |
IPv4 address entry. More... | |
struct | Ipv4FilterEntry |
IPv4 multicast filter entry. More... | |
struct | Ipv4Context |
IPv4 context. More... | |
Typedefs | |
typedef uint32_t | Ipv4Addr |
IPv4 network address. More... | |
struct { | |
char_t type | |
uint32_t dataStart | |
uint32_t dataLength | |
uint8_t nameLength | |
char_t name [] | |
uint8_t tokenLen: 4 | |
uint8_t type: 2 | |
uint8_t version: 2 | |
uint8_t code | |
uint16_t mid | |
uint8_t token [] | |
union { | |
uint8_t b [6] | |
uint16_t w [3] | |
} | |
uint16_t srcPort | |
uint16_t destPort | |
uint32_t seqNum | |
uint32_t ackNum | |
uint8_t reserved1: 4 | |
uint8_t dataOffset: 4 | |
uint8_t flags: 6 | |
uint8_t reserved2: 2 | |
uint16_t window | |
uint16_t checksum | |
uint16_t urgentPointer | |
uint8_t options [] | |
uint16_t length | |
uint8_t data [] | |
uint8_t op | |
uint8_t htype | |
uint8_t hlen | |
uint8_t hops | |
uint32_t xid | |
uint16_t secs | |
uint16_t flags | |
Ipv4Addr ciaddr | |
Ipv4Addr yiaddr | |
Ipv4Addr siaddr | |
Ipv4Addr giaddr | |
MacAddr chaddr | |
uint8_t unused [10] | |
uint8_t sname [64] | |
uint8_t file [128] | |
uint32_t magicCookie | |
uint16_t type | |
uint16_t hardwareType | |
uint32_t time | |
MacAddr linkLayerAddr | |
uint16_t id | |
uint8_t rd: 1 | |
uint8_t tc: 1 | |
uint8_t aa: 1 | |
uint8_t opcode: 4 | |
uint8_t qr: 1 | |
uint8_t rcode: 4 | |
uint8_t z: 3 | |
uint8_t ra: 1 | |
uint16_t qdcount | |
uint16_t ancount | |
uint16_t nscount | |
uint16_t arcount | |
uint8_t questions [] | |
uint16_t controlWord | |
uint16_t byteCount | |
uint8_t bLength | |
uint8_t bDescriptorType | |
uint16_t bcdUsb | |
uint8_t bDeviceClass | |
uint8_t bDeviceSubClass | |
uint8_t bDeviceProtocol | |
uint8_t bMaxPacketSize0 | |
uint16_t idVendor | |
uint16_t idProduct | |
uint16_t bcdDevice | |
uint8_t iManufacturer | |
uint8_t iProduct | |
uint8_t iSerialNumber | |
uint8_t bNumConfigurations | |
uint8_t maxRespTime | |
Ipv4Addr groupAddr | |
uint16_t hrd | |
uint16_t pro | |
uint8_t hln | |
uint8_t pln | |
uint16_t op | |
MacAddr sha | |
Ipv4Addr spa | |
MacAddr tha | |
Ipv4Addr tpa | |
uint8_t length | |
uint8_t value [] | |
uint16_t first | |
uint16_t last | |
uint16_t next | |
union { | |
uint8_t b [16] | |
uint16_t w [8] | |
uint32_t dw [4] | |
} | |
uint16_t maxRespDelay | |
uint16_t reserved | |
Ipv6Addr multicastAddr | |
uint32_t reserved | |
uint16_t pvid | |
uint8_t autoNegSupportStatus | |
uint16_t pmdAutoNegAdvCap | |
uint16_t operationalMauType | |
uint16_t capabilities | |
uint8_t deviceType | |
uint8_t lengthH: 1 | |
uint8_t lengthL | |
uint8_t t: 1 | |
uint8_t c: 1 | |
union { | |
int32_t integer | |
uint8_t octetString [1] | |
uint8_t oid [1] | |
uint8_t ipAddr [4] | |
uint32_t counter32 | |
uint32_t gauge32 | |
uint32_t unsigned32 | |
uint32_t timeTicks | |
uint64_t counter64 | |
} | |
uint16_t transactionId | |
uint16_t protocolId | |
uint8_t unitId | |
uint8_t pdu [] | |
uint8_t retain: 1 | |
uint8_t qos: 2 | |
uint8_t dup: 1 | |
union { | |
uint8_t all | |
struct { | |
uint8_t topicIdType: 2 | |
uint8_t cleanSession: 1 | |
uint8_t will: 1 | |
uint8_t retain: 1 | |
uint8_t qos: 2 | |
uint8_t dup: 1 | |
} | |
} | |
uint8_t b: 1 | |
uint8_t identifier | |
uint8_t valueSize | |
Ipv4Addr srcIpAddr | |
Ipv4Addr destIpAddr | |
Eui64 interfaceId | |
uint16_t mru | |
uint8_t peerIdLength | |
uint8_t peerId [] | |
uint32_t seconds | |
uint32_t fraction | |
uint16_t opcode | |
char_t filename [] | |
uint8_t reserved: 3 | |
uint8_t fin: 1 | |
uint8_t payloadLen: 7 | |
uint8_t mask: 1 | |
uint8_t extPayloadLen [] | |
uint32_t length | |
uint8_t payload [] | |
uint8_t protocolVersionId | |
uint8_t bpduType | |
StpBridgeId rootId | |
uint32_t rootPathCost | |
StpBridgeId bridgeId | |
uint16_t portId | |
uint16_t messageAge | |
uint16_t maxAge | |
uint16_t helloTime | |
uint16_t forwardDelay | |
uint8_t version1Length | |
uint16_t priority | |
MacAddr addr | |
} | Ipv4Option |
IPv4 option. More... | |
Functions | |
error_t | ipv4Init (NetInterface *interface) |
IPv4 related initialization. More... | |
error_t | ipv4SetHostAddr (NetInterface *interface, Ipv4Addr addr) |
Assign host address. More... | |
error_t | ipv4SetHostAddrEx (NetInterface *interface, uint_t index, Ipv4Addr addr) |
Assign host address. More... | |
error_t | ipv4GetHostAddr (NetInterface *interface, Ipv4Addr *addr) |
Retrieve host address. More... | |
error_t | ipv4GetHostAddrEx (NetInterface *interface, uint_t index, Ipv4Addr *addr) |
Retrieve host address. More... | |
error_t | ipv4SetSubnetMask (NetInterface *interface, Ipv4Addr mask) |
Configure subnet mask. More... | |
error_t | ipv4SetSubnetMaskEx (NetInterface *interface, uint_t index, Ipv4Addr mask) |
Configure subnet mask. More... | |
error_t | ipv4GetSubnetMask (NetInterface *interface, Ipv4Addr *mask) |
Retrieve subnet mask. More... | |
error_t | ipv4GetSubnetMaskEx (NetInterface *interface, uint_t index, Ipv4Addr *mask) |
Retrieve subnet mask. More... | |
error_t | ipv4SetDefaultGateway (NetInterface *interface, Ipv4Addr addr) |
Configure default gateway. More... | |
error_t | ipv4SetDefaultGatewayEx (NetInterface *interface, uint_t index, Ipv4Addr addr) |
Configure default gateway. More... | |
error_t | ipv4GetDefaultGateway (NetInterface *interface, Ipv4Addr *addr) |
Retrieve default gateway. More... | |
error_t | ipv4GetDefaultGatewayEx (NetInterface *interface, uint_t index, Ipv4Addr *addr) |
Retrieve default gateway. More... | |
error_t | ipv4SetDnsServer (NetInterface *interface, uint_t index, Ipv4Addr addr) |
Configure DNS server. More... | |
error_t | ipv4GetDnsServer (NetInterface *interface, uint_t index, Ipv4Addr *addr) |
Retrieve DNS server. More... | |
void | ipv4LinkChangeEvent (NetInterface *interface) |
Callback function for link change event. More... | |
void | ipv4ProcessPacket (NetInterface *interface, Ipv4Header *packet, size_t length, NetRxAncillary *ancillary) |
Incoming IPv4 packet processing. More... | |
void | ipv4ProcessDatagram (NetInterface *interface, const NetBuffer *buffer, size_t offset, NetRxAncillary *ancillary) |
Incoming IPv4 datagram processing. More... | |
error_t | ipv4SendDatagram (NetInterface *interface, Ipv4PseudoHeader *pseudoHeader, NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary) |
Send an IPv4 datagram. More... | |
error_t | ipv4SendPacket (NetInterface *interface, Ipv4PseudoHeader *pseudoHeader, uint16_t fragId, size_t fragOffset, NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary) |
Send an IPv4 packet. More... | |
error_t | ipv4JoinMulticastGroup (NetInterface *interface, Ipv4Addr groupAddr) |
Join the specified host group. More... | |
error_t | ipv4LeaveMulticastGroup (NetInterface *interface, Ipv4Addr groupAddr) |
Leave the specified host group. More... | |
error_t | ipv4StringToAddr (const char_t *str, Ipv4Addr *ipAddr) |
Convert a dot-decimal string to a binary IPv4 address. More... | |
char_t * | ipv4AddrToString (Ipv4Addr ipAddr, char_t *str) |
Convert a binary IPv4 address to dot-decimal notation. More... | |
void | ipv4DumpHeader (const Ipv4Header *ipHeader) |
Dump IPv4 header for debugging purpose. More... | |
Variables | |
__start_packed struct _Ipv4Header | __end_packed |
Detailed Description
IPv4 (Internet Protocol Version 4)
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2023 Oryx Embedded SARL. All rights reserved.
This file is part of CycloneTCP Open.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- Version
- 2.2.2
Definition in file ipv4.h.
Macro Definition Documentation
◆ IPV4_ADDR
◆ IPV4_ADDR_LIST_SIZE
◆ IPV4_BROADCAST_ADDR
◆ IPV4_CLASS_A_ADDR
◆ IPV4_CLASS_A_MASK
◆ IPV4_CLASS_B_ADDR
◆ IPV4_CLASS_B_MASK
◆ IPV4_CLASS_C_ADDR
◆ IPV4_CLASS_C_MASK
◆ IPV4_CLASS_D_ADDR
◆ IPV4_CLASS_D_MASK
◆ IPV4_CLASS_E_ADDR
◆ IPV4_CLASS_E_MASK
◆ IPV4_DATA
#define IPV4_DATA | ( | packet | ) | PTR_OFFSET(packet, packet->headerLength * 4) |
◆ IPV4_DEFAULT_MTU
◆ IPV4_DEFAULT_TTL
◆ IPV4_DNS_SERVER_LIST_SIZE
◆ IPV4_LINK_LOCAL_MASK
◆ IPV4_LINK_LOCAL_PREFIX
◆ IPV4_LOOPBACK_ADDR
◆ IPV4_LOOPBACK_MASK
◆ IPV4_LOOPBACK_PREFIX
◆ IPV4_MAX_HEADER_LENGTH
◆ IPV4_MIN_HEADER_LENGTH
◆ IPV4_MINIMUM_MTU
◆ IPV4_MULTICAST_FILTER_SIZE
◆ IPV4_MULTICAST_INCB_MASK
◆ IPV4_MULTICAST_INCB_PREFIX
◆ IPV4_MULTICAST_LNCB_MASK
◆ IPV4_MULTICAST_LNCB_PREFIX
◆ IPV4_MULTICAST_MASK
◆ IPV4_MULTICAST_PREFIX
◆ IPV4_SUPPORT
◆ IPV4_UNSPECIFIED_ADDR
◆ IPV4_VERSION
◆ ipv4CompAddr
◆ ipv4CopyAddr
#define ipv4CopyAddr | ( | destIpAddr, | |
srcIpAddr | |||
) | osMemcpy(destIpAddr, srcIpAddr, sizeof(Ipv4Addr)) |
◆ Ipv4Header
#define Ipv4Header struct _Ipv4Header |
◆ ipv4IsLinkLocalAddr
#define ipv4IsLinkLocalAddr | ( | ipAddr | ) | (((ipAddr) & IPV4_LINK_LOCAL_MASK) == IPV4_LINK_LOCAL_PREFIX) |
◆ ipv4IsLoopbackAddr
#define ipv4IsLoopbackAddr | ( | ipAddr | ) | (((ipAddr) & IPV4_LOOPBACK_MASK) == IPV4_LOOPBACK_PREFIX) |
◆ ipv4IsMulticastAddr
#define ipv4IsMulticastAddr | ( | ipAddr | ) | (((ipAddr) & IPV4_MULTICAST_MASK) == IPV4_MULTICAST_PREFIX) |
◆ ipv4IsOnSubnet
◆ Ipv4PseudoHeader
#define Ipv4PseudoHeader struct _Ipv4PseudoHeader |
Typedef Documentation
◆ Ipv4Addr
◆ Ipv4Option
typedef { ... } Ipv4Option |
IPv4 option.
Enumeration Type Documentation
◆ Ipv4AddrScope
enum Ipv4AddrScope |
◆ Ipv4AddrState
enum Ipv4AddrState |
◆ Ipv4FragmentOffset
enum Ipv4FragmentOffset |
◆ Ipv4OptionType
enum Ipv4OptionType |
IPv4 option types.
◆ Ipv4Protocol
enum Ipv4Protocol |
Function Documentation
◆ ipv4AddrToString()
◆ ipv4DumpHeader()
void ipv4DumpHeader | ( | const Ipv4Header * | ipHeader | ) |
◆ ipv4GetDefaultGateway()
error_t ipv4GetDefaultGateway | ( | NetInterface * | interface, |
Ipv4Addr * | addr | ||
) |
◆ ipv4GetDefaultGatewayEx()
error_t ipv4GetDefaultGatewayEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr * | addr | ||
) |
◆ ipv4GetDnsServer()
error_t ipv4GetDnsServer | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr * | addr | ||
) |
◆ ipv4GetHostAddr()
error_t ipv4GetHostAddr | ( | NetInterface * | interface, |
Ipv4Addr * | addr | ||
) |
◆ ipv4GetHostAddrEx()
error_t ipv4GetHostAddrEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr * | addr | ||
) |
◆ ipv4GetSubnetMask()
error_t ipv4GetSubnetMask | ( | NetInterface * | interface, |
Ipv4Addr * | mask | ||
) |
◆ ipv4GetSubnetMaskEx()
error_t ipv4GetSubnetMaskEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr * | mask | ||
) |
◆ ipv4Init()
error_t ipv4Init | ( | NetInterface * | interface | ) |
◆ ipv4JoinMulticastGroup()
error_t ipv4JoinMulticastGroup | ( | NetInterface * | interface, |
Ipv4Addr | groupAddr | ||
) |
◆ ipv4LeaveMulticastGroup()
error_t ipv4LeaveMulticastGroup | ( | NetInterface * | interface, |
Ipv4Addr | groupAddr | ||
) |
◆ ipv4LinkChangeEvent()
void ipv4LinkChangeEvent | ( | NetInterface * | interface | ) |
◆ ipv4ProcessDatagram()
void ipv4ProcessDatagram | ( | NetInterface * | interface, |
const NetBuffer * | buffer, | ||
size_t | offset, | ||
NetRxAncillary * | ancillary | ||
) |
Incoming IPv4 datagram processing.
- Parameters
-
[in] interface Underlying network interface [in] buffer Multi-part buffer that holds the incoming IPv4 datagram [in] offset Offset from the beginning of the buffer [in] ancillary Additional options passed to the stack along with the packet
◆ ipv4ProcessPacket()
void ipv4ProcessPacket | ( | NetInterface * | interface, |
Ipv4Header * | packet, | ||
size_t | length, | ||
NetRxAncillary * | ancillary | ||
) |
◆ ipv4SendDatagram()
error_t ipv4SendDatagram | ( | NetInterface * | interface, |
Ipv4PseudoHeader * | pseudoHeader, | ||
NetBuffer * | buffer, | ||
size_t | offset, | ||
NetTxAncillary * | ancillary | ||
) |
Send an IPv4 datagram.
- Parameters
-
[in] interface Underlying network interface [in] pseudoHeader IPv4 pseudo header [in] buffer Multi-part buffer containing the payload [in] offset Offset to the first byte of the payload [in] ancillary Additional options passed to the stack along with the packet
- Returns
- Error code
◆ ipv4SendPacket()
error_t ipv4SendPacket | ( | NetInterface * | interface, |
Ipv4PseudoHeader * | pseudoHeader, | ||
uint16_t | fragId, | ||
size_t | fragOffset, | ||
NetBuffer * | buffer, | ||
size_t | offset, | ||
NetTxAncillary * | ancillary | ||
) |
Send an IPv4 packet.
- Parameters
-
[in] interface Underlying network interface [in] pseudoHeader IPv4 pseudo header [in] fragId Fragment identification field [in] fragOffset Fragment offset field [in] buffer Multi-part buffer containing the payload [in] offset Offset to the first byte of the payload [in] ancillary Additional options passed to the stack along with the packet
- Returns
- Error code
◆ ipv4SetDefaultGateway()
error_t ipv4SetDefaultGateway | ( | NetInterface * | interface, |
Ipv4Addr | addr | ||
) |
◆ ipv4SetDefaultGatewayEx()
error_t ipv4SetDefaultGatewayEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr | addr | ||
) |
◆ ipv4SetDnsServer()
error_t ipv4SetDnsServer | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr | addr | ||
) |
◆ ipv4SetHostAddr()
error_t ipv4SetHostAddr | ( | NetInterface * | interface, |
Ipv4Addr | addr | ||
) |
◆ ipv4SetHostAddrEx()
error_t ipv4SetHostAddrEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr | addr | ||
) |
◆ ipv4SetSubnetMask()
error_t ipv4SetSubnetMask | ( | NetInterface * | interface, |
Ipv4Addr | mask | ||
) |
◆ ipv4SetSubnetMaskEx()
error_t ipv4SetSubnetMaskEx | ( | NetInterface * | interface, |
uint_t | index, | ||
Ipv4Addr | mask | ||
) |
◆ ipv4StringToAddr()
Variable Documentation
◆ __end_packed
__start_packed struct _Ipv6PseudoHeader __end_packed |