public void addLocalRoutes(InternetKnoten knoten) { NetzwerkInterface nic; long netMask, netAddr; ListIterator it = knoten.getNetzwerkInterfaces().listIterator(); while (it.hasNext()) { nic = (NetzwerkInterface) it.next(); netMask = IP.inetAton(nic.getSubnetzMaske()); netAddr = IP.inetAton(nic.getIp()) & netMask; addRoute( new RIPRoute( 0, IP.inetNtoa(netAddr), IP.inetNtoa(netMask), nic.getIp(), bs.holeIPAdresse(), nic.getIp(), 0)); } }
/** * Methode fuer den Zugriff auf die Weiterleitungstabelle bestehend aus automatisch erzeugten und * manuellen Eintraegen */ public LinkedList<String[]> holeTabelle() { Main.debug.println( "INVOKED (" + this.hashCode() + ") " + getClass() + " (Weiterleitungstabelle), holeTabelle()"); InternetKnoten knoten; NetzwerkInterface nic = null; String gateway; ListIterator it; LinkedList<String[]> tabelle; String[] tmp = new String[4]; tabelle = new LinkedList<String[]>(manuelleTabelle); manuelleEintraege = new LinkedList<Boolean>(); for (int i = 0; i < tabelle.size(); i++) manuelleEintraege.add(new Boolean(true)); if (firmware != null) { // Eintrag fuer 'localhost' tmp = new String[4]; tmp[0] = "127.0.0.0"; tmp[1] = "255.0.0.0"; tmp[2] = "127.0.0.1"; tmp[3] = "127.0.0.1"; tabelle.addFirst(tmp); manuelleEintraege.addFirst(new Boolean(false)); knoten = (InternetKnoten) firmware.getKnoten(); // Eintrag fuer eigenes Rechnernetz it = knoten.getNetzwerkInterfaces().listIterator(); while (it.hasNext()) { nic = (NetzwerkInterface) it.next(); tmp = new String[4]; // tmp[0] = nic.getIp(); tmp[0] = berechneNetzkennung(nic.getIp(), nic.getSubnetzMaske()); tmp[1] = nic.getSubnetzMaske(); tmp[2] = nic.getIp(); tmp[3] = nic.getIp(); tabelle.addFirst(tmp); manuelleEintraege.addFirst(new Boolean(false)); } // Eintrag fuer eigene IP-Adresse it = knoten.getNetzwerkInterfaces().listIterator(); while (it.hasNext()) { nic = (NetzwerkInterface) it.next(); tmp = new String[4]; tmp[0] = nic.getIp(); tmp[1] = "255.255.255.255"; tmp[2] = "127.0.0.1"; tmp[3] = "127.0.0.1"; tabelle.addFirst(tmp); manuelleEintraege.addFirst(new Boolean(false)); } // Eintrag fuer Standardgateway, wenn es konfiguriert wurde gateway = firmware.getStandardGateway(); if (gateway != null && !gateway.trim().equals("")) { gateway = gateway.trim(); it = knoten.getNetzwerkInterfaces().listIterator(); tmp = null; while (it.hasNext()) { nic = (NetzwerkInterface) it.next(); if (nic != null && VermittlungsProtokoll.gleichesRechnernetz( gateway, nic.getIp(), nic.getSubnetzMaske())) { tmp = new String[4]; tmp[0] = "0.0.0.0"; tmp[1] = "0.0.0.0"; tmp[2] = gateway; tmp[3] = nic.getIp(); } } if (tmp == null) { tmp = new String[4]; tmp[0] = "0.0.0.0"; tmp[1] = "0.0.0.0"; tmp[2] = gateway; tmp[3] = firmware.holeIPAdresse(); } tabelle.addLast(tmp); manuelleEintraege.addLast(new Boolean(false)); } } return tabelle; }