socket is now RAW, ft_ping now check the received packet
This commit is contained in:
11
main.c
11
main.c
@@ -30,7 +30,6 @@ int ft_ping(struct t_socket sock, int *seq)
|
||||
sock.fd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
||||
if (sock.fd < 0)
|
||||
{
|
||||
printf(strerror(errno));
|
||||
fprintf(stderr, "ERROR : socket() failed\n");
|
||||
return (0);
|
||||
}
|
||||
@@ -63,6 +62,16 @@ int ft_ping(struct t_socket sock, int *seq)
|
||||
fprintf(stderr, "ERROR : invalid packet received (code)\n");
|
||||
return (0);
|
||||
}
|
||||
if (icmp_recv_header->un.echo.id != icmp_header->un.echo.id)
|
||||
{
|
||||
fprintf(stderr, "ERROR : invalid packet received (id is not matching)\n");
|
||||
return (0);
|
||||
}
|
||||
if (icmp_recv_header->un.echo.sequence != icmp_header->un.echo.sequence)
|
||||
{
|
||||
fprintf(stderr, "ERROR : invalid packet received (sequence is not matching)\n");
|
||||
return (0);
|
||||
}
|
||||
printf("success");
|
||||
close(sock.fd);
|
||||
return (1);
|
||||
|
||||
Reference in New Issue
Block a user