summaryrefslogtreecommitdiffstats
path: root/src/fbgui/networkdiscovery.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fbgui/networkdiscovery.h')
-rw-r--r--src/fbgui/networkdiscovery.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/fbgui/networkdiscovery.h b/src/fbgui/networkdiscovery.h
new file mode 100644
index 0000000..c422b18
--- /dev/null
+++ b/src/fbgui/networkdiscovery.h
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2010,2011 - RZ Uni Freiburg
+ * Copyright (c) 2010,2011 - OpenSLX Project
+ *
+ * This program/file is free software distributed under the GPL version 2.
+ * See http://openslx.org/COPYING
+ *
+ * If you have any feedback please consult http://openslx.org/feedback and
+ * send your feedback to feedback@openslx.org
+ *
+ * General information about OpenSLX can be found under http://openslx.org
+ */
+
+
+
+#ifndef NetworkDiscovery_H
+#define NetworkDiscovery_H
+
+#include <QtNetwork>
+#include <QtCore>
+
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <syslog.h>
+#include <sysfs/libsysfs.h>
+
+#include "loggerengine.h"
+#include "interfaceconfiguration.h"
+#include "networkmanager.h"
+
+
+#include "dhcp.h"
+
+#include "../common/fbgui.h"
+
+
+
+#define DEFAULT_PATHTODHCPCDEXE "/bin/cdhcpcd"
+
+class NetworkDiscovery: public QObject {
+Q_OBJECT
+
+public:
+ NetworkDiscovery(QObject *parent=0);
+ ~NetworkDiscovery();
+
+ void initAndRun(QString serverIp, bool userChoice,
+ bool autoUp,
+ QString pathToLogFile,
+ QString serverPath = DEFAULT_QTSOCKETADDRESS,
+ QString pathToExe = DEFAULT_PATHTODHCPCDEXE,
+ QStringList* args = NULL);
+ int ip4_replaceDefaultRoute(QString ifName, QString gateway, int mss);
+ QString getGatewayForInterface(QString ifName);
+
+ int ip4_setManualConfiguration(QVariantMap result);
+ QString readLogFile();
+ void tryAgain();
+ void prepareTryAgain();
+ bool checkConnectivity(QString ifName);
+ bool checkConnectivityViaTcp();
+ QVariantMap getInterfaceConfig(QString ifName);
+ QString GetErrorStr();
+
+public slots:
+ void handleNewConnection();
+ void handleNewInput();
+ void handleNewInputLine(QLocalSocket * client, QString data);
+ void handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
+ void handleProcessStarted();
+ void handleClientDisconnect();
+
+ void slotReadyForRun();
+
+ void checkForIsRunning();
+
+
+signals:
+ void addInterface(const QString &ifName);
+ void changeProgressBarValue(const QString & ifName, const int $newValue);
+ void connectionEstablished(QString ifName);
+ void abortBoot(QString msg);
+ void updateIfStatus(QString ifName, QString status);
+ void updateStatus(QString status);
+ void allProcessesFinished();
+ void continueBoot(QString ifName);
+ void continueBootWithoutCheck(QString ifName);
+ void setManualConfInterfaces(QString jsonArr);
+
+ void readyForRun();
+
+private:
+ QString _tag;
+ QLocalServer *_server;
+ QMap<QLocalSocket*,QLocalSocket*> _clients;
+ QLocalSocket *_client;
+ QMap<QString,QLocalSocket*> _ifNameToClient;
+ QMap<QProcess*,QString> _clientProcessToIfNameMap;
+ QString _serverPath;
+ QString _pathToDhcpcdExe;
+ QStringList _dhcpcdArguments;
+ int _numberOfProcesses;
+ NetworkManager* _networkManager;
+ bool _userChoice;
+ bool _blocked;
+ bool _autoUp;
+ QString _serverIp;
+ QString _pathToLogFile;
+ QList<QString> _ifUpList;
+ QList<QString> _ifDownList;
+ int _ifUpCountdown;
+ QTimer*_timer;
+ QList<Q_PID> _pidsList;
+ QString _errorStr;
+ QMap<QString,interfaceconfiguration*> _ifcMap;
+ void mainWork();
+
+ void killDHCPCD();
+
+ void handleNewInput(QLocalSocket * client);
+
+ void runDHCPCD(QList<QString> &interfaces);
+ void runDHCPCD(QString interface);
+
+ bool checkCarrierState(QString interface);
+ bool checkConnectivityViaTcp(QString server);
+
+ bool checkBlackList(QString i);
+
+ void getListOfNetworkInterfaces();
+ void getListOfNetworkInterfacesWithAutoUp();
+
+
+};
+
+#endif // NetworkDiscovery_H