/****************************************************************************
** File: arp.h
**
** Author: Mike Borella
**
** Comments: Generic ARP structure - an attempt at OS independence
**
** $Id: arp.h,v 1.3 2000/08/30 20:23:04 mborella Exp $
**
** 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 Library 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
*****************************************************************************/
#ifndef ARP_H
#define ARP_H
#include "global.h"
#include "local.h"
/*
* ARP hardware identifiers (not even close to complete, but sufficient)
*/
#define ARP_HWTYPE_ETHERNET 1
#define ARP_HWTYPE_IEEE802 6
#define ARP_HWTYPE_IEEE1394 29
/*
* ARP protocol opcodes.
*/
#define ARP_OPCODE_REQUEST 1 /* ARP request */
#define ARP_OPCODE_REPLY 2 /* ARP reply */
#define RARP_OPCODE_REQUEST 3 /* RARP request */
#define RARP_OPCODE_REPLY 4 /* RARP reply */
/*
* ARP header
*/
typedef struct arp_header
{
u_int16_t hwaddr_format; /* format of hardware address */
u_int16_t protoaddr_format; /* format of protocol address */
u_int8_t hwaddr_length; /* length of hardware address */
u_int8_t protoaddr_length; /* length of protocol address */
u_int16_t opcode; /* ARP opcode (command) */
} arp_header_t;
/*
* Ethernet ARP format
*/
typedef struct ether_arp
{
u_int8_t sender_hwaddr[6]; /* sender hardware address */
u_int8_t sender_protoaddr[4]; /* sender protocol address */
u_int8_t target_hwaddr[6]; /* target hardware address */
u_int8_t target_protoaddr[4]; /* target protocol address */
} ether_arp_t;
void dump_arp(packet_t *);
#endif
syntax highlighted by Code2HTML, v. 0.9.1