Sergey Pastor / 1

Dependents:   Nucleo

Embed: (wiki syntax)

« Back to documentation index

arp.c File Reference

arp.c File Reference

ARP (Address Resolution Protocol) More...

Go to the source code of this file.

Functions

error_t arpInit (NetInterface *interface)
 ARP cache initialization.
void arpFlushCache (NetInterface *interface)
 Flush ARP cache.
ArpCacheEntryarpCreateEntry (NetInterface *interface)
 Create a new entry in the ARP cache.
ArpCacheEntryarpFindEntry (NetInterface *interface, Ipv4Addr ipAddr)
 Search the ARP cache for a given IPv4 address.
void arpSendQueuedPackets (NetInterface *interface, ArpCacheEntry *entry)
 Send packets that are waiting for address resolution.
void arpFlushQueuedPackets (NetInterface *interface, ArpCacheEntry *entry)
 Flush packet queue.
error_t arpResolve (NetInterface *interface, Ipv4Addr ipAddr, MacAddr *macAddr)
 Address resolution using ARP protocol.
error_t arpEnqueuePacket (NetInterface *interface, Ipv4Addr ipAddr, NetBuffer *buffer, size_t offset)
 Enqueue an IPv4 packet waiting for address resolution.
void arpTick (NetInterface *interface)
 ARP timer handler.
void arpProcessPacket (NetInterface *interface, ArpPacket *arpPacket, size_t length)
 Incoming ARP packet processing.
void arpProcessRequest (NetInterface *interface, ArpPacket *arpRequest)
 Incoming ARP request processing.
void arpProcessReply (NetInterface *interface, ArpPacket *arpReply)
 Incoming ARP reply processing.
error_t arpSendProbe (NetInterface *interface, Ipv4Addr targetIpAddr)
 Send ARP probe.
error_t arpSendRequest (NetInterface *interface, Ipv4Addr targetIpAddr, const MacAddr *destMacAddr)
 Send ARP request.
error_t arpSendReply (NetInterface *interface, Ipv4Addr targetIpAddr, const MacAddr *targetMacAddr, const MacAddr *destMacAddr)
 Send ARP reply.
void arpDumpPacket (const ArpPacket *arpPacket)
 Dump ARP packet for debugging purpose.

Detailed Description

ARP (Address Resolution Protocol)

License

Copyright (C) 2010-2017 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.

Description

Address Resolution Protocol is used to determine the hardware address of a specific host when only its IPv4 address is known. Refer to RFC 826

Author:
Oryx Embedded SARL (www.oryx-embedded.com)
Version:
1.7.6

Definition in file arp.c.


Function Documentation

ArpCacheEntry* arpCreateEntry ( NetInterface *  interface )

Create a new entry in the ARP cache.

Parameters:
[in]interfaceUnderlying network interface
Returns:
Pointer to the newly created entry

Definition at line 97 of file arp.c.

void arpDumpPacket ( const ArpPacket *  arpPacket )

Dump ARP packet for debugging purpose.

Parameters:
[in]arpPacketARP header

Definition at line 893 of file arp.c.

error_t arpEnqueuePacket ( NetInterface *  interface,
Ipv4Addr  ipAddr,
NetBuffer buffer,
size_t  offset 
)

Enqueue an IPv4 packet waiting for address resolution.

Parameters:
[in]interfaceUnderlying network interface
[in]ipAddrIPv4 address of the destination host
[in]bufferMulti-part buffer containing the packet to be enqueued
[in]offsetOffset to the first byte of the packet
Returns:
Error code

Definition at line 327 of file arp.c.

ArpCacheEntry* arpFindEntry ( NetInterface *  interface,
Ipv4Addr  ipAddr 
)

Search the ARP cache for a given IPv4 address.

Parameters:
[in]interfaceUnderlying network interface
[in]ipAddrIPv4 address
Returns:
A pointer to the matching ARP entry is returned. NULL is returned if the specified IPv4 address could not be found in ARP cache

Definition at line 143 of file arp.c.

void arpFlushCache ( NetInterface *  interface )

Flush ARP cache.

Parameters:
[in]interfaceUnderlying network interface

Definition at line 72 of file arp.c.

void arpFlushQueuedPackets ( NetInterface *  interface,
ArpCacheEntry entry 
)

Flush packet queue.

Parameters:
[in]interfaceUnderlying network interface
[in]entryPointer to a ARP cache entry

Definition at line 208 of file arp.c.

error_t arpInit ( NetInterface *  interface )

ARP cache initialization.

Parameters:
[in]interfaceUnderlying network interface
Returns:
Error code

Definition at line 57 of file arp.c.

void arpProcessPacket ( NetInterface *  interface,
ArpPacket *  arpPacket,
size_t  length 
)

Incoming ARP packet processing.

Parameters:
[in]interfaceUnderlying network interface
[in]arpPacketIncoming ARP packet
[in]lengthPacket length

Definition at line 522 of file arp.c.

void arpProcessReply ( NetInterface *  interface,
ArpPacket *  arpReply 
)

Incoming ARP reply processing.

Parameters:
[in]interfaceUnderlying network interface
[in]arpReplyIncoming ARP reply

Definition at line 653 of file arp.c.

void arpProcessRequest ( NetInterface *  interface,
ArpPacket *  arpRequest 
)

Incoming ARP request processing.

Parameters:
[in]interfaceUnderlying network interface
[in]arpRequestIncoming ARP request

Definition at line 611 of file arp.c.

error_t arpResolve ( NetInterface *  interface,
Ipv4Addr  ipAddr,
MacAddr *  macAddr 
)

Address resolution using ARP protocol.

Parameters:
[in]interfaceUnderlying network interface
[in]ipAddrIPv4 address
[in]macAddrPhysical address matching the specified IPv4 address
Returns:
Error code

Definition at line 236 of file arp.c.

error_t arpSendProbe ( NetInterface *  interface,
Ipv4Addr  targetIpAddr 
)

Send ARP probe.

Parameters:
[in]interfaceUnderlying network interface
[in]targetIpAddrTarget IPv4 address
Returns:
Error code

Definition at line 735 of file arp.c.

void arpSendQueuedPackets ( NetInterface *  interface,
ArpCacheEntry entry 
)

Send packets that are waiting for address resolution.

Parameters:
[in]interfaceUnderlying network interface
[in]entryPointer to a ARP cache entry

Definition at line 174 of file arp.c.

error_t arpSendReply ( NetInterface *  interface,
Ipv4Addr  targetIpAddr,
const MacAddr *  targetMacAddr,
const MacAddr *  destMacAddr 
)

Send ARP reply.

Parameters:
[in]interfaceUnderlying network interface
[in]targetIpAddrTarget IPv4 address
[in]targetMacAddrTarget MAC address
[in]destMacAddrDestination MAC address
Returns:
Error code

Definition at line 845 of file arp.c.

error_t arpSendRequest ( NetInterface *  interface,
Ipv4Addr  targetIpAddr,
const MacAddr *  destMacAddr 
)

Send ARP request.

Parameters:
[in]interfaceUnderlying network interface
[in]targetIpAddrTarget IPv4 address
[in]destMacAddrDestination MAC address
Returns:
Error code

Definition at line 786 of file arp.c.

void arpTick ( NetInterface *  interface )

ARP timer handler.

This routine must be periodically called by the TCP/IP stack to manage ARP cache

Parameters:
[in]interfaceUnderlying network interface

Definition at line 411 of file arp.c.