Example #1
0
static unsigned int
tcpoptstrip_tg4(struct sk_buff *skb, const struct net_device *in,
		const struct net_device *out, unsigned int hooknum,
		const struct xt_target *target, const void *targinfo)
{
	return tcpoptstrip_mangle_packet(skb, targinfo, ip_hdrlen(skb),
	       sizeof(struct iphdr) + sizeof(struct tcphdr));
}
static unsigned int
tcpoptstrip_tg6(struct sk_buff *skb, const struct xt_action_param *par)
{
	struct ipv6hdr *ipv6h = ipv6_hdr(skb);
	int tcphoff;
	u_int8_t nexthdr;

	nexthdr = ipv6h->nexthdr;
	tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr);
	if (tcphoff < 0)
		return NF_DROP;

	return tcpoptstrip_mangle_packet(skb, par->targinfo, tcphoff,
	       sizeof(*ipv6h) + sizeof(struct tcphdr));
}
Example #3
0
static unsigned int
tcpoptstrip_tg6(struct sk_buff *skb, const struct net_device *in,
		const struct net_device *out, unsigned int hooknum,
		const struct xt_target *target, const void *targinfo)
{
	struct ipv6hdr *ipv6h = ipv6_hdr(skb);
	unsigned int tcphoff;
	u_int8_t nexthdr;

	nexthdr = ipv6h->nexthdr;
	tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr);
	if (tcphoff < 0)
		return NF_DROP;

	return tcpoptstrip_mangle_packet(skb, targinfo, tcphoff,
	       sizeof(*ipv6h) + sizeof(struct tcphdr));
}
static unsigned int
tcpoptstrip_tg4(struct sk_buff *skb, const struct xt_action_param *par)
{
	return tcpoptstrip_mangle_packet(skb, par->targinfo, ip_hdrlen(skb),
	       sizeof(struct iphdr) + sizeof(struct tcphdr));
}