|
Packit |
c5a612 |
#ifndef NFTABLES_HEADERS_H
|
|
Packit |
c5a612 |
#define NFTABLES_HEADERS_H
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#ifndef IPPROTO_UDPLITE
|
|
Packit |
c5a612 |
# define IPPROTO_UDPLITE 136
|
|
Packit |
c5a612 |
#endif
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
enum tcp_hdr_flags {
|
|
Packit |
c5a612 |
TCP_FLAG_FIN = 0x01,
|
|
Packit |
c5a612 |
TCP_FLAG_SYN = 0x02,
|
|
Packit |
c5a612 |
TCP_FLAG_RST = 0x04,
|
|
Packit |
c5a612 |
TCP_FLAG_PSH = 0x08,
|
|
Packit |
c5a612 |
TCP_FLAG_ACK = 0x10,
|
|
Packit |
c5a612 |
TCP_FLAG_URG = 0x20,
|
|
Packit |
c5a612 |
TCP_FLAG_ECN = 0x40,
|
|
Packit |
c5a612 |
TCP_FLAG_CWR = 0x80,
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct ip_auth_hdr {
|
|
Packit |
c5a612 |
uint8_t nexthdr;
|
|
Packit |
c5a612 |
uint8_t hdrlen;
|
|
Packit |
c5a612 |
uint16_t reserved;
|
|
Packit |
c5a612 |
uint32_t spi;
|
|
Packit |
c5a612 |
uint32_t seq_no;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct ip_esp_hdr {
|
|
Packit |
c5a612 |
uint32_t spi;
|
|
Packit |
c5a612 |
uint32_t seq_no;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct ip_comp_hdr {
|
|
Packit |
c5a612 |
uint8_t nexthdr;
|
|
Packit |
c5a612 |
uint8_t flags;
|
|
Packit |
c5a612 |
uint16_t cpi;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#ifndef IPPROTO_DCCP
|
|
Packit |
c5a612 |
# define IPPROTO_DCCP 33
|
|
Packit |
c5a612 |
#endif
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
enum dccp_pkt_type {
|
|
Packit |
c5a612 |
DCCP_PKT_REQUEST = 0,
|
|
Packit |
c5a612 |
DCCP_PKT_RESPONSE,
|
|
Packit |
c5a612 |
DCCP_PKT_DATA,
|
|
Packit |
c5a612 |
DCCP_PKT_ACK,
|
|
Packit |
c5a612 |
DCCP_PKT_DATAACK,
|
|
Packit |
c5a612 |
DCCP_PKT_CLOSEREQ,
|
|
Packit |
c5a612 |
DCCP_PKT_CLOSE,
|
|
Packit |
c5a612 |
DCCP_PKT_RESET,
|
|
Packit |
c5a612 |
DCCP_PKT_SYNC,
|
|
Packit |
c5a612 |
DCCP_PKT_SYNCACK,
|
|
Packit |
c5a612 |
DCCP_PKT_INVALID,
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct dccp_hdr {
|
|
Packit |
c5a612 |
uint16_t dccph_sport,
|
|
Packit |
c5a612 |
dccph_dport;
|
|
Packit |
c5a612 |
uint8_t dccph_doff;
|
|
Packit |
c5a612 |
uint8_t dccph_ccval:4,
|
|
Packit |
c5a612 |
dccph_cscov:4;
|
|
Packit |
c5a612 |
uint16_t dccph_checksum;
|
|
Packit |
c5a612 |
uint8_t dccph_reserved:3,
|
|
Packit |
c5a612 |
dccph_type:4,
|
|
Packit |
c5a612 |
dccph_x:1;
|
|
Packit |
c5a612 |
uint8_t dccph_seq2;
|
|
Packit |
c5a612 |
uint16_t dccph_seq;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#ifndef IPPROTO_SCTP
|
|
Packit |
c5a612 |
# define IPPROTO_SCTP 132
|
|
Packit |
c5a612 |
#endif
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct sctphdr {
|
|
Packit |
c5a612 |
uint16_t source;
|
|
Packit |
c5a612 |
uint16_t dest;
|
|
Packit |
c5a612 |
uint32_t vtag;
|
|
Packit |
c5a612 |
uint32_t checksum;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct arp_hdr {
|
|
Packit |
c5a612 |
uint16_t htype;
|
|
Packit |
c5a612 |
uint16_t ptype;
|
|
Packit |
c5a612 |
uint8_t hlen;
|
|
Packit |
c5a612 |
uint8_t plen;
|
|
Packit |
c5a612 |
uint16_t oper;
|
|
Packit |
c5a612 |
uint8_t sha[6];
|
|
Packit |
c5a612 |
uint32_t spa;
|
|
Packit |
c5a612 |
uint8_t tha[6];
|
|
Packit |
c5a612 |
uint32_t tpa;
|
|
Packit |
c5a612 |
} __attribute__((__packed__));
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct ipv6hdr {
|
|
Packit |
c5a612 |
uint8_t version:4,
|
|
Packit |
c5a612 |
priority:4;
|
|
Packit |
c5a612 |
uint8_t flow_lbl[3];
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
uint16_t payload_len;
|
|
Packit |
c5a612 |
uint8_t nexthdr;
|
|
Packit |
c5a612 |
uint8_t hop_limit;
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct in6_addr saddr;
|
|
Packit |
c5a612 |
struct in6_addr daddr;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct vlan_hdr {
|
|
Packit |
c5a612 |
uint16_t vlan_id:12,
|
|
Packit |
c5a612 |
vlan_cfi:1,
|
|
Packit |
c5a612 |
vlan_pcp:3;
|
|
Packit |
c5a612 |
uint16_t vlan_type;
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#ifndef IPPROTO_MH
|
|
Packit |
c5a612 |
# define IPPROTO_MH 135
|
|
Packit |
c5a612 |
#endif
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
struct ip6_mh {
|
|
Packit |
c5a612 |
uint8_t ip6mh_proto;
|
|
Packit |
c5a612 |
uint8_t ip6mh_hdrlen;
|
|
Packit |
c5a612 |
uint8_t ip6mh_type;
|
|
Packit |
c5a612 |
uint8_t ip6mh_reserved;
|
|
Packit |
c5a612 |
uint16_t ip6mh_cksum;
|
|
Packit |
c5a612 |
/* Followed by type specific messages */
|
|
Packit |
c5a612 |
uint8_t data[0];
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
/* Type 4 Routing header - well known as srh */
|
|
Packit |
c5a612 |
struct ip6_rt4 {
|
|
Packit |
c5a612 |
uint8_t ip6r4_nxt; /* next header */
|
|
Packit |
c5a612 |
uint8_t ip6r4_len; /* length in units of 8 octets */
|
|
Packit |
c5a612 |
uint8_t ip6r4_type; /* always zero */
|
|
Packit |
c5a612 |
uint8_t ip6r4_segleft; /* segments left */
|
|
Packit |
c5a612 |
uint8_t ip6r4_last_entry; /* last entry */
|
|
Packit |
c5a612 |
uint8_t ip6r4_flags; /* flags */
|
|
Packit |
c5a612 |
uint16_t ip6r4_tag; /* tag */
|
|
Packit |
c5a612 |
struct in6_addr ip6r4_segments[0]; /* SID list */
|
|
Packit |
c5a612 |
};
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
/* RFC 3775 */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_HOTI 1 /* HOTI Message */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_COTI 2 /* COTI Message */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_HOT 3 /* HOT Message */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_COT 4 /* COT Message */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_BU 5 /* Binding Update */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_BACK 6 /* Binding ACK */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_BERROR 7 /* Binding Error */
|
|
Packit |
c5a612 |
/* RFC 4068 */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_FBU 8 /* Fast Binding Update */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_FBACK 9 /* Fast Binding ACK */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_FNA 10 /* Fast Binding Advertisement */
|
|
Packit |
c5a612 |
/* RFC 5096 */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_EMH 11 /* Experimental Mobility Header */
|
|
Packit |
c5a612 |
/* RFC 5142 */
|
|
Packit |
c5a612 |
#define IP6_MH_TYPE_HASM 12 /* Home Agent Switch Message */
|
|
Packit |
c5a612 |
|
|
Packit |
c5a612 |
#endif /* NFTABLES_HEADERS_H */
|