Exemple #1
0
  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;
  }