Как установить ipv6-адрес с помощью java-клиента Snmp4J, используя oid?

#java #snmp #snmp4j

#java #snmp #snmp4j

Вопрос:

Как установить Ipv6-адрес с помощью snmp4j с java-клиентом? Я могу установить IP-адрес ipv4 с помощью snmp4j. Ниже приведен снимок кода для установки ipv4-адреса с помощью snmp4j. Я использую тот же метод для ipv6, но он не дает надлежащих результатов. Если я передаю ipv6-адрес, то есть «20xx: 04xx: 00xx: 40xx: 0000: XXXX:00xx». Тогда устанавливаемое значение равно xx.xx.xx.xx.00.xx.xx. Он просто удаляет первые две цифры из каждого октета. Как и из 20xx, он удаляет 20, и таким же образом это делается для всех.

 PDU pdu = SnmpSession.getPDU(OID_TO_SET_TFTPSERVER_IPADDRESS, "oa:be:09:ef"); //ipv4 address 
enter code here in hexa decimal format
SnmpSession.sendWrite(pdu, target);

public static PDU getPDU(String str , Object value ) {
    OID oid = new OID(str);
    final PDU pdu = new PDU();
    pdu.setType(PDU.SET);
    Variable var = null;
    try {
        var = SnmpTypeConverter.mapHexStringToVariable(value);
        
    } catch (Exception e) {
        logger.info(e.getMessage(), e);
    }
    pdu.add(new VariableBinding(oid, var));
    return pdu;
    
}

public static Variable mapHexStringToVariable(Object value) {
    String str = (String)value;
    Variable vb =  OctetString.fromHexString( str);
    return vb;
}

public static boolean sendWrite(final PDU pdu, Target mWriteTarget) throws InterruptedException, SnmpException {
    boolean isSetUP = true;
    try {
        Snmp mSnmp = new Snmp(new DefaultUdpTransportMapping());
        mSnmp.listen();
        final ResponseEvent responseEvt = mSnmp.send(pdu, mWriteTarget);
        if (Thread.currentThread().isInterrupted()) {
            throw new InterruptedException("SNMP write interupted");
        }

        final PDU response = responseEvt.getResponse();
        
        if (response != null) {
            if (response.getErrorStatus() != SnmpConstants.SNMP_ERROR_SUCCESS) {
                isSetUP = false;
            logger.info("Agent error code: "   response.getErrorStatus()   " - "
                      response.getErrorStatusText()   " - "   response.getVariableBindings().toString());
            throw new SnmpException("Agent error code: "
                      response.getErrorStatus()   " - "
                      response.getErrorStatusText()   " - "
                      response.getVariableBindings().toString());
        }

        if (response.getType() == PDU.REPORT) {
            final VariableBinding bind = response.get(0);
                logger.info("Report recieved: "   bind.toString());
        }
        return isSetUP;
    }
    } catch (final IOException ex) {
        logger.info(ex.getMessage(), ex);
        logger.info("Error While setting the value");
    }
    return isSetUP;
}