iPXE
if_arp.h File Reference

Address Resolution Protocol constants and types. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  arphdr
 An ARP header. More...

Macros

#define ARPHRD_NETROM   0
 from KA9Q: NET/ROM pseudo
#define ARPHRD_ETHER   1
 Ethernet 10Mbps.
#define ARPHRD_EETHER   2
 Experimental Ethernet.
#define ARPHRD_AX25   3
 AX.25 Level 2.
#define ARPHRD_PRONET   4
 PROnet token ring.
#define ARPHRD_CHAOS   5
 Chaosnet.
#define ARPHRD_IEEE802   6
 IEEE 802.2 Ethernet/TR/TB.
#define ARPHRD_ARCNET   7
 ARCnet.
#define ARPHRD_APPLETLK   8
 APPLEtalk.
#define ARPHRD_DLCI   15
 Frame Relay DLCI.
#define ARPHRD_ATM   19
 ATM.
#define ARPHRD_METRICOM   23
 Metricom STRIP (new IANA id)
#define ARPHRD_IEEE1394   24
 IEEE 1394 IPv4 - RFC 2734.
#define ARPHRD_EUI64   27
 EUI-64.
#define ARPHRD_INFINIBAND   32
 InfiniBand.
#define ARPOP_REQUEST   1
 ARP request.
#define ARPOP_REPLY   2
 ARP reply.
#define ARPOP_RREQUEST   3
 RARP request.
#define ARPOP_RREPLY   4
 RARP reply.
#define ARPOP_InREQUEST   8
 InARP request.
#define ARPOP_InREPLY   9
 InARP reply.
#define ARPOP_NAK   10
 (ATM)ARP NAK

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
struct arphdr __attribute__ ((packed))
static void * arp_sender_ha (struct arphdr *arphdr)
 ARP packet sender hardware address.
static void * arp_sender_pa (struct arphdr *arphdr)
 ARP packet sender protocol address.
static void * arp_target_ha (struct arphdr *arphdr)
 ARP packet target hardware address.
static void * arp_target_pa (struct arphdr *arphdr)
 ARP packet target protocol address.
static size_t arp_len (struct arphdr *arphdr)
 ARP packet length.

Variables

uint16_t ar_hrd
 Link-layer protocol.
uint16_t ar_pro
 Network-layer protocol.
uint8_t ar_hln
 Link-layer address length.
uint8_t ar_pln
 Network-layer address length.
uint16_t ar_op
 ARP opcode.

Detailed Description

Address Resolution Protocol constants and types.

Definition in file if_arp.h.

Macro Definition Documentation

◆ ARPHRD_NETROM

#define ARPHRD_NETROM   0

from KA9Q: NET/ROM pseudo

Definition at line 16 of file if_arp.h.

◆ ARPHRD_ETHER

#define ARPHRD_ETHER   1

Ethernet 10Mbps.

Definition at line 17 of file if_arp.h.

Referenced by eapol_probe(), fcoe_probe(), gdbudp_recv(), and ipoib_translate_rx_arp().

◆ ARPHRD_EETHER

#define ARPHRD_EETHER   2

Experimental Ethernet.

Definition at line 18 of file if_arp.h.

◆ ARPHRD_AX25

#define ARPHRD_AX25   3

AX.25 Level 2.

Definition at line 19 of file if_arp.h.

◆ ARPHRD_PRONET

#define ARPHRD_PRONET   4

PROnet token ring.

Definition at line 20 of file if_arp.h.

◆ ARPHRD_CHAOS

#define ARPHRD_CHAOS   5

Chaosnet.

Definition at line 21 of file if_arp.h.

◆ ARPHRD_IEEE802

#define ARPHRD_IEEE802   6

IEEE 802.2 Ethernet/TR/TB.

Definition at line 22 of file if_arp.h.

◆ ARPHRD_ARCNET

#define ARPHRD_ARCNET   7

ARCnet.

Definition at line 23 of file if_arp.h.

◆ ARPHRD_APPLETLK

#define ARPHRD_APPLETLK   8

APPLEtalk.

Definition at line 24 of file if_arp.h.

◆ ARPHRD_DLCI

#define ARPHRD_DLCI   15

Frame Relay DLCI.

Definition at line 25 of file if_arp.h.

◆ ARPHRD_ATM

#define ARPHRD_ATM   19

ATM.

Definition at line 26 of file if_arp.h.

◆ ARPHRD_METRICOM

#define ARPHRD_METRICOM   23

Metricom STRIP (new IANA id)

Definition at line 27 of file if_arp.h.

◆ ARPHRD_IEEE1394

#define ARPHRD_IEEE1394   24

IEEE 1394 IPv4 - RFC 2734.

Definition at line 28 of file if_arp.h.

◆ ARPHRD_EUI64

#define ARPHRD_EUI64   27

EUI-64.

Definition at line 29 of file if_arp.h.

◆ ARPHRD_INFINIBAND

#define ARPHRD_INFINIBAND   32

InfiniBand.

Definition at line 30 of file if_arp.h.

Referenced by ipoib_translate_tx_arp().

◆ ARPOP_REQUEST

#define ARPOP_REQUEST   1

ARP request.

Definition at line 33 of file if_arp.h.

Referenced by arp_rx(), arp_tx_request(), and gdbudp_recv().

◆ ARPOP_REPLY

#define ARPOP_REPLY   2

ARP reply.

Definition at line 34 of file if_arp.h.

Referenced by arp_rx(), gdbudp_recv(), ipoib_translate_rx_arp(), and ipoib_translate_tx_arp().

◆ ARPOP_RREQUEST

#define ARPOP_RREQUEST   3

RARP request.

Definition at line 35 of file if_arp.h.

◆ ARPOP_RREPLY

#define ARPOP_RREPLY   4

RARP reply.

Definition at line 36 of file if_arp.h.

◆ ARPOP_InREQUEST

#define ARPOP_InREQUEST   8

InARP request.

Definition at line 37 of file if_arp.h.

◆ ARPOP_InREPLY

#define ARPOP_InREPLY   9

InARP reply.

Definition at line 38 of file if_arp.h.

◆ ARPOP_NAK

#define ARPOP_NAK   10

(ATM)ARP NAK

Definition at line 39 of file if_arp.h.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ __attribute__()

struct arphdr __attribute__ ( (packed) )

◆ arp_sender_ha()

void * arp_sender_ha ( struct arphdr * arphdr)
inlinestatic

ARP packet sender hardware address.

Parameters
arphdrARP header
Return values
ar_shaSender hardware address

Definition at line 72 of file if_arp.h.

72 {
73 return ( ( ( void * ) arphdr ) + sizeof ( *arphdr ) );
74}
An ARP header.
Definition if_arp.h:48

Referenced by arp_rx(), arp_sender_pa(), gdbudp_recv(), ipoib_translate_rx_arp(), and ipoib_translate_tx_arp().

◆ arp_sender_pa()

void * arp_sender_pa ( struct arphdr * arphdr)
inlinestatic

ARP packet sender protocol address.

Parameters
arphdrARP header
Return values
ar_spaSender protocol address

Definition at line 81 of file if_arp.h.

81 {
82 return ( arp_sender_ha ( arphdr ) + arphdr->ar_hln );
83}
static void * arp_sender_ha(struct arphdr *arphdr)
ARP packet sender hardware address.
Definition if_arp.h:72
uint8_t ar_hln
Link-layer address length.
Definition if_arp.h:60

References arphdr::ar_hln, and arp_sender_ha().

Referenced by arp_rx(), arp_target_ha(), gdbudp_recv(), ipoib_translate_rx_arp(), and ipoib_translate_tx_arp().

◆ arp_target_ha()

void * arp_target_ha ( struct arphdr * arphdr)
inlinestatic

ARP packet target hardware address.

Parameters
arphdrARP header
Return values
ar_thaTarget hardware address

Definition at line 90 of file if_arp.h.

90 {
91 return ( arp_sender_pa ( arphdr ) + arphdr->ar_pln );
92}
static void * arp_sender_pa(struct arphdr *arphdr)
ARP packet sender protocol address.
Definition if_arp.h:81
uint8_t ar_pln
Network-layer address length.
Definition if_arp.h:62

References arphdr::ar_pln, and arp_sender_pa().

Referenced by arp_rx(), arp_target_pa(), gdbudp_recv(), ipoib_translate_rx_arp(), and ipoib_translate_tx_arp().

◆ arp_target_pa()

void * arp_target_pa ( struct arphdr * arphdr)
inlinestatic

ARP packet target protocol address.

Parameters
arphdrARP header
Return values
ar_tpaTarget protocol address

Definition at line 99 of file if_arp.h.

99 {
100 return ( arp_target_ha ( arphdr ) + arphdr->ar_hln );
101}
static void * arp_target_ha(struct arphdr *arphdr)
ARP packet target hardware address.
Definition if_arp.h:90

References arphdr::ar_hln, and arp_target_ha().

Referenced by arp_rx(), gdbudp_recv(), ipoib_translate_rx_arp(), and ipoib_translate_tx_arp().

◆ arp_len()

size_t arp_len ( struct arphdr * arphdr)
inlinestatic

ARP packet length.

Parameters
arphdrARP header
Return values
lenLength (including header)

Definition at line 108 of file if_arp.h.

108 {
109 return ( sizeof ( *arphdr ) +
110 ( 2 * ( arphdr->ar_hln + arphdr->ar_pln ) ) );
111}

References arphdr::ar_hln, and arphdr::ar_pln.

Referenced by arp_rx().

Variable Documentation

◆ ar_hrd

uint16_t ar_hrd

Link-layer protocol.

This is an ARPHRD_XXX constant

Definition at line 4 of file if_arp.h.

◆ ar_pro

uint16_t ar_pro

Network-layer protocol.

This is, for Ethernet, an ETH_P_XXX constant.

Definition at line 9 of file if_arp.h.

◆ ar_hln

uint8_t ar_hln

Link-layer address length.

Definition at line 11 of file if_arp.h.

◆ ar_pln

uint8_t ar_pln

Network-layer address length.

Definition at line 13 of file if_arp.h.

◆ ar_op

uint16_t ar_op

ARP opcode.

Definition at line 15 of file if_arp.h.