secgateway/Platform/modules/netlink_api/libnetlink_k.h

81 lines
2.7 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <linux/module.h>
#include <linux/netlink.h>
#include <linux/netfilter.h>
#include <linux/ip.h>
#include <uapi/linux/netfilter_ipv4.h>
#include <uapi/linux/ip.h>
#include <net/netlink.h>
#include <net/net_namespace.h>
struct pdeliv_debugfs {
unsigned int rev_succ;
unsigned int rev_fail;
unsigned int pde_succ;
unsigned int pde_fail;
};
struct netlinkk_cfg
{
struct netlink_kernel_cfg cfg;
struct sock *sk; //内核端socket
int user_pid;/*用户态pid*/
unsigned int subscriptions;/*netlink总线netlink协议号*/
unsigned int groups;/*netlink 组播组*/
struct pdeliv_debugfs pdeliv_dfs;
};
typedef int (*commnl_doit_func)(struct sk_buff *, struct nlmsghdr *);
typedef int (*commnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
typedef u16 (*commnl_calcit_func)(struct sk_buff *, struct nlmsghdr *);
struct commnl_msgtype_process
{
int msgtype;
commnl_doit_func doit;
commnl_dumpit_func dumpit;
commnl_calcit_func calcit;
};
extern void printk_mem(unsigned char * p,int len);
extern void printk_ipaddress(unsigned int address);
extern int pdeliv_msgtype_register( int msgtype,commnl_doit_func doit,
commnl_dumpit_func dumpit,commnl_calcit_func calcit);
/****************************************************************/
/*函数功能:注册内核态配置接收消息处理函数。 */
/*输入参数: */
/*msgtype:注册的消息类型。*/
/*doit:对应的消息接收处理函数;*/
/*dumpit,calcit:框架预留接口暂未使用。填NULL.*/
/*输出参数: WU */
/*返回值0注册成功< 0,失败 */
/****************************************************************/
extern int cfg_msgtype_register( int msgtype,commnl_doit_func doit,
commnl_dumpit_func dumpit,commnl_calcit_func calcit);
extern int cfg_msgtype_unregister(int msgtype);
extern int pdeliv_msgtype_unregister(int msgtype);
/****************************************************************/
/*函数功能:在内核态创建报文上送通道,上送的 */
/*报文内容从链路层头开始。一个netlink协议号只能创建一个通道。 */
/*输入参数g_nlcfg */
/*输出参数: struct upmnl_handle * upmh ,存放创建的通道相关信息。*/
/*返回值0通道创建成果< 0,失败 */
/****************************************************************/
extern int libnetlinkk_init_byproto(struct netlinkk_cfg *g_nlcfg);
extern void libnetlinkk_exit(struct netlinkk_cfg *g_nlcfg);
extern int commnl_unicast(struct sock *sk, struct sk_buff *skb, u32 portid);