Mod aaa-12 描述:修改netlink内核模块,到处外部符号给其他模块使用

RCA:
SOL:
修改人:xusaiqun
检视人:xusaiqun

Signed-off-by: xusaiqun <xusaiqun@cmhi.chinamobile.com>
This commit is contained in:
xusaiqun 2019-06-12 23:55:31 -07:00
parent 05d068d2ad
commit f1a46d9af9
9 changed files with 109 additions and 72 deletions

View File

@ -2,13 +2,15 @@
export HUACHENG_LINUX_KERNEL
DEFINES :=
INCLUDE := -I../lib -I../../../Common
INCLUDE := -I../../../Common -I../../common
LIB :=
obj-m :=cfgrcv.o
cfgrcv-objs := cfgrcv_kinit.o ../netlink_api/libnetlink_k.o
cfgrcv-objs := cfgrcv_kinit.o
#KERNEL :=$(HUACHENG_LINUX_KERNEL)
KERNEL :=/usr/src/linux
KBUILD_EXTRA_SYMBOLS += ../netlink_api/Module.symvers
export KBUILD_EXTRA_SYMBOLS
PWD :=$(shell pwd)
modules :
echo $HUACHENG_LINUX_KERNEL

View File

@ -1,28 +0,0 @@
#include <linux/module.h>
#include <linux/vermagic.h>
#include <linux/compiler.h>
MODULE_INFO(vermagic, VERMAGIC_STRING);
MODULE_INFO(name, KBUILD_MODNAME);
__visible struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
#ifdef RETPOLINE
MODULE_INFO(retpoline, "Y");
#endif
static const char __module_depends[]
__used
__attribute__((section(".modinfo"))) =
"depends=";
MODULE_INFO(srcversion, "1A92196CEBDAFD5950E8BDF");

View File

@ -0,0 +1,19 @@
#Makefile 2.6
export HUACHENG_LINUX_KERNEL
DEFINES :=
INCLUDE := -I../../../Common -I../../common
LIB :=
obj-m :=netlink.o
netlink-objs := libnetlink_k.o
#KERNEL :=$(HUACHENG_LINUX_KERNEL)
KERNEL :=/usr/src/linux
PWD :=$(shell pwd)
modules :
echo $HUACHENG_LINUX_KERNEL
$(MAKE) $(INCLUDE) -C $(KERNEL) M=$(PWD) modules
.PHONEY:clean
clean :
rm -rf *.o *.mod.c *.ko *.symvers *.order *.makers .*.cmd *.cmd .tmp_versions .cache.mk

View File

@ -15,6 +15,8 @@ struct commnl_msgtype_process cfgnl_msg_handlers[COMMCFG_NLMSG_MAX_TYPE];
void printk_mem(unsigned char * p,int len)
{
int num = 0;
@ -285,5 +287,35 @@ int commnl_unicast(struct sock *sk, struct sk_buff *skb, u32 portid)
return err;
}
EXPORT_SYMBOL(pdeliv_msgtype_register);
EXPORT_SYMBOL(cfg_msgtype_register);
EXPORT_SYMBOL(cfg_msgtype_unregister);
EXPORT_SYMBOL(pdeliv_msgtype_unregister);
EXPORT_SYMBOL(libnetlinkk_init_byproto);
EXPORT_SYMBOL(libnetlinkk_exit);
EXPORT_SYMBOL(commnl_unicast);
EXPORT_SYMBOL(printk_mem);
EXPORT_SYMBOL(printk_ipaddress);
int __init libnetlink_k_init(void)
{
printk(KERN_INFO "insmod netlink.ko...\n");
return 0;
};
void __exit libnetlink_k_exit(void)
{
printk(KERN_INFO "rmmod netlink.ko...\n");
return;
};
module_init(libnetlink_k_init);
module_exit(libnetlink_k_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("a common channel,made netlink protocal family");
MODULE_AUTHOR("RSLjdkt");

View File

@ -21,6 +21,7 @@ struct netlinkk_cfg
//struct upmnl_link *upmnl_msg_handlers[UPMNL_FAMILY_MAX + 1];
unsigned int pkt_delev_num;/*上送的包数量*/
};
typedef int (*commnl_doit_func)(struct sk_buff *, struct nlmsghdr *);
@ -37,11 +38,11 @@ struct commnl_msgtype_process
void printk_mem(unsigned char * p,int len);
void printk_ipaddress(unsigned int address);
extern void printk_mem(unsigned char * p,int len);
extern void printk_ipaddress(unsigned int address);
int pdeliv_msgtype_register( int msgtype,commnl_doit_func doit,
extern int pdeliv_msgtype_register( int msgtype,commnl_doit_func doit,
commnl_dumpit_func dumpit,commnl_calcit_func calcit);
/****************************************************************/
@ -53,11 +54,11 @@ int pdeliv_msgtype_register( int msgtype,commnl_doit_func doit,
/*输出参数: WU */
/*返回值0注册成功< 0,失败 */
/****************************************************************/
int cfg_msgtype_register( int msgtype,commnl_doit_func doit,
extern int cfg_msgtype_register( int msgtype,commnl_doit_func doit,
commnl_dumpit_func dumpit,commnl_calcit_func calcit);
int cfg_msgtype_unregister(int msgtype);
int pdeliv_msgtype_unregister(int msgtype);
extern int cfg_msgtype_unregister(int msgtype);
extern int pdeliv_msgtype_unregister(int msgtype);
/****************************************************************/
@ -67,11 +68,11 @@ int pdeliv_msgtype_unregister(int msgtype);
/*输出参数: struct upmnl_handle * upmh ,存放创建的通道相关信息。*/
/*返回值0通道创建成果< 0,失败 */
/****************************************************************/
int libnetlinkk_init_byproto(struct netlinkk_cfg *g_nlcfg);
extern int libnetlinkk_init_byproto(struct netlinkk_cfg *g_nlcfg);
void libnetlinkk_exit(struct netlinkk_cfg *g_nlcfg);
extern void libnetlinkk_exit(struct netlinkk_cfg *g_nlcfg);
int commnl_unicast(struct sock *sk, struct sk_buff *skb, u32 portid);
extern int commnl_unicast(struct sock *sk, struct sk_buff *skb, u32 portid);

View File

@ -2,17 +2,19 @@
export HUACHENG_LINUX_KERNEL
DEFINES :=
INCLUDE := -I../lib -I../../../Common
INCLUDE := -I../../../Common -I../../common
LIB :=
obj-m :=pdeliv.o
pdeliv-objs := pdeliverynl_kinit.o ../netlink_api/libnetlink_k.o
pdeliv-objs := pdeliverynl_kinit.o
#KERNEL :=$(HUACHENG_LINUX_KERNEL)
KERNEL :=/usr/src/linux
KBUILD_EXTRA_SYMBOLS += ../netlink_api/Module.symvers
export KBUILD_EXTRA_SYMBOLS
PWD :=$(shell pwd)
modules :
$(MAKE) -C $(KERNEL) M=$(PWD) modules
echo $HUACHENG_LINUX_KERNEL
$(MAKE) $(INCLUDE) -C $(KERNEL) M=$(PWD) modules
.PHONEY:clean
clean :
rm -rf *.o *.mod.c *.ko *.symvers *.order *.makers .*.cmd *.cmd .tmp_versions .cache.mk

View File

@ -131,7 +131,7 @@ unsigned int pdelivery_hook_func(void *priv,
}
g_nlcfg.pkt_delev_num ++;
printk(KERN_INFO "pdelivery_hook_func() end.\n");
printk(KERN_INFO "pdelivery_hook_func() end,pkt_delev_num =%u.\n",g_nlcfg.pkt_delev_num);
return NF_ACCEPT;/*must return a value*/
failure:

View File

@ -1,28 +0,0 @@
#include <linux/module.h>
#include <linux/vermagic.h>
#include <linux/compiler.h>
MODULE_INFO(vermagic, VERMAGIC_STRING);
MODULE_INFO(name, KBUILD_MODNAME);
__visible struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
#ifdef RETPOLINE
MODULE_INFO(retpoline, "Y");
#endif
static const char __module_depends[]
__used
__attribute__((section(".modinfo"))) =
"depends=";
MODULE_INFO(srcversion, "AFBB76601AC352A20DE7026");

View File

@ -0,0 +1,37 @@
#!/bin/sh
echo '---------build kernel_ko:-------'
cd ../../modules/cfgrcv
echo 'clean cfgrcv..'
make clean
make
echo 'build cfgrcv.ko sucess!'
echo '---------------------------'
echo 'clean pdelivery..'
cd ../../modules/pdelivery
make clean
make
echo 'build pdeliv.ko sucess!'
echo '---------------------------'
echo ' '
echo '---------build user_apps:-------'
cd ../../user/netlink_uapi
echo 'clean libnetlinku.so..'
make clean
make
echo 'build libnetlinku.so sucess!'
echo '---------------------------'
cd ../../user/pdeliv_u
echo 'clean pdeliv..'
make clean
make
echo 'build pdeliv sucess!'
echo '---------------------------'
cd ../../user/cfg2kernel
echo 'clean commcfg..'
make clean
make
echo 'build commcfg sucess!'
echo '---------------------------'