libicmp/includes/internal/icmp_recv.h
2026-01-26 20:12:42 +01:00

33 lines
1,011 B
C

#ifndef ICMP_RECV_H
#define ICMP_RECV_H
#include "icmp.h"
#include "internal/icmp_internal.h"
#include <netinet/in.h>
#include <sys/types.h>
/* Validation helpers */
int recv_validate_params(struct icmp_handle *h, icmp_callback_t cb);
int recv_handle_receive_error(struct icmp_handle *h);
/* Core receive functions */
ssize_t recv_receive_packet(int fd, void *buffer, size_t buffer_len,
struct sockaddr_in *from);
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);
/* Reply building */
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);
/* Process single packet */
void recv_process_single_packet(uint8_t *buffer, ssize_t len,
icmp_callback_t cb, void *userdata);
#endif