>See the article by Rubini.
>
>http://www.linux-mag.com/2000-12/gear_01.html.
>
i tried to write a kernel module which creates a socket.Binds to a port and listens on that .But the code gives me the following error when i try to insmod it.
error :-95<3>
socket.o: init_module: Operation not permitted
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
You may find more information in syslog or the output from dmesg
following is the code
-----------------------------------------------------------
#include<linux/module.h>
#include<linux/byteorder/generic.h>
#include<linux/kernel.h>
#include<linux/init.h>
#include<linux/sched.h>
#include<linux/timer.h>
#include<linux/slab.h>
#include<linux/list.h>
#include <linux/net.h>
#include <linux/version.h>
#include <linux/smp_lock.h>
#include <net/sock.h>//contains sockaddr_in
#include <linux/config.h>
#define PORT 9090
int time_init(void)
{
int error;
struct socket*sock;
struct sockaddr_in sin;
error=sock_create(PF_INET,SOCK_DGRAM,0,&sock);
if(error<0)
{
printk("\n error while creating socket");
return -1;
}
sin.sin_family=AF_INET;
sin.sin_port=htonl((unsigned short)PORT);
sin.sin_addr.s_addr=INADDR_ANY;
error=sock->ops->bind(sock,(struct sockaddr*)&sin,sizeof(sin));
if(error<0)
{
printk(KERN_ERR"\nCan't bind to port 80");
return -1;
}
error=sock->ops->listen(sock,5);
printk("\n error :%d",error);
if(error<0)
{
printk(KERN_ERR"\n Can't listen ");
return -1;
}
return 0;
}
void time_cleanup(void)
{
printk(KERN_INFO "\nsocket module unloaded\n");
}
module_init(time_init);
module_exit(time_cleanup);
MODULE_LICENSE("GPL");
--------------------------------------------------------
Can anyone suggest what is happening.I think its unable ti listen on that port .But why????????
Regards
vaishali