- refactored network

git-svn-id: http://moon:8086/svn/mips@204 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
2021-11-23 19:29:51 +00:00
parent 2b04dc86da
commit 794bd38593
20 changed files with 1 additions and 1 deletions
+67
View File
@@ -0,0 +1,67 @@
// -------------------------------------------------------------------------
// ethernet.c
//
// 21.12.2003, J. Ahrensfeld
//
// -------------------------------------------------------------------------
#include "libsys.h"
#include "ethernet.h"
#include "ipv4.h"
#include "icmp.h"
#include "string.h"
// -------------------------------------------------------------------------
// Testing
void ICMPSendRequest(packet_t *pPacket, uint8_t *inet_addr_src, uint8_t *inet_addr_dst, uint8_t *icmp_payload, uint16_t len)
{
uint16_t sum;
ICMP *pICMP;
uint8_t *pData;
pICMP = (ICMP*)IPV4_create(pPacket, IP_TYPE_ICMP, sizeof(ICMP)+len, inet_addr_src, inet_addr_dst);
memset(pICMP, 0, sizeof(ICMP));
pICMP->type = ICMP_ECHO_REQUEST;
pICMP->icmp_code = 0x00;
pICMP->hdr_chksum = 0x0000;
pICMP->data_hdr[0]= 0x00; // Identifier
pICMP->data_hdr[1]= 0x00; // Sequence number
sum = IPv4ChkSum((uint16_t*)pICMP, 0, sizeof(ICMP));
sum = IPv4ChkSum((uint16_t*)icmp_payload, sum, len);
pICMP->hdr_chksum = ~sum;
pData = (uint8_t*)Eth_pkt_append(pPacket, sizeof(ICMP));
memcpy(pData, icmp_payload, len);
Eth_pkt_append(pPacket, len);
}
void ICMPSendReply(packet_t *pPacket, uint8_t *inet_addr_src, uint8_t *inet_addr_dst, ICMP *pHdr, uint8_t *icmp_payload, uint16_t len)
{
uint16_t sum;
ICMP *pICMP;
uint8_t *pData;
pICMP = (ICMP*)IPV4_create(pPacket, ICMP_ECHO_REPLY, sizeof(ICMP) + len, inet_addr_src, inet_addr_dst);
memcpy(pICMP, pHdr, sizeof(ICMP));
pICMP->type = ICMP_ECHO_REPLY;
pICMP->hdr_chksum = 0x0000;
sum = IPv4ChkSum((uint16_t*)pICMP, 0, sizeof(ICMP));
sum = IPv4ChkSum((uint16_t*)icmp_payload, sum, len);
pICMP->hdr_chksum = ~sum;
pData = (uint8_t*)Eth_pkt_append(pPacket, sizeof(ICMP));
memcpy(pData, icmp_payload, len);
Eth_pkt_append(pPacket, len);
}