20 lines
523 B
C
20 lines
523 B
C
#include "internal/icmp_recv.h"
|
|
#include "internal/icmp_packet_internal.h"
|
|
|
|
int
|
|
recv_parse_packet(const void *buffer, size_t buffer_len,
|
|
uint8_t *type, uint8_t *code,
|
|
uint8_t *ttl, struct in_addr *src_addr,
|
|
const void **payload, size_t *payload_len,
|
|
size_t *ip_hdr_len)
|
|
{
|
|
if (icmp_parse_ip_header(buffer, buffer_len, ttl, src_addr,
|
|
ip_hdr_len) < 0)
|
|
return -1;
|
|
|
|
if (icmp_parse_icmp_payload(buffer, buffer_len, *ip_hdr_len,
|
|
type, code, payload, payload_len) < 0)
|
|
return -1;
|
|
|
|
return 0;
|
|
}
|