|
Packit |
fcad23 |
/**************************************************************
|
|
Packit |
fcad23 |
* Copyright (C) 2001 Alex Rozin, Optical Access
|
|
Packit |
fcad23 |
*
|
|
Packit |
fcad23 |
* All Rights Reserved
|
|
Packit |
fcad23 |
*
|
|
Packit |
fcad23 |
* Permission to use, copy, modify and distribute this software and its
|
|
Packit |
fcad23 |
* documentation for any purpose and without fee is hereby granted,
|
|
Packit |
fcad23 |
* provided that the above copyright notice appear in all copies and that
|
|
Packit |
fcad23 |
* both that copyright notice and this permission notice appear in
|
|
Packit |
fcad23 |
* supporting documentation.
|
|
Packit |
fcad23 |
*
|
|
Packit |
fcad23 |
* ALEX ROZIN DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
|
Packit |
fcad23 |
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
|
Packit |
fcad23 |
* ALEX ROZIN BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
|
Packit |
fcad23 |
* ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
Packit |
fcad23 |
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
Packit |
fcad23 |
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
Packit |
fcad23 |
* SOFTWARE.
|
|
Packit |
fcad23 |
******************************************************************/
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#ifndef _row_api_h_included__
|
|
Packit |
fcad23 |
#define _row_api_h_included__
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* control tables API section
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef enum {
|
|
Packit |
fcad23 |
RMON1_ENTRY_VALID = 1,
|
|
Packit |
fcad23 |
RMON1_ENTRY_CREATE_REQUEST,
|
|
Packit |
fcad23 |
RMON1_ENTRY_UNDER_CREATION,
|
|
Packit |
fcad23 |
RMON1_ENTRY_INVALID
|
|
Packit |
fcad23 |
} RMON1_ENTRY_STATUS_T;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#define MAX_OWNERSTRING 128
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* structure for entry of all 'control' tables
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
typedef struct tagEntry {
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* begin of the header
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
struct tagEntry *next;
|
|
Packit |
fcad23 |
void *table_ptr; /* do casting to (TABLE_DEFINTION_T*) */
|
|
Packit |
fcad23 |
RMON1_ENTRY_STATUS_T status;
|
|
Packit |
fcad23 |
RMON1_ENTRY_STATUS_T new_status;
|
|
Packit |
fcad23 |
u_long ctrl_index;
|
|
Packit |
fcad23 |
u_long timer_id;
|
|
Packit |
fcad23 |
char *owner;
|
|
Packit |
fcad23 |
char *new_owner;
|
|
Packit |
fcad23 |
u_char only_just_created;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* end of the header
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
void *body;
|
|
Packit |
fcad23 |
void *tmp;
|
|
Packit |
fcad23 |
} RMON_ENTRY_T;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef int (ENTRY_CALLBACK_T) (RMON_ENTRY_T *);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef struct {
|
|
Packit |
fcad23 |
const char *name;
|
|
Packit |
fcad23 |
RMON_ENTRY_T *first;
|
|
Packit |
fcad23 |
u_long max_number_of_entries; /* '<0' means without limit */
|
|
Packit |
fcad23 |
u_long current_number_of_entries;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkCreate;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkClone;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkValidate;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkActivate;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkDeactivate;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkDelete;
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T *ClbkCopy;
|
|
Packit |
fcad23 |
} TABLE_DEFINTION_T;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* Api prototypes
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
void ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
const char *name,
|
|
Packit |
fcad23 |
u_long max_number_of_entries,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkCreate,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkClone,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkDelete,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkValidate,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkActivate,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkDeactivate,
|
|
Packit |
fcad23 |
ENTRY_CALLBACK_T * ClbkCopy);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int ROWAPI_new(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWAPI_get_clone(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index, size_t body_size);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
void ROWAPI_delete_clone(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWAPI_first(TABLE_DEFINTION_T * table_ptr);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWAPI_next(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long prev_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWAPI_find(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int ROWAPI_action_check(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int ROWAPI_commit(TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
u_long ctrl_index);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWAPI_header_ControlEntry(struct variable *vp, oid * name,
|
|
Packit |
fcad23 |
size_t * length, int exact,
|
|
Packit |
fcad23 |
size_t * var_len,
|
|
Packit |
fcad23 |
TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
void *entry_ptr,
|
|
Packit |
fcad23 |
size_t entry_size);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int ROWAPI_do_another_action(oid * name,
|
|
Packit |
fcad23 |
int tbl_first_index_begin,
|
|
Packit |
fcad23 |
int action, int *prev_action,
|
|
Packit |
fcad23 |
TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
size_t entry_size);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* data tables API section
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef int (SCROLLER_ENTRY_DESCRUCTOR_T) (void *);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef struct nexted_void_t {
|
|
Packit |
fcad23 |
struct nexted_void_t *next;
|
|
Packit |
fcad23 |
u_long data_index;
|
|
Packit |
fcad23 |
} NEXTED_PTR_T;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
typedef struct data_scroller {
|
|
Packit |
fcad23 |
u_long max_number_of_entries;
|
|
Packit |
fcad23 |
u_long data_requested;
|
|
Packit |
fcad23 |
u_long data_granted;
|
|
Packit |
fcad23 |
u_long data_created; /* number of allocated data entries */
|
|
Packit |
fcad23 |
u_long data_stored; /* number of data, currently stored */
|
|
Packit |
fcad23 |
u_long data_total_number; /* number of data entries, stored after validation */
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* these 3 pointers make casting to private (DATA_ENTRY_T*)
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
void *first_data_ptr;
|
|
Packit |
fcad23 |
NEXTED_PTR_T *last_data_ptr;
|
|
Packit |
fcad23 |
void *current_data_ptr;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
size_t data_size;
|
|
Packit |
fcad23 |
int (*data_destructor) (struct data_scroller *, void *);
|
|
Packit |
fcad23 |
} SCROLLER_T;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int ROWDATAAPI_init(SCROLLER_T * scrlr,
|
|
Packit |
fcad23 |
u_long max_number_of_entries,
|
|
Packit |
fcad23 |
u_long data_requested,
|
|
Packit |
fcad23 |
size_t data_size,
|
|
Packit |
fcad23 |
int (*data_destructor) (struct
|
|
Packit |
fcad23 |
data_scroller *,
|
|
Packit |
fcad23 |
void *));
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
void
|
|
Packit |
fcad23 |
ROWDATAAPI_set_size(SCROLLER_T * scrlr,
|
|
Packit |
fcad23 |
u_long data_requested,
|
|
Packit |
fcad23 |
u_char do_allocation);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
void ROWDATAAPI_descructor(SCROLLER_T * scrlr);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
void *ROWDATAAPI_locate_new_data(SCROLLER_T * scrlr);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
u_long ROWDATAAPI_get_total_number(SCROLLER_T * scrlr);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
RMON_ENTRY_T *ROWDATAAPI_header_DataEntry(struct variable *vp,
|
|
Packit |
fcad23 |
oid * name, size_t * length,
|
|
Packit |
fcad23 |
int exact, size_t * var_len,
|
|
Packit |
fcad23 |
TABLE_DEFINTION_T * table_ptr,
|
|
Packit |
fcad23 |
SCROLLER_T *
|
|
Packit |
fcad23 |
(*extract_scroller) (void
|
|
Packit |
fcad23 |
*body),
|
|
Packit |
fcad23 |
size_t data_size,
|
|
Packit |
fcad23 |
void *entry_ptr);
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#endif /* _row_api_h_included__ */
|