Re: problem in adding 2 modules to kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



bunty wrote:

 
Hello,
    I have written 2 modules that i want to be loaded each time kernel has been loaded. I add them in kernel directory of kernel source but i am getting following error
deny2.o(.text+0x50): In function `init_module':
: multiple definition of `init_module'
deny1.o(.text+0x190): first defined here
ld: Warning: size of symbol `init_module' changed from 110 to 57 in deny2.o
deny2.o(.text+0x90): In function `cleanup_module':
: multiple definition of `cleanup_module'
deny1.o(.text+0x200): first defined here
ld: Warning: size of symbol `cleanup_module' changed from 29 to 17 in deny2.o
make[2]: *** [kernel.o] Error 1
make[2]: Leaving directory `/usr/src/linux-2.4.24-module/kernel'
make[1]: *** [first_rule] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.24-module/kernel'
make: *** [_dir_kernel] Error 2

Both kernel modules have following similar calls code

static void __init init(void)
          {
              nfho.hook    = hook_func;
              nfho.hooknum  = NF_IP_POST_ROUTING;
              nfho.pf      = PF_INET;
              nfho.priority = NF_IP_PRI_FIRST;

              nf_register_hook(&nfho);

     
          }

static void __exit fini(void)
          {
              nf_unregister_hook(&nfho);
          }


module_init(init);
module_exit(fini);
MODULE_LICENSE("GPL");


how to solve this error?
regards,
parag.




parag,

Things work fine for me.
I did the following:

<++>parag.c<++>

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/time.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <net/sock.h>

static struct nf_hook_ops nfho;

unsigned int hook_func(unsigned int hooknum,
                       struct sk_buff **skb,
                       const struct net_device *in,
                       const struct net_device *out,
                       int (*okfn)(struct sk_buff *))
{
  return NF_ACCEPT;
}


static void __init init(void)
{
  nfho.hook    = hook_func;
  nfho.hooknum  = NF_IP_POST_ROUTING;
  nfho.pf      = PF_INET;
  nfho.priority = NF_IP_PRI_FIRST;

  nf_register_hook(&nfho);


}

static void __exit fini(void)
{
  nf_unregister_hook(&nfho);
}


module_init(init);
module_exit(fini);
MODULE_LICENSE("GPL");

<--> parag.c <-->

<++> Makefile <++>
TARGET  := parag
WARN    := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
WARN    :=
INCLUDE := -isystem /lib/modules/`uname -r`/build/include

CFLAGS  := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC      := gcc

all: ${TARGET}.o

${TARGET}.o: ${TARGET}.c

.PHONY: clean

clean:
        rm -rf ${TARGET}.o

<--> Makefile <-->



Cheers!


      /|\ /\ ><
TheMatrixTen
-- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux