LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Jack Bauer" <mlsubscriber@gmail.com>
To: linux-kernel@vger.kernel.org
Subject: [QUESTION] Kernelspace <-> Userspace communication during tcp stack code execution
Date: Wed, 7 Feb 2007 17:34:20 +0100	[thread overview]
Message-ID: <619420780702070834n6dec9871keb87bf913a2ca5@mail.gmail.com> (raw)

Hi,

I'm a student in computer science and for my master thesis i have to
modify the kernel TCP stack in a way that it allows to perform a
transparent user authentification during the TCP 3-way-handshake (with
the help of a modified firewall which tracks the 3-way-handshake).

As you might imagine I have to alter the syn,synack and ack packets
and fill it with authentification information of the user who
initiated the new TCP connection. These information are stored in
config files on the client/user host (for example a config file which
contains the location of the users certificate). On the firewall host
I also need file access from within a netfilter kernel module and have
to perform other time consuming tasks (for example reading the root
certificate and check the users cert in the syn packet).

As these tasks are typical userspace tasks I want to write a daemon
which does all the file access and certificate work when the kernel
requests it and which than sends the information back to the kernel.

What opportunities do I have to implement a fast Kernel <-> Userspace
Daemon communication?

My first tought was to create a /proc or /dev entry and register file
operation functions for these entries. But the first problem I see is
that the daemon has to read the /proc or /dev file in an endless loop
so that the daemon recognizes (in a fast way) when the kernel pushes
request commands to the /proc or /dev file. The second problem is that
the kernel has to wait for the answer of the daemon before it can
continue and putting the requested information in the syn packet for
example. And what happens if the request method (which got called in
the tcp stack) blocks until the daemon response was read in? I think
the kernel would hang, wouldn't it?

The second tought was to use AF_NETLINK which should solve the first
problem but as the NETLINK readmsg() method also blocks until it
recieved data I don't know if the kernel would also hang.

Do you have any suggestions how to solve this situation?

regards,
Jack

             reply	other threads:[~2007-02-07 16:34 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-07 16:34 Jack Bauer [this message]
2007-02-08 12:14 ` Jan Engelhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=619420780702070834n6dec9871keb87bf913a2ca5@mail.gmail.com \
    --to=mlsubscriber@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --subject='Re: [QUESTION] Kernelspace <-> Userspace communication during tcp stack code execution' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).