Stefan Schuermans
initial commit after making CF identify work
Stefan Schuermans commited e8658d5 at 2012-04-15 19:57:57
/* flaneth - flash and ethernet - dartboard mod
* version 0.1 date 2008-11-09
* 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
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX