内核版本2.6.18.1
我现在想做的是,对通信的数据自动进行加密,解密,实现对应用层透明。
于是,我在net/socket.c中的sys_socketcall(),增加语句
mycipher_test("aes",0,(char *)a1,key);
printk("now in sys_socketcall sys_XXX,result=\n",);
说明:
mycipher_test("aes",0,(char *)a1,key);是加密函数,目前出于测试,mycipher_test只有语句printk("in cipher\n");
case SYS_SEND:
mycipher_test("aes",0,(char *)a1,key);
printk("now in sys_socketcall sys_send,result=\n");
err = sys_send(a0, (void __user *)a1, a[2], a[3]);
break;
case SYS_SENDTO:
mycipher_test("aes",0,(char *)a1,key);
printk("now in sys_socketcall sys_sendto,result=\n");
err = sys_sendto(a0,(void __user *)a1, a[2], a[3],
(struct sockaddr __user *)a[4], a[5]);
break;
case SYS_RECV:
mycipher_test("aes",0,(char *)a1,key);
printk("now in sys_socketcall sys_recv,result=\n");
err = sys_recv(a0, (void __user *)a1, a[2], a[3]);
break;
case SYS_RECVFROM:
mycipher_test("aes",0,(char *)a1,key);
printk("now in sys_socketcall sys_recvfrom,result=\n",);
err = sys_recvfrom(a0, (void __user *)a1, a[2], a[3],
(struct sockaddr __user *)a[4], (int __user *)a[5]);
break;
添加语句完成后,我编译内核,启动新内核,启动过程中就输出很多很多的下列语句
in cipher
now in sys_socketcall sys_recv,result=
in cipher
now in sys_socketcall sys_recv,result=
in cipher
now in sys_socketcall sys_recv,result=
in cipher
now in sys_socketcall sys_recv,result=
启动完成后,进入到终端,使用命令#dmesg ,输出的也全部是这些语句。
我现在有很多疑问:
1. 内核启动过程中,要调用sys_socketcall()?我查过内核启动的资料,有sock_init()初始化函数,不太懂。
2. 内核启动过程中和启动后,为什么一直在调用sys_socketcall()?