#ifndef NET_H
#define NET_H
//Ethernet-заголовок
#define ETH_HEADER_LEN	14//длина заголовка ethernet - 14 байт, начиная с 0 байта данных
#define ETHTYPE_ARP_H_V 0x08// значение первого байта  поля "Тип" - 8
#define ETHTYPE_ARP_L_V 0x06// и значение второго байта поля "Тип"-6 - ARP 
#define ETHTYPE_IP_H_V  0x08// значение первого байта  поля "Тип" - 8
#define ETHTYPE_IP_L_V  0x00//и значение второго байта поля "Тип"-0 - IP 
#define ETH_TYPE_H_P 12//поле "тип" начинается с 12 байта данных
#define ETH_TYPE_L_P 13// второй бит поля "тип" -13 байт данных
#define ETH_DST_MAC 0// поле "мас-адрес получателя" начинается с 0 байта данных
#define ETH_SRC_MAC 6// поле "мас-адрес источника" начинается с 6 байта данных
#define ETH_ARP_OPCODE_REPLY_H_V 0x00// значение старшего байта поля "кода операции" 0 - arp 
#define ETH_ARP_OPCODE_REPLY_L_V 0x02//и значение младшего байта поля "кода операции" 2 - arp - ответ
#define ETHTYPE_ARP_L_V 0x06// значение второго байта поля "Тип"-6 - ARP 
#define ETH_ARP_DST_IP_P 0x26//поле "IP-адрес получателя" начинается с 38 байта
#define ETH_ARP_OPCODE_H_P 0x14//поле "код операции" начинается с 20 байта
#define ETH_ARP_OPCODE_L_P 0x15// 2-й байт поля "код операции" - 21 байт
#define ETH_ARP_SRC_MAC_P 0x16//поле "MAC-адрес источника" начинается с 22 байта
#define ETH_ARP_SRC_IP_P 0x1c//поле "IP-адрес источника" начинается с 28 байта
#define ETH_ARP_DST_MAC_P 0x20//поле "MAC-адрес получателя" начинается с 32 байта
#define ETH_ARP_DST_IP_P 0x26//поле "IP-адрес получателя" начинается с 38 байта
//IP-заголовок
#define IP_HEADER_LEN	20
#define IP_SRC_P 0x1a//ip-адрес источника начинается с 26-го байта данных 
#define IP_DST_P 0x1e//ip-адрес получателя начинается с  30-го байта данных
#define IP_HEADER_LEN_VER_P 0xe
#define IP_CHECKSUM_P 0x18//поле "контрольная сумма" начинается с   24-го байта данных
#define IP_TTL_P 0x16//22-й бит данных
#define IP_FLAGS_P 0x14// поле "флаги" начинается с 20-го байта данных
#define IP_P 0xe
#define IP_TOTLEN_H_P 0x10//поле "общая длина" начинается с 16-го байта данных
#define IP_TOTLEN_L_P 0x11//поле "общая длина" - 17-й байт данных
#define IP_PROTO_P 0x17  //поле "протокол" начинается с   23-го байта данных
#define IP_PROTO_ICMP_V 1//  значение поля "протокол" равно 1 - icmp протокол
#define IP_PROTO_TCP_V 6//  значение поля "протокол" равно 6 - tcp протокол
#define IP_PROTO_UDP_V 17//  значение поля "протокол" равно 17 - udp протокол
//ICMP-заголовок
#define ICMP_TYPE_ECHOREPLY_V 0//значение поля "тип" равно 0 - пинг-ответ
#define ICMP_TYPE_ECHOREQUEST_V 8//значение поля "тип" равно 8 - пинг-запрос
#define ICMP_TYPE_P 0x22// поле "тип" начинается с 34 байта данных
#define ICMP_CHECKSUM_P 0x24//поле "контрольная сумма" начинается с 36 байта данных
//UDP-заголовок
#define UDP_HEADER_LEN	8//Длина заголовка UDP равна 8 байтам
#define UDP_SRC_PORT_H_P 0x22 //Старший байт порта источника- 34 байт данных
#define UDP_SRC_PORT_L_P 0x23 //Младший байт порта источника- 35 байт данных
#define UDP_DST_PORT_H_P 0x24 //Старший байт порта получателя - 36 байт данных
#define UDP_DST_PORT_L_P 0x25 //Младший байт порта источника - 37 байт данных
#define UDP_LEN_H_P 0x26 // Старший байт поля "длина дейтаграммы"-38 байт данных
#define UDP_LEN_L_P 0x27 // Младший байт поля "длина дейтаграммы"-39 байт данных
#define UDP_CHECKSUM_H_P 0x28 // Старший байт поля "контрольная сумма" - 40 байт данных
#define UDP_CHECKSUM_L_P 0x29 // Младший байт поля "контрольная сумма" - 41 байт данных
#define UDP_DATA_P 0x2a // Данные начинаются с 42 байта данных
#endif
