[SNMP4J] table

Afnan Chowdhury afnan.chowdhury at gmail.com
Sun Oct 16 13:54:42 CEST 2005


Hi,

thanks Frank for sorting my previous problems. Now I am testing snmp
table with my router to get IP Routing table but the program runs
endless with no result. Could you please highlight where I am getting
worng. I have just add one column to the table request. Following is
the code:

Thanks in advance

Regards
afnan



public class SNMPTable  {
    Address targetAddress;
    AbstractTransportMapping transport;
    int maxRepetitions = 10;
    OID lowerBoundIndex = new OID("1.3.6.1.2.1.4.21.1");
    OID upperBoundIndex = new OID("1.3.6.1.2.1.4.21.1.1");
    public SNMPTable() throws IOException {
        Snmp snmp = createSnmpSession();
        CommunityTarget target = new CommunityTarget();
        //this.target = createTarget();
        target.setCommunity(new OctetString("public"));
            target.setAddress(targetAddress);
            target.setRetries(2);
            target.setTimeout(1000);
            target.setVersion(SnmpConstants.version2c);

        snmp.listen();
        PDUFactory pF = new DefaultPDUFactory (PDU.GETNEXT);
        TableUtils tableUtils = new TableUtils(snmp, pF);
        tableUtils.setMaxNumRowsPerPDU(maxRepetitions);
        Counter32 counter = new Counter32();
        eV.setOid
        OID[] columns = new OID[1];
        for (int i = 0; i < columns.length; i++) {
            columns[i] = new VariableBinding(new OID
("1.3.6.1.2.1.4.21.1.1")).getOid();
        }
        long startTime = System.currentTimeMillis();
        synchronized (counter) {

            TableListener listener;
           listener = new TextTableListener();
           tableUtils.getTable(target, columns, listener,
counter,lowerBoundIndex, upperBoundIndex);
           try {
                counter.wait();
            } catch (InterruptedException ex) {
            }
        }
        System.out.println("Table received in " +
                           (System.currentTimeMillis() - startTime) +
                           " milliseconds.");
        snmp.close();
    }

    private Snmp createSnmpSession() throws IOException {
      if (targetAddress instanceof TcpAddress) {
        transport = new DefaultTcpTransportMapping();
      }
      else {
        transport = new DefaultUdpTransportMapping();
      }
      Snmp snmp =  new Snmp(transport);
      return snmp;
  }
  private String addressProcess(InetAddress address, String
transportProcess, int portNumber){
        //confused check please
        String transportAddress = transportProcess + ":" +
address.getHostAddress() + "/" + portNumber;
        return transportAddress;
    }

    private Address getAddress(String transportAddress) {
        String transport = "udp";
        int colon = transportAddress.indexOf(':');
        if (colon > 0) {
            transport = transportAddress.substring(0, colon);
            transportAddress = transportAddress.substring(colon+1);
        }
        // set default port
        if (transportAddress.indexOf('/') < 0) {
            transportAddress += "/161";
        }
        if (transport.equalsIgnoreCase("udp")) {
            return new UdpAddress(transportAddress);
        }
        else if (transport.equalsIgnoreCase("tcp")) {
            return new TcpAddress(transportAddress);
        }
        throw new IllegalArgumentException("Unknown transport "+transport);
    }





    class TextTableListener implements TableListener {

        public void finished(TableEvent event) {
            System.out.println();
            System.out.println("Table walk completed with status " +
                               event.getStatus() +
                               ". Received " +
                               event.getUserObject() + " rows.");
            synchronized (event.getUserObject()) {
                event.getUserObject().notify();
            }
        }

        public boolean next(TableEvent event) {
            System.out.println("Index = " + event.getIndex() + ":");
            for (int i = 0; i < event.getColumns().length; i++) {
                System.out.println(event.getColumns()[i]);
            }
            System.out.println();
            ((Counter32) event.getUserObject()).increment();
            return true;
        }

    }
}



More information about the SNMP4J mailing list