summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c')
-rw-r--r--c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c b/c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c
deleted file mode 100644
index d145ba4d92..0000000000
--- a/c/src/lib/libbsp/arm/nds/dswifi/arm9/source/sgIP_IP.c
+++ /dev/null
@@ -1,124 +0,0 @@
-// DSWifi Project - sgIP Internet Protocol Stack Implementation
-// Copyright (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org
-/******************************************************************************
-DSWifi Lib and test materials are licenced under the MIT open source licence:
-Copyright (c) 2005-2006 Stephen Stair
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-******************************************************************************/
-
-#include "sgIP_IP.h"
-#include "sgIP_TCP.h"
-#include "sgIP_UDP.h"
-#include "sgIP_ICMP.h"
-#include "sgIP_Hub.h"
-
-int idnum_count;
-
-int sgIP_IP_ReceivePacket(sgIP_memblock * mb) {
- sgIP_Header_IP * iphdr;
- unsigned short * chksum_calc;
- int chksum_temp;
- int hdrlen;
-
- iphdr=(sgIP_Header_IP *)mb->datastart;
- chksum_calc=(unsigned short *)mb->datastart;
- // check that header is valid:
- hdrlen=iphdr->version_ihl&15;
- // check length...
- if(mb->totallength<htons(iphdr->tot_length)) {
- SGIP_DEBUG_MESSAGE(("IP: bad length!"));
- SGIP_DEBUG_MESSAGE(("-%i/%i",mb->totallength,htons(iphdr->tot_length)));
- sgIP_memblock_free(mb);
- return 0; // bad size.
- }
- sgIP_memblock_trimsize(mb,htons(iphdr->tot_length));
- // check version
- if((iphdr->version_ihl>>4)!=4) {
- SGIP_DEBUG_MESSAGE(("IP: bad version!"));
- sgIP_memblock_free(mb);
- return 0; // bad version.
- }
-
- // check checksum
- chksum_temp=sgIP_memblock_IPChecksum(mb,0,hdrlen*4);
- if(chksum_temp!=0xFFFF) { // bad chksum! kill packet.
- SGIP_DEBUG_MESSAGE(("IP: bad checksum!"));
- sgIP_memblock_free(mb);
- return 0; // bad checksum.
- }
- if(htons(iphdr->fragment_offset)&0x3FFF) { // fragmented! oh noes! We can't deal with this!
- SGIP_DEBUG_MESSAGE(("IP: fragmented!"));
- sgIP_memblock_free(mb);
- return 0; // fragmented.
- }
-
- sgIP_memblock_exposeheader(mb,-hdrlen*4);
- switch(iphdr->protocol) {
- case PROTOCOL_IP_ICMP: // ICMP
- sgIP_ICMP_ReceivePacket(mb,iphdr->src_address,iphdr->dest_address);
- break;
- case PROTOCOL_IP_TCP: // TCP
- sgIP_TCP_ReceivePacket(mb,iphdr->src_address,iphdr->dest_address);
- break;
- case PROTOCOL_IP_UDP: // UDP
- sgIP_UDP_ReceivePacket(mb,iphdr->src_address,iphdr->dest_address);
- break;
- default:
- sgIP_memblock_free(mb);
- }
-
- return 0;
-}
-int sgIP_IP_MaxContentsSize(unsigned long destip) {
- return sgIP_Hub_IPMaxMessageSize(destip)-sgIP_IP_RequiredHeaderSize();
-}
-int sgIP_IP_RequiredHeaderSize() {
- return 5*4; // we'll not include zeroed options.
-}
-int sgIP_IP_SendViaIP(sgIP_memblock * mb, int protocol, unsigned long srcip, unsigned long destip) {
- sgIP_Header_IP * iphdr;
- unsigned short * chksum_calc;
- int chksum_temp,i;
- sgIP_memblock_exposeheader(mb,20);
- iphdr=(sgIP_Header_IP *)mb->datastart;
- chksum_calc=(unsigned short *)mb->datastart;
- iphdr->dest_address=destip;
- iphdr->fragment_offset=0;
- iphdr->header_checksum=0;
- iphdr->identification=idnum_count++;
- iphdr->protocol=protocol;
- iphdr->src_address=srcip;
- iphdr->tot_length=htons(mb->totallength);
- iphdr->TTL=SGIP_IP_TTL;
- iphdr->type_of_service=0;
- iphdr->version_ihl=0x45;
- chksum_temp=0;
- for(i=0;i<10;i++) chksum_temp+=chksum_calc[i];
- chksum_temp += chksum_temp>>16;
- chksum_temp &= 0xFFFF;
- chksum_temp = ~chksum_temp;
- if(chksum_temp==0) chksum_temp=0xFFFF;
- iphdr->header_checksum=chksum_temp;
- return sgIP_Hub_SendProtocolPacket(htons(0x0800),mb,destip,srcip);
-}
-unsigned long sgIP_IP_GetLocalBindAddr(unsigned long srcip, unsigned long destip) {
- if(srcip) return srcip;
- return sgIP_Hub_GetCompatibleIP(destip);
-}