25 #ifndef PACKET_DEFS_H_ 26 #define PACKET_DEFS_H_ 35 #define ETH_ADDR_LEN 6 37 #define ETH_TYPE_IP 0x0800 38 #define ETH_TYPE_ARP 0x0806 41 uint8_t addr[ETH_ADDR_LEN];
42 } __attribute__ ((packed));
48 } __attribute__ ((packed));
53 #define IPH_V(hdr) ((hdr)->_v_hl >> 4) 54 #define IPH_HL(hdr) ((hdr)->_v_hl & 0x0f) 55 #define IPH_TOS(hdr) ((hdr)->_tos) 56 #define IPH_ECN(hdr) ((hdr)->_tos & 0x3) 58 #define IPH_VHL_SET(hdr, v, hl) (hdr)->_v_hl = (((v) << 4) | (hl)) 59 #define IPH_TOS_SET(hdr, tos) (hdr)->_tos = (tos) 60 #define IPH_ECN_SET(hdr, e) (hdr)->_tos = ((hdr)->_tos & 0xffc) | (e) 65 #define IP_PROTO_ICMP 1 66 #define IP_PROTO_IGMP 2 67 #define IP_PROTO_IPENCAP 4 68 #define IP_PROTO_UDP 17 69 #define IP_PROTO_UDPLITE 136 70 #define IP_PROTO_TCP 6 71 #define IP_PROTO_DCCP 33 73 #define IP_ECN_NONE 0x0 74 #define IP_ECN_ECT0 0x2 75 #define IP_ECN_ECT1 0x1 100 } __attribute__ ((packed));
105 #define ARP_OPER_REQUEST 1 106 #define ARP_OPER_REPLY 2 107 #define ARP_HTYPE_ETHERNET 1 108 #define ARP_PTYPE_IPV4 0x0800 120 } __attribute__((packed));
126 #define TCP_FIN 0x01U 127 #define TCP_SYN 0x02U 128 #define TCP_RST 0x04U 129 #define TCP_PSH 0x08U 130 #define TCP_ACK 0x10U 131 #define TCP_URG 0x20U 132 #define TCP_ECE 0x40U 133 #define TCP_CWR 0x80U 134 #define TCP_NS 0x100U 136 #define TCP_FLAGS 0x1ffU 141 #define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12) 142 #define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS) 144 #define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr)) 145 #define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & PP_HTONS((uint16_t)(~(uint16_t)(TCP_FLAGS)))) | htons(flags)) 146 #define TCPH_HDRLEN_FLAGS_SET(phdr, len, flags) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | (flags)) 148 #define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags)) 149 #define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) ) 151 #define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0)) 154 #define TCP_BUILD_MSS_OPTION(mss) htonl(0x02040000 | ((mss) & 0xFFFF)) 156 #define TCP_BUILD_SACK_OPTION htonl(0x04020101) 163 uint16_t _hdrlen_rsvd_flags;
167 } __attribute__((packed));
169 #define TCP_OPT_END_OF_OPTIONS 0 170 #define TCP_OPT_NO_OP 1 171 #define TCP_OPT_MSS 2 172 #define TCP_OPT_TIMESTAMP 8 177 } __attribute__((packed));
185 } __attribute__((packed));
191 #define OBJ_MAGIC 0xb805 199 } __attribute__((packed));
208 } __attribute__ ((packed));
213 } __attribute__ ((packed));
219 } __attribute__ ((packed));