Linux Netfilter discussions
 help / color / mirror / Atom feed
From: JC <bikkit@gmail.com>
To: netfilter-devel@lists.netfilter.org, netfilter@lists.netfilter.org
Subject: netfilter hook function error...
Date: Wed, 21 Sep 2005 01:13:43 +0100	[thread overview]
Message-ID: <a60102c3050920171352ae872c@mail.gmail.com> (raw)

my hook function code, called at :

unsigned int in_hook(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
  print_string("Packet reached IN_HOOK.");

  struct iphdr *my_ipheader;
  //u32 this_address;

  if (out)
    {
      if(out->name)
	{
	  print_string("out is: ");
	  print_string(out->name);


	  // compare the out device with the list of rules
	  // TODO: replace by matches_rule()
	  if (strcmp(out->name, "eth1") == 0)
	    {

	      print_string("packet matches rule");


	      if(skb == NULL)
		{
		  return -1;
		}
	
	      my_ipheader = skb->nh->iph;
	      print_string("printk-ing saddr...");
	      //this_address = *my_ipheader->saddr;
	      //printk("the ip is : %d.%d.%d.%d\n",NIPQUAD(*my_ipheader->saddr));

	    }
	}
      else
	{
	  print_string("out is null");
	}
    }


  return NF_QUEUE;           /* Drop ALL packets */
}


line 150 is 	      my_ipheader = skb->nh->iph;

on compile, I get this error:

[root@whatever spider]# make -C /usr/src/kernels/`uname -r`-i686
SUBDIRS=$PWD modules
make: Entering directory `/usr/src/kernels/2.6.12-1.1447_FC4-i686'
  CC [M]  /home/jc/code/spider/spider.o
/home/jc/code/spider/spider.c: In function 'in_hook':
/home/jc/code/spider/spider.c:126: warning: ISO C90 forbids mixed
declarations and code
/home/jc/code/spider/spider.c:134: warning: passing argument 1 of
'print_string' discards qualifiers from pointer target type
/home/jc/code/spider/spider.c:150: error: request for member 'nh' in
something not a structure or union


I've seen that statement being made more than a number of times, so
what am I doing wrong??

I need to change the saddr (source address) in that if to another one
(basicly, NATing it). How will I commit that change to the skb and
then send it back into the stack?

thanx in advance...

John


             reply	other threads:[~2005-09-21  0:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-21  0:13 JC [this message]
2005-09-21  1:14 ` netfilter hook function error JC
2005-09-21  5:51 ` Patrick Schaaf
2005-09-21  6:09   ` JC
     [not found] <4330b900.50a87b17.7179.ffffad17SMTPIN_ADDED@mx.gmail.com>
2005-09-21  1:49 ` JC

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=a60102c3050920171352ae872c@mail.gmail.com \
    --to=bikkit@gmail.com \
    --cc=netfilter-devel@lists.netfilter.org \
    --cc=netfilter@lists.netfilter.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox