diff options
Diffstat (limited to 'lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c')
| m--------- | lib/lufa | 0 | ||||
| -rw-r--r-- | lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c | 87 | 
2 files changed, 0 insertions, 87 deletions
diff --git a/lib/lufa b/lib/lufa new file mode 160000 +Subproject ce10f7642b0459e409839b23cc91498945119b4 diff --git a/lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c b/lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c deleted file mode 100644 index 518ba8c6a1..0000000000 --- a/lib/lufa/Demos/Device/ClassDriver/RNDISEthernet/Lib/ARP.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -             LUFA Library -     Copyright (C) Dean Camera, 2017. - -  dean [at] fourwalledcubicle [dot] com -           www.lufa-lib.org -*/ - -/* -  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com) - -  Permission to use, copy, modify, distribute, and sell this -  software and its documentation for any purpose is hereby granted -  without fee, provided that the above copyright notice appear in -  all copies and that both that the copyright notice and this -  permission notice and warranty disclaimer appear in supporting -  documentation, and that the name of the author not be used in -  advertising or publicity pertaining to distribution of the -  software without specific, written prior permission. - -  The author disclaims all warranties with regard to this -  software, including all implied warranties of merchantability -  and fitness.  In no event shall the author be liable for any -  special, indirect or consequential damages or any damages -  whatsoever resulting from loss of use, data or profits, whether -  in an action of contract, negligence or other tortious action, -  arising out of or in connection with the use or performance of -  this software. -*/ - -/** \file - * - *  Address Resolution Protocol (ARP) packet handling routines. This protocol handles the - *  conversion of physical MAC addresses to protocol IP addresses between the host and the - *  device. - */ - -#include "ARP.h" - -/** Processes an ARP packet inside an Ethernet frame, and writes the appropriate response - *  to the output Ethernet frame if the host is requesting the IP or MAC address of the - *  virtual server device on the network. - * - *  \param[in] InDataStart   Pointer to the start of the incoming packet's ARP header - *  \param[out] OutDataStart  Pointer to the start of the outgoing packet's ARP header - * - *  \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise - */ -int16_t ARP_ProcessARPPacket(void* InDataStart, -                             void* OutDataStart) -{ -	DecodeARPHeader(InDataStart); - -	ARP_Header_t* ARPHeaderIN  = (ARP_Header_t*)InDataStart; -	ARP_Header_t* ARPHeaderOUT = (ARP_Header_t*)OutDataStart; - -	/* Ensure that the ARP request is a IPv4 request packet */ -	if ((SwapEndian_16(ARPHeaderIN->ProtocolType) == ETHERTYPE_IPV4) && -	    (SwapEndian_16(ARPHeaderIN->Operation) == ARP_OPERATION_REQUEST)) -	{ -		/* If the ARP packet is requesting the MAC or IP of the virtual webserver, return the response */ -		if (IP_COMPARE(&ARPHeaderIN->TPA, &ServerIPAddress) || -		    MAC_COMPARE(&ARPHeaderIN->THA, &ServerMACAddress)) -		{ -			/* Fill out the ARP response header */ -			ARPHeaderOUT->HardwareType = ARPHeaderIN->HardwareType; -			ARPHeaderOUT->ProtocolType = ARPHeaderIN->ProtocolType; -			ARPHeaderOUT->HLEN         = ARPHeaderIN->HLEN; -			ARPHeaderOUT->PLEN         = ARPHeaderIN->PLEN; -			ARPHeaderOUT->Operation    = SwapEndian_16(ARP_OPERATION_REPLY); - -			/* Copy over the sender MAC/IP to the target fields for the response */ -			ARPHeaderOUT->THA = ARPHeaderIN->SHA; -			ARPHeaderOUT->TPA = ARPHeaderIN->SPA; - -			/* Copy over the new sender MAC/IP - MAC and IP addresses of the virtual webserver */ -			ARPHeaderOUT->SHA = ServerMACAddress; -			ARPHeaderOUT->SPA = ServerIPAddress; - -			/* Return the size of the response so far */ -			return sizeof(ARP_Header_t); -		} -	} - -	return NO_RESPONSE; -} -  | 
