1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
#ifndef NFTABLES_HEADERS_H
#define NFTABLES_HEADERS_H
#include <netinet/in.h>
#ifndef IPPROTO_UDPLITE
# define IPPROTO_UDPLITE 136
#endif
enum tcp_hdr_flags {
TCP_FLAG_FIN = 0x01,
TCP_FLAG_SYN = 0x02,
TCP_FLAG_RST = 0x04,
TCP_FLAG_PSH = 0x08,
TCP_FLAG_ACK = 0x10,
TCP_FLAG_URG = 0x20,
TCP_FLAG_ECN = 0x40,
TCP_FLAG_CWR = 0x80,
};
struct ip_auth_hdr {
uint8_t nexthdr;
uint8_t hdrlen;
uint16_t reserved;
uint32_t spi;
uint32_t seq_no;
};
struct ip_esp_hdr {
uint32_t spi;
uint32_t seq_no;
};
struct ip_comp_hdr {
uint8_t nexthdr;
uint8_t flags;
uint16_t cpi;
};
#ifndef IPPROTO_DCCP
# define IPPROTO_DCCP 33
#endif
enum dccp_pkt_type {
DCCP_PKT_REQUEST = 0,
DCCP_PKT_RESPONSE,
DCCP_PKT_DATA,
DCCP_PKT_ACK,
DCCP_PKT_DATAACK,
DCCP_PKT_CLOSEREQ,
DCCP_PKT_CLOSE,
DCCP_PKT_RESET,
DCCP_PKT_SYNC,
DCCP_PKT_SYNCACK,
DCCP_PKT_INVALID,
};
struct dccp_hdr {
uint16_t dccph_sport,
dccph_dport;
uint8_t dccph_doff;
uint8_t dccph_ccval:4,
dccph_cscov:4;
uint16_t dccph_checksum;
uint8_t dccph_reserved:3,
dccph_type:4,
dccph_x:1;
uint8_t dccph_seq2;
uint16_t dccph_seq;
};
#ifndef IPPROTO_SCTP
# define IPPROTO_SCTP 132
#endif
struct sctphdr {
uint16_t source;
uint16_t dest;
uint32_t vtag;
uint32_t checksum;
};
struct arp_hdr {
uint16_t htype;
uint16_t ptype;
uint8_t hlen;
uint8_t plen;
uint16_t oper;
uint8_t sha[6];
uint32_t spa;
uint8_t tha[6];
uint32_t tpa;
} __attribute__((__packed__));
struct ipv6hdr {
uint8_t version:4,
priority:4;
uint8_t flow_lbl[3];
uint16_t payload_len;
uint8_t nexthdr;
uint8_t hop_limit;
struct in6_addr saddr;
struct in6_addr daddr;
};
struct vlan_hdr {
uint16_t vlan_id:12,
vlan_cfi:1,
vlan_pcp:3;
uint16_t vlan_type;
};
#ifndef IPPROTO_MH
# define IPPROTO_MH 135
#endif
struct ip6_mh {
uint8_t ip6mh_proto;
uint8_t ip6mh_hdrlen;
uint8_t ip6mh_type;
uint8_t ip6mh_reserved;
uint16_t ip6mh_cksum;
/* Followed by type specific messages */
uint8_t data[0];
};
/* Type 4 Routing header - well known as srh */
struct ip6_rt4 {
uint8_t ip6r4_nxt; /* next header */
uint8_t ip6r4_len; /* length in units of 8 octets */
uint8_t ip6r4_type; /* always zero */
uint8_t ip6r4_segleft; /* segments left */
uint8_t ip6r4_last_entry; /* last entry */
uint8_t ip6r4_flags; /* flags */
uint16_t ip6r4_tag; /* tag */
struct in6_addr ip6r4_segments[0]; /* SID list */
};
/* RFC 3775 */
#define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */
#define IP6_MH_TYPE_HOTI 1 /* HOTI Message */
#define IP6_MH_TYPE_COTI 2 /* COTI Message */
#define IP6_MH_TYPE_HOT 3 /* HOT Message */
#define IP6_MH_TYPE_COT 4 /* COT Message */
#define IP6_MH_TYPE_BU 5 /* Binding Update */
#define IP6_MH_TYPE_BACK 6 /* Binding ACK */
#define IP6_MH_TYPE_BERROR 7 /* Binding Error */
/* RFC 4068 */
#define IP6_MH_TYPE_FBU 8 /* Fast Binding Update */
#define IP6_MH_TYPE_FBACK 9 /* Fast Binding ACK */
#define IP6_MH_TYPE_FNA 10 /* Fast Binding Advertisement */
/* RFC 5096 */
#define IP6_MH_TYPE_EMH 11 /* Experimental Mobility Header */
/* RFC 5142 */
#define IP6_MH_TYPE_HASM 12 /* Home Agent Switch Message */
#endif /* NFTABLES_HEADERS_H */
|