Subject: Re: Socket owner problem?

From: Stephen Hemminger <[email-masked]>
Date: Tue, 11 Sep 2007 14:13:22 +0200

On Tue, 11 Sep 2007 15:45:29 +0800
"Alvin Valera" <[email-masked]> wrote:

> I am currently writing a kernel module that will apply some delay to
> incoming packets. The module is implemented using netfilter hooked
> into the NF_IP_LOCAL_IN. Once the module receives a packet of interest
> from the lower layer, it will queue the packet (in it's own queue) and
> associate a kernel timer. Once the kernel timer expires, the packet is
> then propagated up the higher layer.

Can be done already with netem and ifb already.

Netfilter is intended for only yes/no decisions, not time alteration.

> The problem happens like this:
> Once the socket is closed by the user-space application, there are
> still packets left in the module's queue. Now, the moment the kernel
> timer expires and the module propagates those packets up into the
> higher layer, the system hangs.
> 
> I've been searching for ways to determine if associated socket is
> closed. This way, if my module knows that the user-space already
> closed the socket, it will not propagate the packet up. Does anyone
> have a solution for this problem?
> 
> Thanks!

Please put networking discussions on [email-masked]