本文整理汇总了C++中DEBUGMSGTL函数的典型用法代码示例。如果您正苦于以下问题:C++ DEBUGMSGTL函数的具体用法?C++ DEBUGMSGTL怎么用?C++ DEBUGMSGTL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DEBUGMSGTL函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateTunnel
/*
* update a struct tunnel. its index and ifname elements have to be set.
*/
static struct tunnel *
updateTunnel(struct tunnel *tunnel)
{
struct ip_tunnel_parm *parm;
int fd;
struct ifreq ifrq;
/*
* NOTE: getTunnelParm() may adjust the passed ifname.
*/
parm = getTunnelParm(tunnel->ifname);
if (!parm) {
DEBUGMSGTL(("tunnel",
"updateTunnel(): getTunnelParm(\"%s\") returned NULL\n",
tunnel->ifname));
tunnel->active = 0;
return NULL;
}
tunnel->active = 1;
tunnel->local = parm->iph.saddr;
tunnel->remote = parm->iph.daddr;
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
DEBUGMSGTL(("snmpd", "socket open failure in updateTunnels()\n"));
return NULL;
} else {
/*
* NOTE: this ioctl does not guarantee 6 bytes of a physaddr.
* In particular, a 'sit0' interface only appears to get back
* 4 bytes of sa_data. We don't use sa_data here, or we'd
* need to memset it to 0 before the ioct.
*/
strlcpy(ifrq.ifr_name, tunnel->ifname, sizeof(ifrq.ifr_name));
if (ioctl(fd, SIOCGIFHWADDR, &ifrq) == 0)
switch (ifrq.ifr_hwaddr.sa_family) {
case ARPHRD_TUNNEL:
tunnel->encaps = 2;
break;; /* direct */
case ARPHRD_TUNNEL6:
tunnel->encaps = 2;
break;; /* direct */
case ARPHRD_IPGRE:
tunnel->encaps = 3;
break;; /* gre */
case ARPHRD_SIT:
tunnel->encaps = 2;
break;; /* direct */
default:
tunnel->encaps = 1; /* other */
}
close(fd);
}
tunnel->hoplimit = parm->iph.ttl;
tunnel->security = 1;
tunnel->tos = (parm->iph.tos & 1) ? -1 : parm->iph.tos;
/*
* XXX: adjust tos mapping (kernel <-> TUNNEL-MIB::tunnelIfTOS)
*/
return tunnel;
}
示例2: netsnmp_arch_idedisk_container_load
int netsnmp_arch_idedisk_container_load(netsnmp_container* container)
{
cpqIdeControllerTable_entry *cntlr;
cpqIdeAtaDiskTable_entry *disk;
cpqIdeAtaDiskTable_entry *old;
netsnmp_container *cntlr_container;
netsnmp_iterator *it;
netsnmp_cache *cntlr_cache;
netsnmp_container *fw_container = NULL;
netsnmp_cache *fw_cache = NULL;
char buffer[256];
char attribute[256];
char *value;
long long size;
char *scsi;
char *generic;
int Cntlr, Bus, Index, Target;
char * OS_name;
char *serialnum = NULL;
int j;
long rc = 0;
int disk_fd;
int Health = 0, Temp = -1, Mcot = -1, Wear = -1;
unsigned char *Temperature;
netsnmp_index tmp;
oid oid_index[2];
DEBUGMSGTL(("idedisk:container:load", "loading\n"));
/*
* find the HBa container.
*/
SataDiskCondition = CPQ_REG_OK;
cntlr_cache = netsnmp_cache_find_by_oid(cpqIdeControllerTable_oid,
cpqIdeControllerTable_oid_len);
if (cntlr_cache == NULL) {
return -1;
}
cntlr_container = cntlr_cache->magic;
DEBUGMSGTL(("idedisk:container:load", "Container=%p\n",cntlr_container));
DEBUGMSGTL(("idedisk:container:load",
"ContainerSize=%ld\n", CONTAINER_SIZE(cntlr_container)));
it = CONTAINER_ITERATOR( cntlr_container );
cntlr = ITERATOR_FIRST( it );
DEBUGMSGTL(("idedisk:container:load", "cntlr=%p\n",cntlr));
while ( cntlr != NULL ) {
current_Cntlr = cntlr->host;
DEBUGMSGTL(("idedisk:container:load",
"Starting Loop %s\n", current_Cntlr));
cntlr->cpqIdeControllerOverallCondition =
MAKE_CONDITION(cntlr->cpqIdeControllerOverallCondition,
cntlr->cpqIdeControllerCondition);
/* Now chack for those HBA's in the SCSI diskss */
if ((NumScsiDisk = scandir(ScsiDiskDir, &ScsiDisklist,
disk_select, alphasort)) <= 0) {
free(ScsiDisklist);
cntlr = ITERATOR_NEXT( it );
continue;
}
for (j= 0; j< NumScsiDisk; j++) {
memset(&buffer, 0, sizeof(buffer));
strncpy(buffer, ScsiDiskDir, sizeof(buffer) - 1);
strncat(buffer, ScsiDisklist[j]->d_name,
sizeof(buffer) - strlen(buffer) - 1);
DEBUGMSGTL(("idedisk:container:load", "Working on disk %s\n",
ScsiDisklist[j]->d_name));
sscanf(ScsiDisklist[j]->d_name,"%d:%d:%d:%d",
&Cntlr, &Bus, &Index, &Target);
DEBUGMSGTL(("idedisk:container:load",
"looking for cntlr=%ld, Disk = %d\n",
cntlr->cpqIdeControllerIndex, Index));
oid_index[0] = cntlr->cpqIdeControllerIndex;
oid_index[1] = Index;
tmp.len = 2;
tmp.oids = &oid_index[0];
old = CONTAINER_FIND(container, &tmp);
DEBUGMSGTL(("idedisk:container:load", "Old disk=%p\n",old));
if (old != NULL ) {
DEBUGMSGTL(("idedisk:container:load", "Re-Use old entry\n"));
old->OldStatus = old->cpqIdeAtaDiskStatus;
disk = old;
} else {
disk = cpqIdeAtaDiskTable_createEntry(container,
(oid)cntlr->cpqIdeControllerIndex,
Index);
if (disk == NULL)
continue;
DEBUGMSGTL(("idedisk:container:load", "Entry created\n"));
scsi = ScsiDisklist[j]->d_name;
if ((value = get_DiskModel(scsi)) != NULL) {
//.........这里部分代码省略.........
示例3: cpqNicIfLogMapTable_handler
/** handles requests for the cpqNicIfLogMapTable table */
int
cpqNicIfLogMapTable_handler(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
netsnmp_request_info *request;
netsnmp_table_request_info *table_info;
cpqNicIfLogMapTable_entry *table_entry;
DEBUGMSGTL(("cpqNicIfLogMapTable:handler", "Processing request (%d)\n",
reqinfo->mode));
switch (reqinfo->mode) {
/*
* Read-support (also covers GetNext requests)
*/
case MODE_GET:
for (request = requests; request; request = request->next) {
if (request->processed)
continue;
table_entry = (cpqNicIfLogMapTable_entry *)
netsnmp_container_table_extract_context(request);
table_info = netsnmp_extract_table_info(request);
if ((NULL == table_entry) || (NULL == table_info)) {
snmp_log(LOG_ERR,
"could not extract table entry or info for cpqNicIfLogMapTable\n");
snmp_set_var_typed_value(request->requestvb,
SNMP_ERR_GENERR, NULL, 0);
continue;
}
switch (table_info->colnum) {
case COLUMN_CPQNICIFLOGMAPINDEX:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
table_entry->
cpqNicIfLogMapIndex);
break;
case COLUMN_CPQNICIFLOGMAPIFNUMBER:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
table_entry->
cpqNicIfLogMapIfNumber,
table_entry->
cpqNicIfLogMapIfNumber_len);
break;
case COLUMN_CPQNICIFLOGMAPDESCRIPTION:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
table_entry->
cpqNicIfLogMapDescription,
table_entry->
cpqNicIfLogMapDescription_len);
break;
case COLUMN_CPQNICIFLOGMAPGROUPTYPE:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
table_entry->
cpqNicIfLogMapGroupType);
break;
case COLUMN_CPQNICIFLOGMAPADAPTERCOUNT:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
table_entry->
cpqNicIfLogMapAdapterCount);
break;
case COLUMN_CPQNICIFLOGMAPADAPTEROKCOUNT:
if (!table_entry) {
netsnmp_set_request_error(reqinfo, request,
SNMP_NOSUCHINSTANCE);
continue;
}
snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
table_entry->
cpqNicIfLogMapAdapterOKCount);
break;
case COLUMN_CPQNICIFLOGMAPPHYSICALADAPTERS:
//.........这里部分代码省略.........
示例4: initialize_table_saHpiSensorReadingNormalMinTable
/************************************************************
*
* Initialize the saHpiSensorReadingNormalMinTable table by defining its contents and how it's structured
*/
void
initialize_table_saHpiSensorReadingNormalMinTable(void)
{
netsnmp_table_registration_info *table_info;
DEBUGMSGTL ((AGENT, "initialize_table_saHpiSensorReadingNormalMinTable, called\n"));
if (my_handler) {
snmp_log(LOG_ERR, "initialize_table_saHpiSensorReadingNormalMinTable_handler called again\n");
return;
}
memset(&cb, 0x00, sizeof(cb));
/** create the table structure itself */
table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
/* if your table is read only, it's easiest to change the
HANDLER_CAN_RWRITE definition below to HANDLER_CAN_RONLY */
my_handler = netsnmp_create_handler_registration("saHpiSensorReadingNormalMinTable",
netsnmp_table_array_helper_handler,
saHpiSensorReadingNormalMinTable_oid,
saHpiSensorReadingNormalMinTable_oid_len,
HANDLER_CAN_RWRITE);
if (!my_handler || !table_info) {
snmp_log(LOG_ERR, "malloc failed in "
"initialize_table_saHpiSensorReadingNormalMinTable_handler\n");
return; /** mallocs failed */
}
/***************************************************
* Setting up the table's definition
*/
/*
* TODO: add any external indexes here.
*/
/** TODO: add code for external index(s)! */
/*
* internal indexes
*/
/** index: saHpiDomainId */
netsnmp_table_helper_add_index(table_info, ASN_UNSIGNED);
/** index: saHpiResourceId */
netsnmp_table_helper_add_index(table_info, ASN_UNSIGNED);
/** index: saHpiResourceIsHistorical */
netsnmp_table_helper_add_index(table_info, ASN_INTEGER);
/** index: saHpiSensorNum */
netsnmp_table_helper_add_index(table_info, ASN_UNSIGNED);
table_info->min_column = saHpiSensorReadingNormalMinTable_COL_MIN;
table_info->max_column = saHpiSensorReadingNormalMinTable_COL_MAX;
/***************************************************
* registering the table with the master agent
*/
cb.get_value = saHpiSensorReadingNormalMinTable_get_value;
cb.container = netsnmp_container_find("saHpiSensorReadingNormalMinTable_primary:"
"saHpiSensorReadingNormalMinTable:"
"table_container");
netsnmp_container_add_index(cb.container,
netsnmp_container_find("saHpiSensorReadingNormalMinTable_secondary:"
"saHpiSensorReadingNormalMinTable:"
"table_container"));
cb.container->next->compare = saHpiSensorReadingNormalMinTable_cmp;
cb.can_set = 1;
cb.create_row = (UserRowMethod*)saHpiSensorReadingNormalMinTable_create_row;
cb.duplicate_row = (UserRowMethod*)saHpiSensorReadingNormalMinTable_duplicate_row;
cb.delete_row = (UserRowMethod*)saHpiSensorReadingNormalMinTable_delete_row;
cb.row_copy = (Netsnmp_User_Row_Operation *)saHpiSensorReadingNormalMinTable_row_copy;
cb.can_activate = (Netsnmp_User_Row_Action *)saHpiSensorReadingNormalMinTable_can_activate;
cb.can_deactivate = (Netsnmp_User_Row_Action *)saHpiSensorReadingNormalMinTable_can_deactivate;
cb.can_delete = (Netsnmp_User_Row_Action *)saHpiSensorReadingNormalMinTable_can_delete;
cb.set_reserve1 = saHpiSensorReadingNormalMinTable_set_reserve1;
cb.set_reserve2 = saHpiSensorReadingNormalMinTable_set_reserve2;
cb.set_action = saHpiSensorReadingNormalMinTable_set_action;
cb.set_commit = saHpiSensorReadingNormalMinTable_set_commit;
cb.set_free = saHpiSensorReadingNormalMinTable_set_free;
cb.set_undo = saHpiSensorReadingNormalMinTable_set_undo;
DEBUGMSGTL(("initialize_table_saHpiSensorReadingNormalMinTable",
"Registering table saHpiSensorReadingNormalMinTable "
"as a table array\n"));
netsnmp_table_container_register(my_handler, table_info, &cb,
cb.container, 1);
}
示例5: engineBoots_conf
/*******************************************************************-o-******
* engineBoots_conf
*
* Parameters:
* *word
* *cptr
*
* Line syntax:
* engineBoots <num_boots>
*/
void
engineBoots_conf(const char *word, char *cptr)
{
engineBoots = atoi(cptr)+1;
DEBUGMSGTL(("snmpv3","engineBoots: %d\n",engineBoots));
}
示例6: dot11PermitSSIDTable_container_load
/**
* load initial data
*
* TODO:350:M: Implement dot11PermitSSIDTable data load
* This function will also be called by the cache helper to load
* the container again (after the container free function has been
* called to free the previous contents).
*
* @param container container to which items should be inserted
*
* @retval MFD_SUCCESS : success.
* @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
* @retval MFD_ERROR : other error.
*
* This function is called to load the index(es) (and data, optionally)
* for the every row in the data set.
*
* @remark
* While loading the data, the only important thing is the indexes.
* If access to your data is cheap/fast (e.g. you have a pointer to a
* structure in memory), it would make sense to update the data here.
* If, however, the accessing the data invovles more work (e.g. parsing
* some other existing data, or peforming calculations to derive the data),
* then you can limit yourself to setting the indexes and saving any
* information you will need later. Then use the saved information in
* dot11PermitSSIDTable_row_prep() for populating data.
*
* @note
* If you need consistency between rows (like you want statistics
* for each row to be from the same time frame), you should set all
* data here.
*
*/
int
dot11PermitSSIDTable_container_load(netsnmp_container *container)
{
snmp_log(LOG_DEBUG, "enter dot11PermitSSIDTable_container_load\n");
dot11PermitSSIDTable_rowreq_ctx *rowreq_ctx;
size_t count = 0;
/*
* temporary storage for index values
*/
/*
* permitSSIDID(1)/INTEGER/ASN_INTEGER/long(long)//l/A/w/e/r/d/h
*/
long permitSSIDID;
/*
* this example code is based on a data source that is a
* text file to be read and parsed.
*/
//FILE *filep;
//char line[MAX_LINE_SIZE];
DEBUGMSGTL(("verbose:dot11PermitSSIDTable:dot11PermitSSIDTable_container_load","called\n"));
/*
***************************************************
*** START EXAMPLE CODE ***
***---------------------------------------------***/
/*
* open our data file.
*/
//filep = fopen("/etc/dummy.conf", "r");
//if(NULL == filep) {
// return MFD_RESOURCE_UNAVAILABLE;
//}
/*
***---------------------------------------------***
*** END EXAMPLE CODE ***
***************************************************/
/*
* TODO:351:M: |-> Load/update data in the dot11PermitSSIDTable container.
* loop over your dot11PermitSSIDTable data, allocate a rowreq context,
* set the index(es) [and data, optionally] and insert into
* the container.
*/
snmpd_dbus_message *messageHead = NULL, *messageNode = NULL;
snmp_log(LOG_DEBUG, "enter list_connection_call_dbus_method:show_legal_essid_list_cmd\n");
messageHead = list_connection_call_dbus_method(show_legal_essid_list_cmd, SHOW_ALL_WTP_TABLE_METHOD);
snmp_log(LOG_DEBUG, "exit list_connection_call_dbus_method:show_legal_essid_list_cmd,messageHead=%p\n", messageHead);
if(messageHead)
{
for(messageNode = messageHead; NULL != messageNode; messageNode = messageNode->next)
{
DCLI_AC_API_GROUP_ONE *LIST = messageNode->message;
if((LIST) && (LIST->dcli_essid_list))
{
struct essid_node *head = NULL;
unsigned int len = LIST->dcli_essid_list->list_len;
int i = 0;
char essid[255] = { 0 };
for(i=0,head = LIST->dcli_essid_list->essid_list;
((i<len)&&(NULL != head));
i++,head = head->next)
//.........这里部分代码省略.........
示例7: saHpiSensorReadingNormalMinTable_extract_index
/**
* the *_extract_index routine
*
* This routine is called when a set request is received for an index
* that was not found in the table container. Here, we parse the oid
* in the the individual index components and copy those indexes to the
* context. Then we make sure the indexes for the new row are valid.
*/
int
saHpiSensorReadingNormalMinTable_extract_index( saHpiSensorReadingNormalMinTable_context * ctx, netsnmp_index * hdr )
{
/*
* temporary local storage for extracting oid index
*
* extract index uses varbinds (netsnmp_variable_list) to parse
* the index OID into the individual components for each index part.
*/
/** TODO: add storage for external index(s)! */
netsnmp_variable_list var_saHpiDomainId;
netsnmp_variable_list var_saHpiResourceId;
netsnmp_variable_list var_saHpiResourceIsHistorical;
netsnmp_variable_list var_saHpiSensorNum;
int err;
DEBUGMSGTL ((AGENT, "saHpiSensorReadingNormalMinTable_extract_index, called\n"));
/*
* copy index, if provided
*/
if (hdr) {
netsnmp_assert(ctx->index.oids == NULL);
if (snmp_clone_mem( (void*)&ctx->index.oids, hdr->oids,
hdr->len * sizeof(oid) )) {
return -1;
}
ctx->index.len = hdr->len;
}
/*
* initialize variable that will hold each component of the index.
* If there are multiple indexes for the table, the variable_lists
* need to be linked together, in order.
*/
/** TODO: add code for external index(s)! */
memset( &var_saHpiDomainId, 0x00, sizeof(var_saHpiDomainId) );
var_saHpiDomainId.type = ASN_UNSIGNED; /* type hint for parse_oid_indexes */
/** TODO: link this index to the next, or NULL for the last one */
var_saHpiDomainId.next_variable = &var_saHpiResourceId;
memset( &var_saHpiResourceId, 0x00, sizeof(var_saHpiResourceId) );
var_saHpiResourceId.type = ASN_UNSIGNED; /* type hint for parse_oid_indexes */
/** TODO: link this index to the next, or NULL for the last one */
var_saHpiResourceId.next_variable = &var_saHpiResourceIsHistorical;
memset( &var_saHpiResourceIsHistorical, 0x00, sizeof(var_saHpiResourceIsHistorical) );
var_saHpiResourceIsHistorical.type = ASN_INTEGER; /* type hint for parse_oid_indexes */
/** TODO: link this index to the next, or NULL for the last one */
var_saHpiResourceIsHistorical.next_variable = &var_saHpiSensorNum;
memset( &var_saHpiSensorNum, 0x00, sizeof(var_saHpiSensorNum) );
var_saHpiSensorNum.type = ASN_UNSIGNED; /* type hint for parse_oid_indexes */
/** TODO: link this index to the next, or NULL for the last one */
var_saHpiSensorNum.next_variable = NULL;
/*
* parse the oid into the individual index components
*/
err = parse_oid_indexes( hdr->oids, hdr->len, &var_saHpiDomainId );
if (err == SNMP_ERR_NOERROR) {
/*
* copy index components into the context structure
*/
/** skipping external index saHpiDomainId */
/** skipping external index saHpiResourceId */
/** skipping external index saHpiResourceIsHistorical */
/** skipping external index saHpiSensorNum */
err = saHpiDomainId_check_index(
*var_saHpiDomainId.val.integer);
err = saHpiResourceEntryId_check_index(
*var_saHpiResourceId.val.integer);
err = saHpiResourceIsHistorical_check_index(
*var_saHpiResourceIsHistorical.val.integer);
err = saHpiSensorNum_check_index(
*var_saHpiSensorNum.val.integer);
}
/*
* parsing may have allocated memory. free it.
*/
snmp_reset_var_buffers( &var_saHpiDomainId );
return err;
}
示例8: vacm_parse_authaccess
//.........这里部分代码省略.........
model = SNMP_SEC_MODEL_SNMPv2c;
else {
model = se_find_value_in_slist("snmp_secmods", tmp);
if (model == SE_DNE) {
config_perror
("bad security model, should be: v1, v2c or usm or a registered security plugin name");
return;
}
}
} else {
config_perror("missing SECMODEL parameter");
return;
}
view = strtok_r(NULL, " \t\n", &st);
if (!view) {
config_perror("missing VIEW parameter");
return;
}
}
if (strlen(view) >= VACMSTRINGLEN ) {
config_perror("View value too long");
return;
}
/*
* Now parse optional fields, or provide default values
*/
tmp = strtok_r(NULL, " \t\n", &st);
if (tmp) {
if (strcasecmp(tmp, "noauth") == 0)
level = SNMP_SEC_LEVEL_NOAUTH;
else if (strcasecmp(tmp, "noauthnopriv") == 0)
level = SNMP_SEC_LEVEL_NOAUTH;
else if (strcasecmp(tmp, "auth") == 0)
level = SNMP_SEC_LEVEL_AUTHNOPRIV;
else if (strcasecmp(tmp, "authnopriv") == 0)
level = SNMP_SEC_LEVEL_AUTHNOPRIV;
else if (strcasecmp(tmp, "priv") == 0)
level = SNMP_SEC_LEVEL_AUTHPRIV;
else if (strcasecmp(tmp, "authpriv") == 0)
level = SNMP_SEC_LEVEL_AUTHPRIV;
else {
config_perror
("bad security level (noauthnopriv, authnopriv, authpriv)");
return;
}
} else {
/* What about SNMP_SEC_MODEL_ANY ?? */
if ( model == SNMP_SEC_MODEL_SNMPv1 ||
model == SNMP_SEC_MODEL_SNMPv2c )
level = SNMP_SEC_LEVEL_NOAUTH;
else
level = SNMP_SEC_LEVEL_AUTHNOPRIV;
}
context = tmp = strtok_r(NULL, " \t\n", &st);
if (tmp) {
tmp = (tmp + strlen(tmp)-1);
if (tmp && *tmp == '*') {
*tmp = '\0';
prefix = 2;
} else {
prefix = 1;
}
} else {
context = "";
prefix = 1; /* Or prefix(2) ?? */
}
/*
* Now we can create the access entry
*/
ap = vacm_getAccessEntry(group, context, model, level);
if (!ap) {
ap = vacm_createAccessEntry(group, context, model, level);
DEBUGMSGTL(("vacm:conf:authaccess",
"no existing access found; creating a new one\n"));
} else {
DEBUGMSGTL(("vacm:conf:authaccess",
"existing access found, using it\n"));
}
if (!ap) {
config_perror("failed to create access entry");
return;
}
for (i = 0; i <= VACM_MAX_VIEWS; i++) {
if (viewtypes & (1 << i)) {
strcpy(ap->views[i], view);
}
}
ap->contextMatch = prefix;
ap->storageType = SNMP_STORAGE_PERMANENT;
ap->status = SNMP_ROW_ACTIVE;
if (ap->reserved)
free(ap->reserved);
ap->reserved = NULL;
}
示例9: vacm_create_simple
void
vacm_create_simple(const char *token, char *confline,
int parsetype, int viewtypes)
{
char line[SPRINT_MAX_LEN];
char community[COMMUNITY_MAX_LEN];
char theoid[SPRINT_MAX_LEN];
char viewname[SPRINT_MAX_LEN];
char *view_ptr = viewname;
#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
char addressname[SPRINT_MAX_LEN];
#endif
const char *rw = "none";
char model[SPRINT_MAX_LEN];
char *cp, *tmp;
char secname[SPRINT_MAX_LEN];
char grpname[SPRINT_MAX_LEN];
char authlevel[SPRINT_MAX_LEN];
char context[SPRINT_MAX_LEN];
int ctxprefix = 1; /* Default to matching all contexts */
static int commcount = 0;
/* Conveniently, the community-based security
model values can also be used as bit flags */
int commversion = SNMP_SEC_MODEL_SNMPv1 |
SNMP_SEC_MODEL_SNMPv2c;
/*
* init
*/
strcpy(model, "any");
memset(context, 0, sizeof(context));
memset(secname, 0, sizeof(secname));
memset(grpname, 0, sizeof(grpname));
/*
* community name or user name
*/
cp = copy_nword(confline, community, sizeof(community));
if (parsetype == VACM_CREATE_SIMPLE_V3) {
/*
* maybe security model type
*/
if (strcmp(community, "-s") == 0) {
/*
* -s model ...
*/
if (cp)
cp = copy_nword(cp, model, sizeof(model));
if (!cp) {
config_perror("illegal line");
return;
}
if (cp)
cp = copy_nword(cp, community, sizeof(community));
} else {
strcpy(model, "usm");
}
/*
* authentication level
*/
if (cp && *cp)
cp = copy_nword(cp, authlevel, sizeof(authlevel));
else
strcpy(authlevel, "auth");
DEBUGMSGTL((token, "setting auth level: \"%s\"\n", authlevel));
#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
} else {
if (strcmp(community, "-v") == 0) {
/*
* -v version ...
*/
if (cp)
cp = copy_nword(cp, model, sizeof(model));
if (!cp) {
config_perror("illegal line");
return;
}
if ( strcasecmp( model, "1" ) == 0 )
strcpy(model, "v1");
if ( strcasecmp( model, "v1" ) == 0 )
commversion = SNMP_SEC_MODEL_SNMPv1;
if ( strcasecmp( model, "2c" ) == 0 )
strcpy(model, "v2c");
if ( strcasecmp( model, "v2c" ) == 0 )
commversion = SNMP_SEC_MODEL_SNMPv2c;
if (cp)
cp = copy_nword(cp, community, sizeof(community));
}
/*
* source address
*/
if (cp && *cp) {
cp = copy_nword(cp, addressname, sizeof(addressname));
} else {
strcpy(addressname, "default");
}
/*
* authlevel has to be noauth
*/
//.........这里部分代码省略.........
示例10: update_stats
/*
* This gets called every POLL_INTERVAL seconds to update the snapshots. It takes a new snapshot and
* drops the oldest one. This way we move the time window so we always take the values over
* POLL_INTERVAL * POLL_VALUES seconds and update the data used every POLL_INTERVAL seconds
* The alarm timer is in the init function of this module (snmp_alarm_register)
* ARGSUSED0
*/
static void
update_stats(unsigned int registrationNumber, void *clientarg)
{
/*
* The time between the samples we compare
*/
hrtime_t time_diff;
/*
* Easier to use these than the snapshots, short hand pointers
*/
struct cpu_stat_snapshot *css_old, *css_new;
/*
* The usual stuff to count on, err, by
*/
int i;
/*
* Kstat chain id, to check whether kstat chain changed
*/
kid_t kid;
/*
* The sum of the CPU ticks that have passed on the different CPU states, so we can calculate
* the percentages of each state
*/
unsigned long long cpu_sum = 0;
DEBUGMSGTL(("ucd-snmp/vmstat_solaris2.c:update_stats",
"updating stats\n"));
/*
* Just in case someone added (or removed) some CPUs during operation (or other kstat chain changes)
*/
kid = kstat_chain_update(kstat_fd);
if (kid != 0) {
if (kid == -1) {
snmp_log(LOG_WARNING,
"vmstat_solaris2 (update_stats): Could not update kstat chain.\n");
} else {
/*
* On some machines this floods the logfile, thus commented out
* snmp_log(LOG_INFO, "vmstat_solaris2 (update_stats): Kstat chain changed.");
*/
}
}
/*
* Take the current snapshot
*/
if (take_snapshot(&snapshot[0]) == -1) {
snmp_log(LOG_WARNING,
"vmstat_solaris2 (update_stats): Something went wrong with take_snapshot.\n");
return;
}
/*
* Do we have some data we can use ? An issue right after the start of the agent
*/
if (number_of_snapshots > 0) {
/*
* Huh, the number of CPUs changed during run time. That is indeed s.th. worth noting, we
* output a humorous (more or less) syslog message and need to retake the snapshots
*/
if (snapshot[0].css_cpus != snapshot[1].css_cpus) {
if (snapshot[0].css_cpus > snapshot[1].css_cpus) {
snmp_log(LOG_NOTICE,
"vmstat_solaris2 (update_stats): Cool ! Number of CPUs increased, must be hot-pluggable.\n");
} else {
snmp_log(LOG_NOTICE,
"vmstat_solaris2 (update_stats): Lost at least one CPU, RIP.\n");
}
/*
* Make all snapshots but the current one invalid
*/
number_of_snapshots = 1;
/*
* Move the current one in the "first" [1] slot
*/
memmove(&snapshot[1], &snapshot[0], sizeof snapshot[0]);
/*
* Erase the current one
*/
memset(&snapshot[0], 0, sizeof snapshot[0]);
/*
* Try to get a new snapshot in five seconds so we can return s.th. useful
*/
if (snmp_alarm_register(5, NULL, update_stats, NULL) == 0) {
snmp_log(LOG_WARNING,
"vmstat_solaris2 (update_stats): snmp_alarm_register failed.\n");
}
return;
//.........这里部分代码省略.........
示例11: vacm_check_view_contents
int
vacm_check_view_contents(netsnmp_pdu *pdu, oid * name, size_t namelen,
int check_subtree, int viewtype, int flags)
{
struct vacm_accessEntry *ap;
struct vacm_groupEntry *gp;
struct vacm_viewEntry *vp;
char vacm_default_context[1] = "";
const char *contextName = vacm_default_context;
const char *sn = NULL;
char *vn;
const char *pdu_community;
/*
* len defined by the vacmContextName object
*/
#define CONTEXTNAMEINDEXLEN 32
char contextNameIndex[CONTEXTNAMEINDEXLEN + 1];
#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
#if defined(NETSNMP_DISABLE_SNMPV1)
if (pdu->version == SNMP_VERSION_2c)
#else
#if defined(NETSNMP_DISABLE_SNMPV2C)
if (pdu->version == SNMP_VERSION_1)
#else
if (pdu->version == SNMP_VERSION_1 || pdu->version == SNMP_VERSION_2c)
#endif
#endif
{
pdu_community = (const char *) pdu->community;
if (!pdu_community)
pdu_community = "";
if (snmp_get_do_debugging()) {
char *buf;
if (pdu->community) {
buf = (char *) malloc(1 + pdu->community_len);
memcpy(buf, pdu->community, pdu->community_len);
buf[pdu->community_len] = '\0';
} else {
DEBUGMSGTL(("mibII/vacm_vars", "NULL community"));
buf = strdup("NULL");
}
DEBUGMSGTL(("mibII/vacm_vars",
"vacm_in_view: ver=%ld, community=%s\n",
pdu->version, buf));
free(buf);
}
/*
* Okay, if this PDU was received from a UDP or a TCP transport then
* ask the transport abstraction layer to map its source address and
* community string to a security name for us.
*/
if (0) {
#ifdef NETSNMP_TRANSPORT_UDP_DOMAIN
} else if (pdu->tDomain == netsnmpUDPDomain
#ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
|| pdu->tDomain == netsnmp_snmpTCPDomain
#endif
) {
if (!netsnmp_udp_getSecName(pdu->transport_data,
pdu->transport_data_length,
pdu_community,
pdu->community_len, &sn,
&contextName)) {
/*
* There are no com2sec entries.
*/
sn = NULL;
}
/* force the community -> context name mapping here */
SNMP_FREE(pdu->contextName);
pdu->contextName = strdup(contextName);
pdu->contextNameLen = strlen(contextName);
#endif
#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
} else if (pdu->tDomain == netsnmp_UDPIPv6Domain
#ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
|| pdu->tDomain == netsnmp_TCPIPv6Domain
#endif
) {
if (!netsnmp_udp6_getSecName(pdu->transport_data,
pdu->transport_data_length,
pdu_community,
pdu->community_len, &sn,
&contextName)) {
/*
* There are no com2sec entries.
*/
sn = NULL;
}
/* force the community -> context name mapping here */
SNMP_FREE(pdu->contextName);
pdu->contextName = strdup(contextName);
pdu->contextNameLen = strlen(contextName);
#endif
#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
//.........这里部分代码省略.........
示例12: usm_parse_create_usmUser
//.........这里部分代码省略.........
privKeyLen = 16;
}
#endif
if (testcase == 0) {
config_perror("Unknown privacy protocol");
usm_free_user(newuser);
return;
}
cp = skip_token(cp);
/*
* READ: Encryption Pass Phrase or key
*/
if (!cp) {
/*
* assume the same as the authentication key
*/
memdup(&newuser->privKey, newuser->authKey, newuser->authKeyLen);
newuser->privKeyLen = newuser->authKeyLen;
} else {
cp = copy_nword(cp, buf, sizeof(buf));
if (strcmp(buf,"-m") == 0) {
/* a master key is specified */
cp = copy_nword(cp, buf, sizeof(buf));
ret = sizeof(userKey);
tmpp = userKey;
userKeyLen = 0;
if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
config_perror("invalid key value argument to -m");
usm_free_user(newuser);
return;
}
} else if (strcmp(buf,"-l") != 0) {
/* a password is specified */
userKeyLen = sizeof(userKey);
ret = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
(u_char *) buf, strlen(buf), userKey, &userKeyLen);
if (ret != SNMPERR_SUCCESS) {
config_perror("could not generate the privacy key from the "
"suppiled pass phrase.");
usm_free_user(newuser);
return;
}
}
/*
* And turn it into a localized key
*/
ret =
sc_get_properlength(newuser->authProtocol,
newuser->authProtocolLen);
if (ret < 0) {
config_perror("could not get proper key length to use for the "
"privacy algorithm.");
usm_free_user(newuser);
return;
}
newuser->privKey = (u_char *) malloc(ret);
if (strcmp(buf,"-l") == 0) {
/* a local key is directly specified */
cp = copy_nword(cp, buf, sizeof(buf));
newuser->privKeyLen = 0;
if (!snmp_hex_to_binary(&newuser->privKey, &ret,
&newuser->privKeyLen, 0, buf)) {
config_perror("invalid key value argument to -l");
usm_free_user(newuser);
return;
}
} else {
newuser->privKeyLen = ret;
ret = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
newuser->engineID, newuser->engineIDLen,
userKey, userKeyLen,
newuser->privKey, &newuser->privKeyLen);
if (ret != SNMPERR_SUCCESS) {
config_perror("could not generate localized privacy key "
"(Kul) from the master key (Ku).");
usm_free_user(newuser);
return;
}
}
}
if ((newuser->privKeyLen >= privKeyLen) || (privKeyLen == 0)){
newuser->privKeyLen = privKeyLen;
}
else {
/* The privKey length is smaller than required by privProtocol */
usm_free_user(newuser);
return;
}
add:
usm_add_user(newuser);
DEBUGMSGTL(("usmUser", "created a new user %s at ", newuser->secName));
DEBUGMSGHEX(("usmUser", newuser->engineID, newuser->engineIDLen));
DEBUGMSG(("usmUser", "\n"));
}
示例13: var_tunnelConfigEntry
unsigned char *
var_tunnelConfigEntry(struct variable *vp,
oid * name, size_t * length,
int exact, size_t * var_len,
WriteMethod ** write_method)
{
static long ret_int;
struct tunnel *tunnel;
int i;
DEBUGMSGTL(("tunnel", "var_tunnelConfigEntry: "));
DEBUGMSGOID(("tunnel", name, *length));
DEBUGMSG(("tunnel", " %d\n", exact));
updateTunnels();
if (exact) {
if (*length != tunnel_len + 3 + 4 + 4 + 1 + 1) {
return NULL;
}
tunnel = getTunnelByConfigOid(name, length);
} else {
if (snmp_oid_compare(name, *length,
tunnel_configEntry_oid,
tunnel_configEntry_len) < 0) {
*length = 0;
}
if ((*length) < tunnel_len) {
memcpy((char *) name, (char *) tunnel_variables_oid,
tunnel_len * sizeof(oid));
}
if ((*length) < tunnel_len + 1) {
name[tunnel_len] = 2;
}
if ((*length) < tunnel_len + 2) {
name[tunnel_len + 1] = 1;
}
if ((*length) < tunnel_len + 3) {
name[tunnel_len + 2] = 5;
}
for (i = MAX(*length, tunnel_len + 3);
i < tunnel_len + 3 + 4 + 4 + 1 + 1; i++) {
name[i] = 0;
}
*length = tunnel_len + 3 + 4 + 4 + 1 + 1;
tunnel = getNextTunnelByConfigOid(name, length);
if (!tunnel) {
/*
* end of column, continue with first row of next column
*/
tunnel = tunnels;
name[tunnel_len + 2]++;
if (name[tunnel_len + 2] > 6) {
/*
* there is no next column
*/
return NULL;
}
if (!tunnel) {
/*
* there is no (next) row
*/
return NULL;
}
}
}
if (!tunnel) {
return NULL;
}
fillConfigOid(&name[tunnel_len + 3], tunnel);
DEBUGMSGTL(("tunnel", "var_tunnelConfigEntry: using "));
DEBUGMSGOID(("tunnel", name, *length));
DEBUGMSG(("tunnel", "\n"));
switch (name[tunnel_len + 2]) {
case 5: /* tunnelConfigIfIndex */
ret_int = tunnel->ifindex;
*var_len = sizeof(ret_int);
vp->type = ASN_INTEGER;
return (u_char *) & ret_int;
case 6: /* tunnelConfigStatus */
ret_int = 1; /* active */
*var_len = sizeof(ret_int);
vp->type = ASN_INTEGER;
return (u_char *) & ret_int;
default:
return 0;
}
return NULL;
}
示例14: var_tunnelIfEntry
unsigned char *
var_tunnelIfEntry(struct variable *vp,
oid * name, size_t * length,
int exact, size_t * var_len, WriteMethod ** write_method)
{
static unsigned long ret_addr;
static long ret_int;
struct tunnel *tunnel;
DEBUGMSGTL(("tunnel", "var_tunnelIfEntry: "));
DEBUGMSGOID(("tunnel", name, *length));
DEBUGMSG(("tunnel", " %d\n", exact));
updateTunnels();
if (exact) {
if (*length != tunnel_len + 3 + 1) {
return NULL;
}
tunnel = getTunnelByIfIndex((int) name[*length - 1]);
} else {
if ((*length) < tunnel_len) {
memcpy((char *) name, (char *) tunnel_variables_oid,
tunnel_len * sizeof(oid));
}
if ((*length) < tunnel_len + 1) {
name[tunnel_len] = 1;
}
if ((*length) < tunnel_len + 2) {
name[tunnel_len + 1] = 1;
}
if ((*length) < tunnel_len + 3) {
name[tunnel_len + 2] = 1;
}
if ((*length) < tunnel_len + 4) {
name[tunnel_len + 3] = 0;
}
*length = tunnel_len + 4;
tunnel = getNextTunnelByIfIndex(name[*length - 1]);
if (!tunnel) {
/*
* end of column, continue with first row of next column
*/
tunnel = tunnels;
name[tunnel_len + 2]++;
if (name[tunnel_len + 2] > 6) {
/*
* there is no next column
*/
return NULL;
}
if (!tunnel) {
/*
* there is no (next) row
*/
return NULL;
}
}
}
if (!tunnel) {
return NULL;
}
name[*length - 1] = tunnel->ifindex;
DEBUGMSGTL(("tunnel", "var_tunnelIfEntry: using"));
DEBUGMSGOID(("tunnel", name, *length));
DEBUGMSG(("tunnel", "\n"));
switch (name[tunnel_len + 2]) {
case 1: /* tunnelIfLocalAddress */
ret_addr = tunnel->local;
*var_len = 4;
vp->type = ASN_IPADDRESS;
*write_method = writeLocalAddress;
return (u_char *) & ret_addr;
case 2: /* tunnelIfRemoteAddress */
ret_addr = tunnel->remote;
*var_len = 4;
vp->type = ASN_IPADDRESS;
*write_method = writeRemoteAddress;
return (u_char *) & ret_addr;
case 3: /* tunnelIfEncapsMethod */
ret_int = tunnel->encaps;
*var_len = sizeof(ret_int);
vp->type = ASN_INTEGER;
return (u_char *) & ret_int;
case 4: /* tunnelIfHopLimit */
ret_int = tunnel->hoplimit;
*var_len = sizeof(ret_int);
vp->type = ASN_INTEGER;
*write_method = writeHopLimit;
return (u_char *) & ret_int;
case 5: /* tunnelIfSecurity */
ret_int = tunnel->security;
*var_len = sizeof(ret_int);
vp->type = ASN_INTEGER;
return (u_char *) & ret_int;
//.........这里部分代码省略.........
示例15: initialize_table_openserSIPStatusCodesTable
/*
* Initialize the openserSIPStatusCodesTable table by defining how it is
* structured.
*
* This function is mostly auto-generated.
*/
void initialize_table_openserSIPStatusCodesTable(void)
{
netsnmp_table_registration_info *table_info;
if(my_handler) {
snmp_log(LOG_ERR, "initialize_table_openserSIPStatusCodes"
"Table_handler called again\n");
return;
}
memset(&cb, 0x00, sizeof(cb));
/** create the table structure itself */
table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
my_handler = netsnmp_create_handler_registration(
"openserSIPStatusCodesTable",
netsnmp_table_array_helper_handler,
openserSIPStatusCodesTable_oid,
openserSIPStatusCodesTable_oid_len,
HANDLER_CAN_RWRITE);
if (!my_handler || !table_info) {
snmp_log(LOG_ERR, "malloc failed in initialize_table_openserSIP"
"StatusCodesTable_handler\n");
return; /** mallocs failed */
}
/** index: openserSIPStatusCodeMethod */
netsnmp_table_helper_add_index(table_info, ASN_UNSIGNED);
/** index: openserSIPStatusCodeValue */
netsnmp_table_helper_add_index(table_info, ASN_UNSIGNED);
table_info->min_column = openserSIPStatusCodesTable_COL_MIN;
table_info->max_column = openserSIPStatusCodesTable_COL_MAX;
/***************************************************
* registering the table with the master agent
*/
cb.get_value = openserSIPStatusCodesTable_get_value;
cb.container =
netsnmp_container_find("openserSIPStatusCodesTable_primary:"
"openserSIPStatusCodesTable:"
"table_container");
#ifdef openserSIPStatusCodesTable_CUSTOM_SORT
netsnmp_container_add_index(cb.container,
netsnmp_container_find(
"openserSIPStatusCodesTable_custom:"
"openserSIPStatusCodesTable:"
"table_container"));
cb.container->next->compare = openserSIPStatusCodesTable_cmp;
#endif
cb.can_set = 1;
cb.create_row =
(UserRowMethod*)openserSIPStatusCodesTable_create_row;
cb.duplicate_row =
(UserRowMethod*)openserSIPStatusCodesTable_duplicate_row;
cb.delete_row =
(UserRowMethod*)openserSIPStatusCodesTable_delete_row;
cb.row_copy = (Netsnmp_User_Row_Operation *)
openserSIPStatusCodesTable_row_copy;
cb.can_activate = (Netsnmp_User_Row_Action *)
openserSIPStatusCodesTable_can_activate;
cb.can_deactivate = (Netsnmp_User_Row_Action *)
openserSIPStatusCodesTable_can_deactivate;
cb.can_delete =
(Netsnmp_User_Row_Action *)openserSIPStatusCodesTable_can_delete;
cb.set_reserve1 = openserSIPStatusCodesTable_set_reserve1;
cb.set_reserve2 = openserSIPStatusCodesTable_set_reserve2;
cb.set_action = openserSIPStatusCodesTable_set_action;
cb.set_commit = openserSIPStatusCodesTable_set_commit;
cb.set_free = openserSIPStatusCodesTable_set_free;
cb.set_undo = openserSIPStatusCodesTable_set_undo;
DEBUGMSGTL(("initialize_table_openserSIPStatusCodesTable",
"Registering table openserSIPStatusCodesTable "
"as a table array\n"));
netsnmp_table_container_register(my_handler, table_info, &cb,
cb.container, 1);
}