> First of all: is there a good documentation about using sk_buffers?
> Now my Problem:
> I want to write a little "Firewall". My problem is, how to reply
> to an "echo request" ( I do not want to block them).
> I am getting (struct firewall_ops *this, int pf,
> struct device *dev, void *phdr, void *arg, struct sk_buff **pskb) from
> the function firewall_(forward|input|output)_check.
> I think, this is all I need.
You don't say it, but I assume you are hoking into a input firewall chain.
> I though, I could use the **pskb to reply to the request.
> I looked in net/ipv4/ip_* to learn how to manage the sk_buffers.
> But everytime I want to send the buffer, the computer crashs.
> I used skb->dst->output (skb) (like the functions in ip_output.c)
> or dev_queue_xmit (skb).
On input time the skb carries an input route which points to the local
delivery function. If you call skb->output on input again you'll get an
endless recursion which will quickly fill up the kernel stack and crash
the machine.
> Even when I create a new sk_buffer (allocating mem and so on),
> it did not work. When using skb->dst->output my computer reboots, when
> using dev_queue_xmit nothing happens.
You have to generate a correct header (with ICMP header, correct destination
and source address based on the original packet, payload), then look up the
output route for it (using ip_route_output). See icmp.c for an example. I assume
you want to spoof ICMP echo replies, please be advised that this is generally
a bad idea (and do not even think about doing the same thing for TCP!)
> I do not want to bother you, but could someone give me a litle example
> or send me a url where I can learn more about using sk_buffer?
http://www.uk.linux.org/Documents/buffers.html has a basic introduction, but
for the kind of stuff you seem to want to do you'll need to do RTFS. Perhaps
the SF source will be helpful (http://www.ifi.unizh.ch/ikm/SINUS/firewall.html)
-Andi
-- This is like TV. I don't like TV.- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/