From ffa83b5968b534f679bc34acc506801db3d28d58 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 31 May 2012 10:52:46 +0200 Subject: add mangle functions for IPv4/TCP and IPv4/UDP Signed-off-by: Pablo Neira Ayuso --- src/extra/udp.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/extra/udp.c') diff --git a/src/extra/udp.c b/src/extra/udp.c index c0b1b7d..5f7f9ec 100644 --- a/src/extra/udp.c +++ b/src/extra/udp.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include @@ -17,6 +18,7 @@ #include #include +#include #include #include "internal.h" @@ -112,6 +114,27 @@ nfq_udp_compute_checksum_ipv6(struct udphdr *udph, struct ip6_hdr *ip6h) } EXPORT_SYMBOL(nfq_udp_compute_checksum_ipv6); +int +nfq_udp_mangle_ipv4(struct pkt_buff *pkt, + unsigned int match_offset, unsigned int match_len, + const char *rep_buffer, unsigned int rep_len) +{ + struct iphdr *iph; + struct udphdr *udph; + + iph = (struct iphdr *)pkt->network_header; + udph = (struct udphdr *)(pkt->network_header + iph->ihl*4); + + if (!nfq_ip_mangle(pkt, iph->ihl*4 + sizeof(struct udphdr), + match_offset, match_len, rep_buffer, rep_len)) + return 0; + + nfq_udp_compute_checksum_ipv4(udph, iph); + + return 1; +} +EXPORT_SYMBOL(nfq_udp_mangle_ipv4); + /** * nfq_pkt_snprintf_udp_hdr - print udp header into one buffer in a humnan * readable way -- cgit v1.2.3