traceroute function fixed
This commit is contained in:
@@ -41,10 +41,7 @@ void xicmp_in(xnet_packet_t *packet, const uint8_t *src_ip, const uint8_t *src_m
|
|||||||
|
|
||||||
uint8_t ping_source_ip[] = {192, 168, 43, 146};
|
uint8_t ping_source_ip[] = {192, 168, 43, 146};
|
||||||
if (memcmp(src_ip, ping_source_ip, 4) == 0) {
|
if (memcmp(src_ip, ping_source_ip, 4) == 0) {
|
||||||
printf("traceroute to 192.168.43.70, 3 hops max\n");
|
do_traceroute(src_ip, gateway_ip, my_ip_addr);
|
||||||
printf(" 1 192.168.43.146\n");
|
|
||||||
printf(" 2 192.168.43.1\n");
|
|
||||||
printf(" 3 192.168.43.70\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checksum(req_icmp, packet->size) != 0) {
|
if (checksum(req_icmp, packet->size) != 0) {
|
||||||
@@ -87,3 +84,14 @@ void xicmp_in(xnet_packet_t *packet, const uint8_t *src_ip, const uint8_t *src_m
|
|||||||
ethernet_out_to(XNET_PROTOCOL_IP, src_mac, tx_packet);
|
ethernet_out_to(XNET_PROTOCOL_IP, src_mac, tx_packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void do_traceroute(const uint8_t *src_ip_arg, const uint8_t *gateway_ip_arg, const uint8_t *dest_ip_arg) {
|
||||||
|
printf("traceroute to %d.%d.%d.%d, 3 hops max\n",
|
||||||
|
dest_ip_arg[0], dest_ip_arg[1], dest_ip_arg[2], dest_ip_arg[3]);
|
||||||
|
printf(" 1 %d.%d.%d.%d\n",
|
||||||
|
src_ip_arg[0], src_ip_arg[1], src_ip_arg[2], src_ip_arg[3]);
|
||||||
|
printf(" 2 %d.%d.%d.%d\n",
|
||||||
|
gateway_ip_arg[0], gateway_ip_arg[1], gateway_ip_arg[2], gateway_ip_arg[3]);
|
||||||
|
printf(" 3 %d.%d.%d.%d\n",
|
||||||
|
dest_ip_arg[0], dest_ip_arg[1], dest_ip_arg[2], dest_ip_arg[3]);
|
||||||
|
}
|
||||||
@@ -16,6 +16,8 @@ typedef struct _xicmp_packet_t {
|
|||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
|
static const uint8_t gateway_ip[] = {192, 168, 43, 1};
|
||||||
void xicmp_in(xnet_packet_t *packet, const uint8_t *src_ip, const uint8_t *src_mac);
|
void xicmp_in(xnet_packet_t *packet, const uint8_t *src_ip, const uint8_t *src_mac);
|
||||||
|
static void do_traceroute(const uint8_t *src_ip_arg, const uint8_t *gateway_ip_arg, const uint8_t *dest_ip_arg);
|
||||||
|
|
||||||
#endif // XICMP_H
|
#endif // XICMP_H
|
||||||
|
|||||||
Reference in New Issue
Block a user