secgateway/Product/modules/object_manager/obj_api.h

56 lines
1.4 KiB
C

#ifndef _OBJ_API_H
#define _OBJ_API_H
#ifdef __KERNEL__
#include <asm/atomic.h>
#include <linux/semaphore.h>
#include <linux/types.h>
#include "../../common/common.h"
#include "../../common/uthash.h"
#define OBJ_DBG_DIR ("obj")
typedef int (*belong_server_objs)(__be32, int);
typedef enum {
OBJ_TYPE_ADDR = 0,
OBJ_TYPE_SERVER,
OBJ_TYPE_DATETIME,
OBJ_TYPE_MAX
} OBJ_TYPES;
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;
typedef struct {
char name[MAX_NAME_LEN];
char desc[MAX_PATH];
OBJ_TYPES type;
POBJECT_DATA data;
atomic_t ref_count;
rwlock_t lock;
UT_hash_handle hh;
} CMHI_OBJECT, *PCMHI_OBJECT;
void obj_upgrade_dev_buffer(unsigned char* buf, unsigned int size);
const char *obj_version(void);
void object_init(void);
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);
int server_proc_init(void);
int server_proc_uninit(void);
#endif
#endif