libicmp/src/recv/helpers/build_reply.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;
}
}