blob: 35730df6ea6b824a485d9d0f15199f222a55df06 [file] [log] [blame]
/** @file
A brief file description
@section license License
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#if !defined (_RECORDS_CONFIG_H_)
#define _RECORDS_CONFIG_H_
#include "MgmtDefs.h"
#include "BaseRecords.h"
#include "MgmtHashTable.h"
#include "P_RecCore.h"
enum RecordUpdateType
{
RU_NULL, // default: don't know the behavior
RU_REREAD, // config can be updated dynamically w/ traffic_line -x
RU_RESTART_TS, // config requires TS to be restarted to take effect
RU_RESTART_TM, // config requires TM/TS to be restarted to take effect
RU_RESTART_TC // config requires TC/TM/TS to be restarted to take effect
};
enum RecordRequiredType
{
RR_NULL, // config is _not_ required to be defined in records.config
RR_REQUIRED // config _is_ required to be defined in record.config
};
enum RecordCheckType
{
RC_NULL, // default: no check type defined
RC_STR, // config is a string
RC_INT, // config is an integer with a range
RC_IP // config is an ip address
};
enum RecordAccessType
{
RA_NULL, // default: no access type defined
RA_NO_ACCESS, // config cannot be read or set
RA_READ_ONLY // config can only be read
};
// Retain this struct for ease of CVS merging
struct RecordElement
{
int type; // type of the record (CONFIG, PROCESS, etc)
char *name; // name of the record
char *description; // short description of the record
MgmtType value_type; // type of the record value (INT, FLOAT, etc)
char *value; // default value for the record
RecordUpdateType update; // action necessary to change a configuration
RecordRequiredType required; // is records required to be in records.config?
RecordCheckType check;
char *regex;
RecordAccessType access; // access level of the record
};
extern RecordElement RecordsConfig[]; // big struct of all system records
// remove this when librecords is done.
extern MgmtHashTable *RecordsConfigIndex; // hash table index into record table (record_name to record_element-index)
// remove this when librecords is done.
void RecordsConfigInit(); // initializes RecordsConfigIndex
void LibRecordsConfigInit(); // initializes RecordsConfigIndex
void test_librecords();
#endif