mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
this code is from kernel bpf selftests xdp synproxy, removed the tc part for simplicity, shows an exmaple of using libxdp to attach xdp synproxy program on network interface. if port is not in allowed ports, the packet will be dropped by xdp synproxy by default, this would break tcp connections to ports that user does not want to do synproxy, change the default to allow connection pass through. Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
148 lines
2.8 KiB
C
148 lines
2.8 KiB
C
#ifndef __VMLINUX_NET_H__
|
|
#define __VMLINUX_NET_H__
|
|
|
|
typedef __u32 __wsum;
|
|
|
|
typedef unsigned int sk_buff_data_t; // Assumes 64-bit. FIXME see below
|
|
/*
|
|
// BITS_PER_LONG can be wrong with -target bpf
|
|
#if BITS_PER_LONG > 32
|
|
#define NET_SKBUFF_DATA_USES_OFFSET 1
|
|
#endif
|
|
|
|
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
|
typedef unsigned int sk_buff_data_t;
|
|
#else
|
|
typedef unsigned char *sk_buff_data_t;
|
|
#endif
|
|
*/
|
|
|
|
struct sk_buff {
|
|
union {
|
|
struct {
|
|
struct sk_buff *next;
|
|
struct sk_buff *prev;
|
|
union {
|
|
struct net_device *dev;
|
|
long unsigned int dev_scratch;
|
|
};
|
|
};
|
|
struct rb_node rbnode;
|
|
struct list_head list;
|
|
};
|
|
union {
|
|
struct sock *sk;
|
|
int ip_defrag_offset;
|
|
};
|
|
union {
|
|
ktime_t tstamp;
|
|
u64 skb_mstamp_ns;
|
|
};
|
|
char cb[48];
|
|
union {
|
|
struct {
|
|
long unsigned int _skb_refdst;
|
|
void (*destructor)(struct sk_buff *);
|
|
};
|
|
struct list_head tcp_tsorted_anchor;
|
|
};
|
|
long unsigned int _nfct;
|
|
unsigned int len;
|
|
unsigned int data_len;
|
|
__u16 mac_len;
|
|
__u16 hdr_len;
|
|
__u16 queue_mapping;
|
|
__u8 __cloned_offset[0];
|
|
__u8 cloned: 1;
|
|
__u8 nohdr: 1;
|
|
__u8 fclone: 2;
|
|
__u8 peeked: 1;
|
|
__u8 head_frag: 1;
|
|
__u8 pfmemalloc: 1;
|
|
__u8 active_extensions;
|
|
__u32 headers_start[0];
|
|
__u8 __pkt_type_offset[0];
|
|
__u8 pkt_type: 3;
|
|
__u8 ignore_df: 1;
|
|
__u8 nf_trace: 1;
|
|
__u8 ip_summed: 2;
|
|
__u8 ooo_okay: 1;
|
|
__u8 l4_hash: 1;
|
|
__u8 sw_hash: 1;
|
|
__u8 wifi_acked_valid: 1;
|
|
__u8 wifi_acked: 1;
|
|
__u8 no_fcs: 1;
|
|
__u8 encapsulation: 1;
|
|
__u8 encap_hdr_csum: 1;
|
|
__u8 csum_valid: 1;
|
|
__u8 __pkt_vlan_present_offset[0];
|
|
__u8 vlan_present: 1;
|
|
__u8 csum_complete_sw: 1;
|
|
__u8 csum_level: 2;
|
|
__u8 csum_not_inet: 1;
|
|
__u8 dst_pending_confirm: 1;
|
|
__u8 ndisc_nodetype: 2;
|
|
__u8 ipvs_property: 1;
|
|
__u8 inner_protocol_type: 1;
|
|
__u8 remcsum_offload: 1;
|
|
__u8 offload_fwd_mark: 1;
|
|
__u8 offload_l3_fwd_mark: 1;
|
|
__u8 tc_skip_classify: 1;
|
|
__u8 tc_at_ingress: 1;
|
|
__u8 redirected: 1;
|
|
__u8 from_ingress: 1;
|
|
__u8 decrypted: 1;
|
|
__u16 tc_index;
|
|
union {
|
|
__wsum csum;
|
|
struct {
|
|
__u16 csum_start;
|
|
__u16 csum_offset;
|
|
};
|
|
};
|
|
__u32 priority;
|
|
int skb_iif;
|
|
__u32 hash;
|
|
__be16 vlan_proto;
|
|
__u16 vlan_tci;
|
|
union {
|
|
unsigned int napi_id;
|
|
unsigned int sender_cpu;
|
|
};
|
|
__u32 secmark;
|
|
union {
|
|
__u32 mark;
|
|
__u32 reserved_tailroom;
|
|
};
|
|
union {
|
|
__be16 inner_protocol;
|
|
__u8 inner_ipproto;
|
|
};
|
|
__u16 inner_transport_header;
|
|
__u16 inner_network_header;
|
|
__u16 inner_mac_header;
|
|
__be16 protocol;
|
|
__u16 transport_header;
|
|
__u16 network_header;
|
|
__u16 mac_header;
|
|
__u32 headers_end[0];
|
|
sk_buff_data_t tail;
|
|
sk_buff_data_t end;
|
|
unsigned char *head;
|
|
unsigned char *data;
|
|
unsigned int truesize;
|
|
refcount_t users;
|
|
struct skb_ext *extensions;
|
|
};
|
|
|
|
struct nf_conn {
|
|
unsigned long status;
|
|
};
|
|
|
|
enum ip_conntrack_status {
|
|
/* Connection is confirmed: originating packet has left box */
|
|
IPS_CONFIRMED_BIT = 3,
|
|
};
|
|
|
|
#endif /* __VMLINUX_NET_H__ */
|