Stefan Schuermans
initial commit after making CF identify work
Stefan Schuermans commited e8658d5 at 2012-04-15 19:57:57
/* flaneth - flash and ethernet version 0.2 date 2008-11-08 Copyright (C)
2007-2008 Stefan Schuermans <stefan@schuermans.info> Copyleft: GNU public
license V2 - http://www.gnu.org/copyleft/gpl.html a BlinkenArea project -
http://www.blinkenarea.org/ */
#include "arp.h"
#include "config.h"
#include "debug.h"
#include "ethernet.h"
#include "ip.h"
#include "macros.h"
#include "nethelp.h"
// timing parameters
#define ArpTicksMax 150 // maximum age of ARP table entries (in 200ms steps)
#define ArpNoMacTicksMax 50 // maximum age of ARP table entries without
// MAC (in 200ms steps)
#define ArpRetryTicks 8 // time after which to retry ARP query (must be power
// of 2, in 200ms steps)
// ARP table
#define ArpTabFlagInUse 0x01
#define ArpTabFlagMacOk 0x02
struct ArpTable {
unsigned char Flags; // flags - see constants
unsigned char Ticks; // age of entry in 200ms steps
unsigned char Mac[6];
unsigned char Ip[4];
} ArpTab[12];
// initialize
void ArpInit(void) // (extern)
{
unsigned char i;
// empty ARP tabale
for (i = 0; i < count(ArpTab); i++)
ArpTab[i].Flags = 0;
}
// send an ARP request
static void ArpSendRequest(unsigned char *pIp)
{
struct ArpPacket ArpRequest;
debug_arp_printf("send req ip=%u.%u.%u.%u", pIp[0], pIp[1], pIp[2], pIp[3]);
// build ARP request
ArpRequest.ArpHdr.HwType = htons(0x0001); // ethernet
ArpRequest.ArpHdr.ProtoType = htons(0x0800); // IP
ArpRequest.ArpHdr.HwLen = 0x06; // length of a MAC address
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX