ARP
lwIP » Options (lwipopts.h) » IPv4

## Macros

#define | LWIP_ARP 1
#define | ARP_TABLE_SIZE 10
#define | ARP_MAXAGE 300
#define | ARP_QUEUEING 0
#define | ARP_QUEUE_LEN 3
#define | ETHARP_SUPPORT_VLAN 0
#define | LWIP_ETHERNET LWIP_ARP
#define | ETH_PAD_SIZE 0
#define | ETHARP_SUPPORT_STATIC_ENTRIES 0
#define | ETHARP_TABLE_MATCH_NETIF !LWIP_SINGLE_NETIF

## Detailed Description

## Macro Definition Documentation

## ARP_MAXAGE

#define ARP_MAXAGE 300

the time an ARP entry stays valid after its last update, for ARP_TMR_INTERVAL = 1000, this is (60 * 5) seconds = 5 minutes.

## ARP_QUEUE_LEN

#define ARP_QUEUE_LEN 3

The maximum number of packets which may be queued for each unresolved address by other network layers. Defaults to 3, 0 means disabled. Old packets are dropped, new packets are queued.

## ARP_QUEUEING

#define ARP_QUEUEING 0

ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address resolution. By default, only the most recent packet is queued per IP address. This is sufficient for most protocols and mainly reduces TCP connection startup time. Set this to 1 if you know your application sends more than one packet in a row to an IP address that is not in the ARP cache.

## ARP_TABLE_SIZE

#define ARP_TABLE_SIZE 10

ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached.

## ETH_PAD_SIZE

#define ETH_PAD_SIZE 0

ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure alignment of payload after that header. Since the header is 14 bytes long, without this padding e.g. addresses in the IP header will not be aligned on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms.

## ETHARP_SUPPORT_STATIC_ENTRIES

#define ETHARP_SUPPORT_STATIC_ENTRIES 0

ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table entries (using etharp_add_static_entry/etharp_remove_static_entry).

## ETHARP_SUPPORT_VLAN

#define ETHARP_SUPPORT_VLAN 0

ETHARP_SUPPORT_VLAN==1: support receiving and sending ethernet packets with VLAN header. See the description of LWIP_HOOK_VLAN_CHECK and LWIP_HOOK_VLAN_SET hooks to check/set VLAN headers. Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. Alternatively, define a function/define ETHARP_VLAN_CHECK_FN(eth_hdr, vlan) that returns 1 to accept a packet or 0 to drop a packet.

## ETHARP_TABLE_MATCH_NETIF

#define ETHARP_TABLE_MATCH_NETIF !LWIP_SINGLE_NETIF

ETHARP_TABLE_MATCH_NETIF==1: Match netif for ARP table entries. If disabled, duplicate IP address on multiple netifs are not supported (but this should only occur for AutoIP).

## LWIP_ARP

#define LWIP_ARP 1

LWIP_ARP==1: Enable ARP functionality.

## LWIP_ETHERNET

#define LWIP_ETHERNET LWIP_ARP

LWIP_VLAN_PCP==1: Enable outgoing VLAN tagging of frames on a per-PCB basis for QoS purposes. With this feature enabled, each PCB has a new variable: "netif_hints.tci" (Tag Control Identifier). The TCI contains three fields: VID, CFI and PCP.

- VID is the VLAN ID, which should be set to zero.
- The "CFI" bit is used to enable or disable VLAN tags for the PCB.
- PCP (Priority Code Point) is a 3 bit field used for Ethernet level QoS. See pcb_tci_*() functions to get/set/clear this. LWIP_ETHERNET==1: enable ethernet support even though ARP might be disabled