Files
ft_ping/includes/ping.h
2025-08-17 23:17:00 +02:00

59 lines
1.3 KiB
C

#pragma once
#include "netinet/in.h"
#include "netinet/ip_icmp.h"
#include <help.h>
#include <opt_parse.h>
#include <bits/types/struct_timeval.h>
#include <stdbool.h>
#include <stdint.h>
#include <sys/socket.h>
#include <sys/types.h>
extern char *exec_name;
extern int tx_count;
extern int rx_count;
extern char *address;
extern double *times;
extern int sock;
extern char **hosts;
extern bool verbose;
typedef struct {
uint32_t count;
uint16_t size;
uint16_t timeout;
uint16_t linger;
uint16_t interval;
} options_t;
typedef struct {
struct icmphdr hdr;
char *msg;
} icmp_pckt_t;
#define MAX_WAIT_TIME 5
#define DEFAULT_VERBOSE false
#define DEFAULT_SIZE 56
#define DEFAULT_INTERVAL 1
#define DEFAULT_TIMEOUT -1
#define DEFAULT_COUNT -1
#define DEFAULT_LINGER 10
int send_ping(int socket, struct sockaddr_in *dest, options_t opt);
int init_socket(options_t opt);
void init_packet(char *buf, int seq, uint32_t size);
int send_icmp(int socket, char *buf, struct sockaddr_in *addr, uint32_t size);
int receive_icmp(int socket, char *buf, uint32_t size,
struct sockaddr_in *addr);
void process_icmp(char *buf, int bytes, struct sockaddr_in *addr, int seq,
struct timeval *tv_start, struct timeval *tv_end);
int ping(args_t *args);
// Internal
unsigned short get_checksum(unsigned short *addr, int count);