#ifndef ARP_PACKET_H #define ARP_PACKET_H #include #include #include #include #include #include #include #include #include #include #include #include #include #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