Exemplo n.º 1
0
    def sendReq(self,
                snmpEngine,
                addrName,
                nonRepeaters,
                maxRepetitions,
                varBinds,
                cbFun,
                cbCtx=None,
                contextEngineId=None,
                contextName=''):
        (transportDomain, transportAddress, timeout, retryCount,
         messageProcessingModel, securityModel, securityName,
         securityLevel) = config.getTargetInfo(snmpEngine, addrName)

        pduVersion, pMod = getVersionSpecifics(messageProcessingModel)

        if not hasattr(pMod, 'GetBulkRequestPDU'):
            raise error.ProtocolError('BULK PDU not implemented at %s' % pMod)
        reqPDU = pMod.GetBulkRequestPDU()
        pMod.apiBulkPDU.setDefaults(reqPDU)

        pMod.apiBulkPDU.setNonRepeaters(reqPDU, nonRepeaters)
        pMod.apiBulkPDU.setMaxRepetitions(reqPDU, maxRepetitions)

        pMod.apiBulkPDU.setVarBinds(reqPDU, varBinds)

        requestHandle = getNextHandle()

        self._sendPdu(snmpEngine, transportDomain, transportAddress,
                      messageProcessingModel, securityModel, securityName,
                      securityLevel, contextEngineId, contextName, pduVersion,
                      reqPDU, timeout, retryCount, 0, requestHandle,
                      (self.processResponsePdu, (cbFun, cbCtx)))

        return requestHandle
Exemplo n.º 2
0
    def sendReq(self,
                snmpEngine,
                addrName,
                varBinds,
                cbFun,
                cbCtx=None,
                contextEngineId=None,
                contextName=''):
        (transportDomain, transportAddress, timeout, retryCount,
         messageProcessingModel, securityModel, securityName,
         securityLevel) = config.getTargetInfo(snmpEngine, addrName)

        pduVersion, pMod = getVersionSpecifics(messageProcessingModel)

        reqPDU = pMod.GetNextRequestPDU()
        pMod.apiPDU.setDefaults(reqPDU)

        pMod.apiPDU.setVarBinds(reqPDU, varBinds)

        requestHandle = getNextHandle()

        self._sendPdu(snmpEngine, transportDomain, transportAddress,
                      messageProcessingModel, securityModel, securityName,
                      securityLevel, contextEngineId, contextName, pduVersion,
                      reqPDU, timeout, retryCount, 0, requestHandle,
                      (self.processResponsePdu, (cbFun, cbCtx)))

        return requestHandle
Exemplo n.º 3
0
    def sendReq(
        self,
        snmpEngine,
        addrName,
        nonRepeaters,
        maxRepetitions,
        varBinds,
        cbFun,
        cbCtx=None,
        contextEngineId=None,
        contextName=null,
    ):
        (
            transportDomain,
            transportAddress,
            timeout,
            retryCount,
            messageProcessingModel,
            securityModel,
            securityName,
            securityLevel,
        ) = config.getTargetInfo(snmpEngine, addrName)

        pduVersion, pMod = getVersionSpecifics(messageProcessingModel)

        if not hasattr(pMod, "GetBulkRequestPDU"):
            raise error.PySnmpError("BULK PDU not implemented at %s" % pMod)
        reqPDU = pMod.GetBulkRequestPDU()
        pMod.apiBulkPDU.setDefaults(reqPDU)

        pMod.apiBulkPDU.setNonRepeaters(reqPDU, nonRepeaters)
        pMod.apiBulkPDU.setMaxRepetitions(reqPDU, maxRepetitions)

        pMod.apiBulkPDU.setVarBinds(reqPDU, varBinds)

        requestHandle = getNextHandle()

        self._sendPdu(
            snmpEngine,
            transportDomain,
            transportAddress,
            messageProcessingModel,
            securityModel,
            securityName,
            securityLevel,
            contextEngineId,
            contextName,
            pduVersion,
            reqPDU,
            timeout,
            retryCount,
            0,
            requestHandle,
            (self.processResponsePdu, (cbFun, cbCtx)),
        )

        return requestHandle
Exemplo n.º 4
0
    def sendPdu(self, snmpEngine, targetName, contextEngineId,
                contextName, PDU, cbFun, cbCtx):
        (transportDomain, transportAddress, timeout,
         retryCount, messageProcessingModel, securityModel,
         securityName,
         securityLevel) = config.getTargetInfo(snmpEngine, targetName)

        # Convert timeout in seconds into timeout in timer ticks
        timeoutInTicks = (float(timeout) / 100 /
                          snmpEngine.transportDispatcher.getTimerResolution())

        mibBuilder = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder

        SnmpEngineID, SnmpAdminString = mibBuilder.importSymbols(
            'SNMP-FRAMEWORK-MIB', 'SnmpEngineID', 'SnmpAdminString')

        # Cast possible strings into bytes
        if contextEngineId:
            contextEngineId = SnmpEngineID(contextEngineId)

        contextName = SnmpAdminString(contextName)

        origPDU = PDU

        # User-side API assumes SMIv2
        if messageProcessingModel == 0:
            PDU = rfc2576.v2ToV1(PDU)
            pduVersion = 0

        else:
            pduVersion = 1

        sendRequestHandle = getNextHandle()

        # 3.1
        sendPduHandle = snmpEngine.msgAndPduDsp.sendPdu(
            snmpEngine, transportDomain, transportAddress,
            messageProcessingModel, securityModel, securityName,
            securityLevel, contextEngineId, contextName,
            pduVersion, PDU, True, timeoutInTicks, self.processResponsePdu,
            (sendRequestHandle, cbFun, cbCtx)
        )

        snmpEngine.transportDispatcher.jobStarted(id(self))

        self.__pendingReqs[sendPduHandle] = (
            transportDomain, transportAddress, messageProcessingModel,
            securityModel, securityName, securityLevel, contextEngineId,
            contextName, pduVersion, origPDU, timeoutInTicks,
            retryCount, 0, 0
        )

        debug.logger & debug.FLAG_APP and debug.logger(
            'sendPdu: sendPduHandle %s, timeout %d*10 ms/%d ticks, retry '
            '0 of %d' % (sendPduHandle, timeout, timeoutInTicks, retryCount))

        return sendRequestHandle
    def sendReq(
        self,
        snmpEngine,
        addrName,
        nonRepeaters,
        maxRepetitions,
        varBinds,
        cbFun,
        cbCtx=None,
        contextEngineId=None,
        contextName=''
        ):
        ( transportDomain,
          transportAddress,
          timeout,
          retryCount,
          messageProcessingModel,
          securityModel,
          securityName,
          securityLevel ) = config.getTargetInfo(snmpEngine, addrName)

        reqPDU = v2c.GetBulkRequestPDU()
        v2c.apiBulkPDU.setDefaults(reqPDU)
        
        v2c.apiBulkPDU.setNonRepeaters(reqPDU, nonRepeaters)
        v2c.apiBulkPDU.setMaxRepetitions(reqPDU, maxRepetitions)

        v2c.apiBulkPDU.setVarBinds(reqPDU, varBinds)

        requestHandle = getNextHandle()        

        try:        
            self._sendPdu(
                snmpEngine,
                transportDomain,
                transportAddress,
                messageProcessingModel,
                securityModel,
                securityName,
                securityLevel,
                contextEngineId,
                contextName,
                reqPDU,
                timeout,
                retryCount,
                0, # retries
                requestHandle,
                (self.processResponsePdu, (cbFun, cbCtx))            
            )
        except StatusInformation:
            statusInformation = sys.exc_info()[1]
            debug.logger & debug.flagApp and debug.logger('sendReq: sendPduHandle %s: _sendPdu() failed with %r' % (requestHandle, statusInformation))
            cbFun(requestHandle, statusInformation['errorIndication'],
                  0, 0, (), cbCtx)

        return requestHandle
Exemplo n.º 6
0
    def sendPdu(self, snmpEngine, targetName, contextEngineId, contextName,
                PDU, cbFun, cbCtx):
        (transportDomain, transportAddress, timeout, retryCount,
         messageProcessingModel, securityModel, securityName,
         securityLevel) = config.getTargetInfo(snmpEngine, targetName)

        # Convert timeout in seconds into timeout in timer ticks
        timeoutInTicks = (float(timeout) / 100 /
                          snmpEngine.transportDispatcher.getTimerResolution())

        mibBuilder = snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder

        SnmpEngineID, SnmpAdminString = mibBuilder.importSymbols(
            'SNMP-FRAMEWORK-MIB', 'SnmpEngineID', 'SnmpAdminString')

        # Cast possible strings into bytes
        if contextEngineId:
            contextEngineId = SnmpEngineID(contextEngineId)

        contextName = SnmpAdminString(contextName)

        origPDU = PDU

        # User-side API assumes SMIv2
        if messageProcessingModel == 0:
            PDU = rfc2576.v2ToV1(PDU)
            pduVersion = 0

        else:
            pduVersion = 1

        sendRequestHandle = getNextHandle()

        # 3.1
        sendPduHandle = snmpEngine.msgAndPduDsp.sendPdu(
            snmpEngine, transportDomain, transportAddress,
            messageProcessingModel, securityModel, securityName, securityLevel,
            contextEngineId, contextName, pduVersion, PDU, True,
            timeoutInTicks, self.processResponsePdu,
            (sendRequestHandle, cbFun, cbCtx))

        snmpEngine.transportDispatcher.jobStarted(id(self))

        self.__pendingReqs[sendPduHandle] = (transportDomain, transportAddress,
                                             messageProcessingModel,
                                             securityModel, securityName,
                                             securityLevel, contextEngineId,
                                             contextName, pduVersion, origPDU,
                                             timeoutInTicks, retryCount, 0, 0)

        debug.logger & debug.FLAG_APP and debug.logger(
            'sendPdu: sendPduHandle %s, timeout %d*10 ms/%d ticks, retry '
            '0 of %d' % (sendPduHandle, timeout, timeoutInTicks, retryCount))

        return sendRequestHandle
Exemplo n.º 7
0
    def sendReq(
        self,
        snmpEngine,
        addrName,
        varBinds,
        cbFun,
        cbCtx=None,
        contextEngineId=None,
        contextName=''
        ):
        ( transportDomain,
          transportAddress,
          timeout,
          retryCount,
          messageProcessingModel,
          securityModel,
          securityName,
          securityLevel ) = config.getTargetInfo(snmpEngine, addrName)

        pduVersion, pMod = getVersionSpecifics(messageProcessingModel)
        
        reqPDU = pMod.SetRequestPDU()
        pMod.apiPDU.setDefaults(reqPDU)

        pMod.apiPDU.setVarBinds(reqPDU, varBinds)

        # User-side API assumes SMIv2
        if messageProcessingModel == 0:
            reqPDU = rfc2576.v2ToV1(reqPDU)
            pMod = api.protoModules[api.protoVersion1]

        requestHandle = getNextHandle()        
        
        self._sendPdu(
            snmpEngine,
            transportDomain,
            transportAddress,
            messageProcessingModel,
            securityModel,
            securityName,
            securityLevel,
            contextEngineId,
            contextName,
            pduVersion,
            reqPDU,
            timeout,
            retryCount,
            0,
            requestHandle,
            (self.processResponsePdu, (cbFun, cbCtx))            
            )

        return requestHandle
Exemplo n.º 8
0
    def sendReq(self,
                snmpEngine,
                addrName,
                nonRepeaters,
                maxRepetitions,
                varBinds,
                cbFun,
                cbCtx=None,
                contextEngineId=None,
                contextName=''):
        (transportDomain, transportAddress, timeout, retryCount,
         messageProcessingModel, securityModel, securityName,
         securityLevel) = config.getTargetInfo(snmpEngine, addrName)

        reqPDU = v2c.GetBulkRequestPDU()
        v2c.apiBulkPDU.setDefaults(reqPDU)

        v2c.apiBulkPDU.setNonRepeaters(reqPDU, nonRepeaters)
        v2c.apiBulkPDU.setMaxRepetitions(reqPDU, maxRepetitions)

        v2c.apiBulkPDU.setVarBinds(reqPDU, varBinds)

        sendRequestHandle = getNextHandle()

        try:
            self._sendPdu(
                snmpEngine,
                transportDomain,
                transportAddress,
                messageProcessingModel,
                securityModel,
                securityName,
                securityLevel,
                contextEngineId,
                contextName,
                reqPDU,
                timeout,
                retryCount,
                0,  # retries
                sendRequestHandle,
                (self.processResponsePdu, (cbFun, cbCtx)))
        except StatusInformation:
            statusInformation = sys.exc_info()[1]
            debug.logger & debug.flagApp and debug.logger(
                'sendReq: sendPduHandle %s: _sendPdu() failed with %r' %
                (sendRequestHandle, statusInformation))
            cbFun(sendRequestHandle, statusInformation['errorIndication'], 0,
                  0, (), cbCtx)

        return sendRequestHandle
Exemplo n.º 9
0
    def sendReq(self, snmpEngine, addrName, varBinds, cbFun, cbCtx=None, contextEngineId=None, contextName=null):
        (
            transportDomain,
            transportAddress,
            timeout,
            retryCount,
            messageProcessingModel,
            securityModel,
            securityName,
            securityLevel,
        ) = config.getTargetInfo(snmpEngine, addrName)

        pduVersion, pMod = getVersionSpecifics(messageProcessingModel)

        reqPDU = pMod.GetNextRequestPDU()
        pMod.apiPDU.setDefaults(reqPDU)

        pMod.apiPDU.setVarBinds(reqPDU, varBinds)

        requestHandle = getNextHandle()

        self._sendPdu(
            snmpEngine,
            transportDomain,
            transportAddress,
            messageProcessingModel,
            securityModel,
            securityName,
            securityLevel,
            contextEngineId,
            contextName,
            pduVersion,
            reqPDU,
            timeout,
            retryCount,
            0,
            requestHandle,
            (self.processResponsePdu, (cbFun, cbCtx)),
        )

        return requestHandle