#ifndef ARP_PACKET_H #define ARP_PACKET_H #include <assert.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <net/if.h> #include <linux/if_tun.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <stdint.h> #include "arp_packet_st.h" #include "util.h" #define IP_A_S 4 #define OP_A_S 2 #define SUCCESS 0 #define FAILED -1 #define UNEQUAL 1 #define ARES_OP_REQ 0x0001 #define ARES_OP_REP 0x0002 #define ARES_HRD_ETHERNET 0x0001 #define ETHER_T_ARP 0x0806 #define ARES_PRO_IP 0x0800 #define TB_L 100 int parse_arp_packet(mac_hdr * hdr, pkt_data * pkt, uint8_t * buf, size_t size); int receive_arp_packet(mac_hdr * hdr, pkt_data * pkt, uint8_t * buf, size_t size, uint8_t * local_ip, uint8_t * local_mac); int send_arp_response(int tun_fd, uint8_t * resp_buffer, size_t length, const pkt_data * pkt, const mac_hdr * hdr); #endif