24 lines
669 B
C
24 lines
669 B
C
#include "internal/icmp_recv.h"
|
|
#include "internal/icmp_utils.h"
|
|
#include <string.h>
|
|
|
|
void
|
|
recv_build_reply(icmp_reply_t *reply, uint8_t type, uint8_t code,
|
|
uint8_t ttl, struct in_addr src_addr,
|
|
const void *payload, size_t payload_len,
|
|
const void *buffer, size_t ip_hdr_len)
|
|
{
|
|
memset(reply, 0, sizeof(icmp_reply_t));
|
|
reply->type = type;
|
|
reply->code = code;
|
|
reply->from = src_addr;
|
|
reply->ttl = ttl;
|
|
reply->payload = (void *)payload;
|
|
reply->payload_len = payload_len;
|
|
reply->ip_payload = (void *)((const uint8_t *)buffer + ip_hdr_len);
|
|
if (icmp_get_time(&reply->timestamp) < 0)
|
|
{
|
|
reply->timestamp.tv_sec = 0;
|
|
reply->timestamp.tv_nsec = 0;
|
|
}
|
|
}
|