Fix up the incomplete Webserver project so that it integrates with the uIP stack...
[pub/USBasp.git] / Demos / Device / ClassDriver / RNDISEthernet / Lib / Ethernet.c
index 57380a0..d09930e 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
@@ -37,7 +37,6 @@
  \r
 #include "Ethernet.h"\r
 \r
  \r
 #include "Ethernet.h"\r
 \r
-/* Global Variables: */\r
 /** Constant for convenience when checking against or setting a MAC address to the virtual server MAC address. */\r
 const MAC_Address_t ServerMACAddress    = {SERVER_MAC_ADDRESS};\r
 \r
 /** Constant for convenience when checking against or setting a MAC address to the virtual server MAC address. */\r
 const MAC_Address_t ServerMACAddress    = {SERVER_MAC_ADDRESS};\r
 \r
@@ -59,7 +58,7 @@ const IP_Address_t  ClientIPAddress     = {CLIENT_IP_ADDRESS};
  */\r
 void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_t* FrameOUT)\r
 {\r
  */\r
 void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_t* FrameOUT)\r
 {\r
-       DecodeEthernetFrameHeader(FrameIN->FrameData);\r
+       DecodeEthernetFrameHeader(FrameIN);\r
 \r
        /* Cast the incoming Ethernet frame to the Ethernet header type */\r
        Ethernet_Frame_Header_t* FrameINHeader  = (Ethernet_Frame_Header_t*)&FrameIN->FrameData;\r
 \r
        /* Cast the incoming Ethernet frame to the Ethernet header type */\r
        Ethernet_Frame_Header_t* FrameINHeader  = (Ethernet_Frame_Header_t*)&FrameIN->FrameData;\r
@@ -69,7 +68,8 @@ void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_
        \r
        /* Ensure frame is addressed to either all (broadcast) or the virtual webserver, and is a type II frame */\r
        if ((MAC_COMPARE(&FrameINHeader->Destination, &ServerMACAddress) ||\r
        \r
        /* Ensure frame is addressed to either all (broadcast) or the virtual webserver, and is a type II frame */\r
        if ((MAC_COMPARE(&FrameINHeader->Destination, &ServerMACAddress) ||\r
-            MAC_COMPARE(&FrameINHeader->Destination, &BroadcastMACAddress)))\r
+            MAC_COMPARE(&FrameINHeader->Destination, &BroadcastMACAddress)) &&\r
+                (SwapEndian_16(FrameIN->FrameLength) > ETHERNET_VER2_MINSIZE))\r
        {\r
                /* Process the packet depending on its protocol */\r
                switch (SwapEndian_16(FrameINHeader->EtherType))\r
        {\r
                /* Process the packet depending on its protocol */\r
                switch (SwapEndian_16(FrameINHeader->EtherType))\r
@@ -110,8 +110,8 @@ void Ethernet_ProcessPacket(Ethernet_Frame_Info_t* FrameIN, Ethernet_Frame_Info_
 /** Calculates the appropriate ethernet checksum, consisting of the addition of the one's\r
  *  compliment of each word, complimented.\r
  *\r
 /** Calculates the appropriate ethernet checksum, consisting of the addition of the one's\r
  *  compliment of each word, complimented.\r
  *\r
- *  \param Data   Pointer to the packet buffer data whose checksum must be calculated\r
- *  \param Bytes  Number of bytes in the data buffer to process\r
+ *  \param[in] Data   Pointer to the packet buffer data whose checksum must be calculated\r
+ *  \param[in] Bytes  Number of bytes in the data buffer to process\r
  *\r
  *  \return A 16-bit Ethernet checksum value\r
  */\r
  *\r
  *  \return A 16-bit Ethernet checksum value\r
  */\r