summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2012-05-14 13:14:14 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2012-08-06 14:49:55 +0200
commitf40eabb01163f383e2471942da45f32361031e39 (patch)
tree1a27a16cac2e83bb6fada0db0a8e0deb1b68f5ac /include
parenta0c885ae5a79457aa592cb70c27a7dee619762a4 (diff)
add pkt_buff and protocol helper functions
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
-rw-r--r--include/libnetfilter_queue/Makefile.am7
-rw-r--r--include/libnetfilter_queue/libnetfilter_queue_ipv4.h12
-rw-r--r--include/libnetfilter_queue/libnetfilter_queue_ipv6.h11
-rw-r--r--include/libnetfilter_queue/libnetfilter_queue_tcp.h18
-rw-r--r--include/libnetfilter_queue/libnetfilter_queue_udp.h15
-rw-r--r--include/libnetfilter_queue/pktbuff.h22
6 files changed, 84 insertions, 1 deletions
diff --git a/include/libnetfilter_queue/Makefile.am b/include/libnetfilter_queue/Makefile.am
index 1a92fc6..902fbf9 100644
--- a/include/libnetfilter_queue/Makefile.am
+++ b/include/libnetfilter_queue/Makefile.am
@@ -1,2 +1,7 @@
pkginclude_HEADERS = libnetfilter_queue.h \
- linux_nfnetlink_queue.h
+ linux_nfnetlink_queue.h \
+ libnetfilter_queue_ipv4.h \
+ libnetfilter_queue_ipv6.h \
+ libnetfilter_queue_tcp.h \
+ libnetfilter_queue_udp.h \
+ pktbuff.h
diff --git a/include/libnetfilter_queue/libnetfilter_queue_ipv4.h b/include/libnetfilter_queue/libnetfilter_queue_ipv4.h
new file mode 100644
index 0000000..d18924e
--- /dev/null
+++ b/include/libnetfilter_queue/libnetfilter_queue_ipv4.h
@@ -0,0 +1,12 @@
+#ifndef _LIBNFQUEUE_IPV4_
+#define _LIBNFQUEUE_IPV4_
+
+struct pkt_buff;
+struct iphdr;
+
+struct iphdr *nfq_ip_get_hdr(struct pkt_buff *pktb);
+int nfq_ip_set_transport_header(struct pkt_buff *pktb, struct iphdr *iph);
+void nfq_ip_set_checksum(struct iphdr *iph);
+int nfq_ip_snprintf(char *buf, size_t size, const struct iphdr *iph);
+
+#endif
diff --git a/include/libnetfilter_queue/libnetfilter_queue_ipv6.h b/include/libnetfilter_queue/libnetfilter_queue_ipv6.h
new file mode 100644
index 0000000..36835e2
--- /dev/null
+++ b/include/libnetfilter_queue/libnetfilter_queue_ipv6.h
@@ -0,0 +1,11 @@
+#ifndef _LIBNFQUEUE_H_
+#define _LIBNFQUEUE_H_
+
+struct pkt_buff;
+struct ip6_hdr;
+
+struct ip6_hdr *nfq_ip6_get_hdr(struct pkt_buff *pktb);
+int nfq_ip6_set_transport_header(struct pkt_buff *pktb, struct ip6_hdr *iph, uint8_t target);
+int nfq_ip6hdr_snprintf(char *buf, size_t size, const struct ip6_hdr *ip6h);
+
+#endif
diff --git a/include/libnetfilter_queue/libnetfilter_queue_tcp.h b/include/libnetfilter_queue/libnetfilter_queue_tcp.h
new file mode 100644
index 0000000..cc965f5
--- /dev/null
+++ b/include/libnetfilter_queue/libnetfilter_queue_tcp.h
@@ -0,0 +1,18 @@
+#ifndef _LIBNFQUEUE_TCP_H_
+#define _LIBNFQUEUE_TCP_H_
+
+struct pkt_buff;
+
+struct tcphdr *nfq_tcp_get_hdr(struct pkt_buff *pktb);
+void *nfq_tcp_get_payload(struct tcphdr *tcph, struct pkt_buff *pktb);
+unsigned int nfq_tcp_get_payload_len(struct tcphdr *tcph, struct pkt_buff *pktb);
+
+struct iphdr;
+struct ip6_hdr;
+
+void nfq_tcp_compute_checksum_ipv4(struct tcphdr *tcph, struct iphdr *iph);
+void nfq_tcp_compute_checksum_ipv6(struct tcphdr *tcph, struct ip6_hdr *ip6h);
+
+int nfq_tcp_snprintf(char *buf, size_t size, const struct tcphdr *tcp);
+
+#endif
diff --git a/include/libnetfilter_queue/libnetfilter_queue_udp.h b/include/libnetfilter_queue/libnetfilter_queue_udp.h
new file mode 100644
index 0000000..e1aeb73
--- /dev/null
+++ b/include/libnetfilter_queue/libnetfilter_queue_udp.h
@@ -0,0 +1,15 @@
+#ifndef _LIBNFQUEUE_UDP_H_
+#define _LIBNFQUEUE_UDP_H_
+
+struct pkt_buff;
+
+struct udphdr *nfq_udp_get_hdr(struct pkt_buff *pktb);
+void *nfq_udp_get_payload(struct udphdr *udph, struct pkt_buff *pktb);
+unsigned int nfq_udp_get_payload_len(struct udphdr *udph, struct pkt_buff *pktb);
+
+void nfq_udp_compute_checksum_ipv4(struct udphdr *udph, struct iphdr *iph);
+void nfq_udp_compute_checksum_ipv6(struct udphdr *udph, struct ip6_hdr *ip6h);
+
+int nfq_udp_snprintf(char *buf, size_t size, const struct udphdr *udp);
+
+#endif
diff --git a/include/libnetfilter_queue/pktbuff.h b/include/libnetfilter_queue/pktbuff.h
new file mode 100644
index 0000000..a0e7abf
--- /dev/null
+++ b/include/libnetfilter_queue/pktbuff.h
@@ -0,0 +1,22 @@
+#ifndef _PKTBUFF_H_
+#define _PKTBUFF_H_
+
+struct pkt_buff;
+
+struct pkt_buff *pktb_alloc(int family, void *data, size_t len, size_t extra);
+void pktb_free(struct pkt_buff *pktb);
+
+uint8_t *pktb_data(struct pkt_buff *pktb);
+uint32_t pktb_len(struct pkt_buff *pktb);
+
+void pktb_push(struct pkt_buff *pktb, unsigned int len);
+void pktb_pull(struct pkt_buff *pktb, unsigned int len);
+void pktb_put(struct pkt_buff *pktb, unsigned int len);
+void pktb_trim(struct pkt_buff *pktb, unsigned int len);
+unsigned int pktb_tailroom(struct pkt_buff *pktb);
+
+uint8_t *pktb_mac_header(struct pkt_buff *pktb);
+uint8_t *pktb_network_header(struct pkt_buff *pktb);
+uint8_t *pktb_transport_header(struct pkt_buff *pktb);
+
+#endif