diff --git a/include/net.h b/include/net.h index eeea466..fd19c42 100644 --- a/include/net.h +++ b/include/net.h @@ -298,7 +298,7 @@ struct arp_hdr { /* Codes for NOT_REACH */ #define ICMP_NOT_REACH_PORT 3 /* Port unreachable */ -typedef struct icmphdr { +struct icmp_hdr { uchar type; uchar code; ushort checksum; @@ -314,8 +314,10 @@ typedef struct icmphdr { } frag; uchar data[0]; } un; -} ICMP_t; +}; +#define ICMP_HDR_SIZE (sizeof(struct icmp_hdr)) +#define IP_ICMP_HDR_SIZE (IP_HDR_SIZE + ICMP_HDR_SIZE) /* * Maximum packet size; used to allocate packet storage. diff --git a/net/net.c b/net/net.c index 6d34254..4cdd9cd 100644 --- a/net/net.c +++ b/net/net.c @@ -825,7 +825,7 @@ static inline struct ip_udp_hdr *NetDefragment(struct ip_udp_hdr *ip, int *lenp) static void receive_icmp(struct ip_udp_hdr *ip, int len, IPaddr_t src_ip, struct ethernet_hdr *et) { - ICMP_t *icmph = (ICMP_t *)&ip->udp_src; + struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src; switch (icmph->type) { case ICMP_REDIRECT: diff --git a/net/ping.c b/net/ping.c index 04a594c..3102521 100644 --- a/net/ping.c +++ b/net/ping.c @@ -100,7 +100,7 @@ void ping_start(void) void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len) { - ICMP_t *icmph = (ICMP_t *)&(ip->udp_src); + struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src; IPaddr_t src_ip; switch (icmph->type) {