std::string SNMPObject::getSyntaxAsString() const { static char * _syntaxStrMap[12] = { "Integer", "Octets", "Opaque", "Bits", "Counter64", "Counter32", "Gauge32", "UnsignedInteger32", "TimeTicks", "ObjectIdentifier", "IPAddr", "Null" }; return _syntaxStrMap[getSyntax()]; }
static int parseSelect(char *resReq, struct resVal *resVal, struct lsInfo *lsInfo, bool_t parseXor, int options) { static char fname[] = "parseSelect"; int cc; enum syntaxType syntax; char *expr, *countPtr; int i, numXorExprs; struct resVal tmpResVal; char *resReq2 = NULL; if (logclass & (LC_TRACE | LC_SCHED)) ls_syslog(LOG_DEBUG3, "%s: resReq=%s", fname, resReq); if (parseXor && resReq[0] != '\0') { countPtr = (char *)malloc(strlen(resReq)+1); if (countPtr == NULL) { return(PARSE_BAD_MEM); } strcpy(countPtr, resReq); expr = strtok(countPtr, ","); if (expr == NULL) { numXorExprs = 0; } else { numXorExprs = 1; while (strtok(NULL, ",")) { numXorExprs++; } } free(countPtr); if (logclass & (LC_TRACE |LC_SCHED)) ls_syslog(LOG_DEBUG3,"%s: numXorExprs = %d", fname, numXorExprs); if (numXorExprs > 1) { resVal->xorExprs = (char **)calloc(numXorExprs + 1, sizeof(char*)); if (resVal->xorExprs == NULL) return(PARSE_BAD_MEM); resReq2 = (char *)malloc(strlen(resReq) + numXorExprs * 4 - 1); if ( resReq2== NULL) return (PARSE_BAD_MEM); resReq2[0] = '\0'; expr = strtok(resReq, ","); for ( i =0 ; i < numXorExprs; i++) { initResVal(&tmpResVal); ALLOC_STRING(tmpResVal.selectStr, tmpResVal.selectStrSize, MAX(3*strlen(expr) + 1, MAXLINELEN + MAXLSFNAMELEN)); if (tmpResVal.selectStr == NULL) { FREEUP(resReq2); return PARSE_BAD_MEM; } if (setDefaults(&tmpResVal, lsInfo, options) < 0) { FREEUP(resReq2); return (PARSE_BAD_MEM); } if ((cc = parseSelect(expr, &tmpResVal, lsInfo, FALSE, options)) != PARSE_OK) { for (i--;i>=0; i--) { FREEUP(resVal->xorExprs[i]); } FREEUP(resReq2); return cc; } resVal->xorExprs[i] = (char *)calloc(strlen(tmpResVal.selectStr) + 1, sizeof(char)); if (resVal->xorExprs[i] == NULL) return (PARSE_BAD_MEM); strcpy(resVal->xorExprs[i], tmpResVal.selectStr); if (logclass & (LC_TRACE | LC_SCHED)) ls_syslog(LOG_DEBUG3,"%s: xorExprs[%d] = %s", fname, i, resVal->xorExprs[i]); if (i == 0 ) { sprintf(resReq2, "(%s)", expr); } else { sprintf(resReq2, "%s||(%s)", resReq2, expr); } freeResVal(&tmpResVal); expr = strtok(NULL, ","); } resVal->xorExprs[i] = NULL; if (logclass & (LC_TRACE | LC_SCHED)) ls_syslog(LOG_DEBUG3,"%s: new selectStr=%s", fname, resReq2); resReq = resReq2; } else { if (numXorExprs == 1) { if (strchr(resReq,',')) { return(PARSE_BAD_EXP); } } else { return(PARSE_BAD_EXP); } } } syntax = getSyntax(resReq); switch(syntax) { case OLD: if ((cc =resToClassOld(resReq, resVal, lsInfo)) != PARSE_OK) { resVal->selectStr[0] = '\0'; FREEUP(resReq2); return cc; } break; case NEW: if ((cc =resToClassNew(resReq, resVal, lsInfo)) != PARSE_OK) { resVal->selectStr[0] = '\0'; FREEUP(resReq2); return cc; } break; case EITHER: if ((cc =resToClassOld(resReq, resVal, lsInfo)) != PARSE_OK) { if (cc == PARSE_BAD_NAME || cc == PARSE_BAD_VAL) { resVal->selectStr[0] = '\0'; FREEUP(resReq2); return cc; } if ( (cc =resToClassNew(resReq, resVal, lsInfo)) != PARSE_OK) { resVal->selectStr[0] = '\0'; FREEUP(resReq2); return cc; } } break; default: FREEUP(resReq2); return PARSE_BAD_EXP; } FREEUP(resReq2); return PARSE_OK; }
bool isSameSyntax(const Index &other) const { return getSyntax() == other.getSyntax(); }