2019-07-29 08:12:25 +00:00
|
|
|
#ifndef _OBJ_API_H
|
|
|
|
#define _OBJ_API_H
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include <asm/atomic.h>
|
|
|
|
#include <linux/semaphore.h>
|
2019-07-30 10:47:21 +00:00
|
|
|
#include <linux/types.h>
|
2019-07-29 08:12:25 +00:00
|
|
|
|
2019-07-29 08:32:25 +00:00
|
|
|
#include "../../common/common.h"
|
|
|
|
#include "../../common/uthash.h"
|
2019-07-29 08:12:25 +00:00
|
|
|
|
2019-07-30 10:47:21 +00:00
|
|
|
typedef int (*belong_server_objs)(__be32, int);
|
|
|
|
|
2019-07-29 08:12:25 +00:00
|
|
|
typedef enum {
|
|
|
|
OBJ_TYPE_ADDR = 0,
|
|
|
|
OBJ_TYPE_SERVER,
|
2019-07-30 10:47:21 +00:00
|
|
|
OBJ_TYPE_DATETIME,
|
|
|
|
OBJ_TYPE_MAX
|
2019-07-29 08:12:25 +00:00
|
|
|
} OBJ_TYPES;
|
|
|
|
|
2019-07-30 10:47:21 +00:00
|
|
|
typedef struct {
|
|
|
|
__be16 min_port;
|
|
|
|
__be16 max_port;
|
|
|
|
int pro_type;
|
|
|
|
struct list_head list;
|
|
|
|
} SERVER_OBJ_CONTENT, *PSERVER_OBJ_CONTENT;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
struct list_head content;
|
|
|
|
belong_server_objs callback;
|
|
|
|
} OBJECT_DATA, *POBJECT_DATA;
|
|
|
|
|
2019-07-29 08:12:25 +00:00
|
|
|
typedef struct {
|
|
|
|
char name[MAX_NAME_LEN];
|
|
|
|
OBJ_TYPES type;
|
2019-07-30 10:47:21 +00:00
|
|
|
POBJECT_DATA data;
|
2019-07-29 08:12:25 +00:00
|
|
|
atomic_t ref_count;
|
2019-07-30 10:47:21 +00:00
|
|
|
rwlock_t lock;
|
|
|
|
UT_hash_handle hh;
|
2019-07-29 08:12:25 +00:00
|
|
|
} CMHI_OBJECT, *PCMHI_OBJECT;
|
|
|
|
|
2019-07-30 10:47:21 +00:00
|
|
|
const char *obj_version(void);
|
2019-07-29 08:12:25 +00:00
|
|
|
void object_init(void);
|
2019-07-30 10:47:21 +00:00
|
|
|
void free_object(PCMHI_OBJECT pObj);
|
|
|
|
PCMHI_OBJECT new_object(void);
|
|
|
|
|
|
|
|
PCMHI_OBJECT create_server_object(const char *name, OBJ_TYPES type);
|
|
|
|
void cleanup_server_object(PCMHI_OBJECT pObj);
|
|
|
|
int add_server_obj_data(PCMHI_OBJECT pObj, __be16 minPort, __be32 maxPort, int proType);
|
2019-07-29 08:12:25 +00:00
|
|
|
#endif
|
|
|
|
#endif
|