00001 /* 00002 panaLiX, Adrian Panasiuk 2002-5,8 00003 http://panalix.sf.net/ 00004 ad.ek336@gmail.com 00005 00006 small osdev project 00007 provided under GPLv3 license. 00008 */ 00009 00010 00011 #ifndef __PANALIX_ICMP_HPP 00012 #define __PANALIX_ICMP_HPP 00013 00014 #include "src/net/net.hpp" 00015 00016 namespace Net { 00017 namespace ICMP { 00018 00019 struct icmp_header { 00020 uint8 type; 00021 uint8 code; 00022 uint16 checksum; 00023 uint32 data; 00024 uint8 dt[0]; 00025 }; 00026 00027 00028 void processDatagram(struct Net::netbuf *nb); 00029 //len: dlugosc pakietu icmp, dane i naglowek 00030 uint16 count_checksum16_icmph(struct icmp_header *icmph, uint32 len); 00031 00035 void icmp_transmit(struct ip_address ip_addr, struct Net::packet_t *p, uint8 type, uint8 code, uint32 data); 00036 00037 void icmp_transmit_echo_request(struct ip_address ip_addr); 00038 void icmp_transmit_echo_reply(struct ip_address ip_addr, struct Net::packet_t *p, uint32 data); 00039 00040 } 00041 } 00042 00043 void print(struct Net::ICMP::icmp_header icmph); 00044 00045 #endif 00046