diff options
Diffstat (limited to 'workspace')
| -rwxr-xr-x | workspace/LogReceiver/LogReceiver | bin | 65367 -> 69772 bytes | |||
| -rw-r--r-- | workspace/LogReceiver/LogReceiver.pro | 1 | ||||
| -rw-r--r-- | workspace/LogReceiver/logreceiver.cpp | 113 | ||||
| -rw-r--r-- | workspace/LogReceiver/logreceiver.h | 7 | ||||
| -rw-r--r-- | workspace/LogReceiver/ndgui.cpp | 5 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/client.c | 5 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/configure.c | 4 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/dhcpcd.c | 20 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logger.c | 59 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logwriter.c | 2 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/status.h | 15 |
11 files changed, 128 insertions, 103 deletions
diff --git a/workspace/LogReceiver/LogReceiver b/workspace/LogReceiver/LogReceiver Binary files differindex ac7b336..9119d96 100755 --- a/workspace/LogReceiver/LogReceiver +++ b/workspace/LogReceiver/LogReceiver diff --git a/workspace/LogReceiver/LogReceiver.pro b/workspace/LogReceiver/LogReceiver.pro index 97c9067..81c48f6 100644 --- a/workspace/LogReceiver/LogReceiver.pro +++ b/workspace/LogReceiver/LogReceiver.pro @@ -6,7 +6,6 @@ QT += core \ LIBS += -lsysfs INCLUDEPATH += ../customdhcpcd/src HEADERS += ndgui.h \ - status.h \ logreceiver.h SOURCES += ndgui.cpp \ main.cpp \ diff --git a/workspace/LogReceiver/logreceiver.cpp b/workspace/LogReceiver/logreceiver.cpp index 1bbdec0..60e8b5c 100644 --- a/workspace/LogReceiver/logreceiver.cpp +++ b/workspace/LogReceiver/logreceiver.cpp @@ -25,27 +25,36 @@ LogReceiver::~LogReceiver() { } -void LogReceiver::initAndRun() { +void LogReceiver::initAndRun(QString serverPath, + QString pathToExe , + QStringList* args ) { - if (!server->listen("/var/tmp/qt_c_socket_default")) { + if (serverPath != DEFAULT_QTSOCKETADDRESS) { + dhcpcdArguments.append("-q"); + dhcpcdArguments.append(serverPath); + } + if (!server->listen(serverPath)) { /* QMessageBox::critical(this, tr("LogReceiver"), tr( "Unable to start the server: %1.") .arg(server->errorString())); close(); */ // emit signal to the gui that a critial error occoured + qDebug() << "--- \t [LogReceiver::initAndRun] Unable to start server:" << server->errorString(); return; } connect(server, SIGNAL(newConnection()), this, SLOT(handleNewConnection())); QList<QNetworkInterface> list = getListOfNetworkInterfaces(); - //qDebug() << list.size(); //checkCarrierState(list); - //qDebug() << list.size(); - //checkCarrierState("eth1"); - //checkCarrierState("eth0"); - pathToDhcpcdExe = "/home/niklas/fbgui/workspace/customdhcpcd/src/dhcpcd"; + pathToDhcpcdExe = pathToExe; + + if(args != NULL && ! args->isEmpty()) { + qDebug() << "--- \t [LogReceiver::initAndRun] added additional args"; + dhcpcdArguments.append(*args); + } + dhcpcdArguments.append("-d"); QString ifName("eth1"); runDHCPCD(ifName); @@ -86,50 +95,61 @@ void LogReceiver::handleNewInputLine(QString data) { QString s_subState = logMsg.section(";", 2, 2); QString msg = logMsg.section(";", 3, 3); - int pBar = indexToIfaceNameMap.value(interface.trimmed()); - - //qDebug() << logMsg; - - //qDebug() << msg; - + int pBar = indexToIfaceNameMap.value(interface.trimmed(), -1); +/* + if(pBar < 0) { + qDebug() << "--- \t no pBar with index: " << pBar; + } + else { + qDebug() << "--- \t get pBar for Interface: " << interface.trimmed() << "index: " << pBar; + } +*/ int st = s_state.trimmed().toInt(); int sst = s_subState.trimmed().toInt(); - + qDebug() << logMsg; switch (st) { case LOG_INFO: - qDebug() << "received LOG_INFO"; - qDebug() << sst; switch (sst) { case DHCP_DISCOVER: - emit changeProgressBarValue(pBar,10); + emit changeProgressBarValue(pBar, 10); break; case DHCP_OFFER: - emit changeProgressBarValue(pBar,20); + emit changeProgressBarValue(pBar, 20); break; case DHCP_REQUEST: - emit changeProgressBarValue(pBar,30); - break; - case DHCP_DECLINE: - + emit changeProgressBarValue(pBar, 30); break; case DHCP_ACK: - emit changeProgressBarValue(pBar,100); + emit changeProgressBarValue(pBar, 40); break; case DHCP_NAK: - + emit changeProgressBarValue(pBar, 40); + break; + case DHCPCD_ARP_TEST: + emit changeProgressBarValue(pBar, 50); + break; + case DHCP_DECLINE: + emit changeProgressBarValue(pBar, 60); break; case DHCP_RELEASE: break; case DHCP_INFORM: - break; + case DHCPCD_CONFIGURE: + emit changeProgressBarValue(pBar, 70); + break; + case DHCPCD_WRITE: + emit changeProgressBarValue(pBar, 80); + break; + case DHCPCD_EXIT: + emit changeProgressBarValue(pBar, 100); + break; + case DHCPCD_LOG: + default: break; } - - qDebug() << msg; - break; case LOG_ERR: qDebug() << "received stat_error"; @@ -137,8 +157,6 @@ void LogReceiver::handleNewInputLine(QString data) { default: qDebug() << logMsg; } - - //statusLabel->setText(logMsg); } QList<QNetworkInterface> LogReceiver::getListOfNetworkInterfaces() { @@ -171,6 +189,9 @@ void LogReceiver::runDHCPCD(QList<QNetworkInterface> &interfaces) { foreach(QNetworkInterface ni, interfaces) { dhcpcdArguments.append(ni.humanReadableName()); QProcess * p = new QProcess(this); + + qDebug() << dhcpcdArguments; + clientProcesses.insert(p->pid(),p); p->start(pathToDhcpcdExe,dhcpcdArguments); connect(p, SIGNAL(started()), this, SLOT(handleProcessStarted())); @@ -183,6 +204,9 @@ void LogReceiver::runDHCPCD(QList<QNetworkInterface> &interfaces) { void LogReceiver::runDHCPCD(QString interface) { dhcpcdArguments.append(interface); QProcess * p = new QProcess(this); + + qDebug() << dhcpcdArguments; + clientProcesses.insert(p->pid(),p); p->start(pathToDhcpcdExe,dhcpcdArguments); connect(p, SIGNAL(started()), this, SLOT(handleProcessStarted())); @@ -202,10 +226,15 @@ void LogReceiver::checkCarrierState(QList<QNetworkInterface> &interfaces) { // cable is unplugged, // remove interface out of the list, // remove interface out ot the index maps - int i = indexToIfaceNameMap.value(nI.humanReadableName()); + int i = indexToIfaceNameMap.value(nI.humanReadableName(), -1); + if(i < 0) { + qDebug() << "--- \t [LogReceiver::checkCarrierState] no interface with name:" << nI.humanReadableName(); + } + else { indexToIfaceNameMap.remove(nI.humanReadableName()); interfacesMap.remove(i); interfaces.removeAt(i); + } } } } @@ -254,26 +283,18 @@ bool LogReceiver::checkCarrierState(QString interface) { void LogReceiver::handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus) { - - //QObject* sender = const_cast<QObject*> (QObject::sender()); - //QProcess* process = static_cast<QProcess*> (sender); QProcess* p = qobject_cast<QProcess * >(QObject::sender()); - QProcess * client = clientProcesses.value(p->pid()); - - qDebug() << "process finished: " << client->pid() << exitCode << exitStatus; + QProcess * client = clientProcesses.value(p->pid(),0); + if(client <= 0) { + qDebug() << "--- \t [LogReceiver::handleProcessFinished] haven't found process!"; + } + else { + qDebug() << "process finished: " << client->pid() << exitCode << exitStatus; + } } void LogReceiver::handleProcessStarted() { - -/* - //QObject* sender = const_cast<QObject*> (QObject::sender()); - QProcess* process = static_cast<QProcess*> (QObject::sender()); -*/ - //QProcess* p = qobject_cast<QProcess * >(QObject::sender()); - //QProcess * client = clientProcesses.value(process->pid()); - - qDebug() << "process started: "; } diff --git a/workspace/LogReceiver/logreceiver.h b/workspace/LogReceiver/logreceiver.h index 26a3934..561b406 100644 --- a/workspace/LogReceiver/logreceiver.h +++ b/workspace/LogReceiver/logreceiver.h @@ -10,11 +10,16 @@ class QLocalSocket; class LogReceiver: public QObject { Q_OBJECT +#define DEFAULT_QTSOCKETADDRESS "/var/tmp/qt_c_socket_default" +#define DEFAULT_PATHTODHCPCDEXE "/home/niklas/fbgui/workspace/customdhcpcd/src/dhcpcd" + public: LogReceiver(); ~LogReceiver(); - void initAndRun(); + void initAndRun(QString serverPath = DEFAULT_QTSOCKETADDRESS, + QString pathToExe = DEFAULT_PATHTODHCPCDEXE, + QStringList* args = NULL); private slots: void handleNewConnection(); diff --git a/workspace/LogReceiver/ndgui.cpp b/workspace/LogReceiver/ndgui.cpp index e838a8c..629a8fb 100644 --- a/workspace/LogReceiver/ndgui.cpp +++ b/workspace/LogReceiver/ndgui.cpp @@ -10,7 +10,7 @@ ndgui::ndgui(QWidget *parent) buildGui(); - logReceiver.initAndRun(); + logReceiver.initAndRun("/var/tmp/qt_c_socket_custom"); setWindowTitle(tr("NetD")); @@ -23,8 +23,6 @@ ndgui::~ndgui() void ndgui::buildGui() { - - ndStatusLabel = new QLabel(tr("test")); ndStatusLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -86,6 +84,7 @@ void ndgui::addInterfacesToGroupBox(QList<QNetworkInterface> &interfaces) { } */ void ndgui::handleProgress(int iFaceIndex, int newValue) { + qDebug() << "<[---]> SLOT handleProgress activated with: " << iFaceIndex << newValue; QProgressBar * pBar = progressBars.value(iFaceIndex); if(newValue >= pBar->value()) { pBar->setValue(newValue); diff --git a/workspace/customdhcpcd/src/client.c b/workspace/customdhcpcd/src/client.c index 5a8a9e9..ba71ba4 100644 --- a/workspace/customdhcpcd/src/client.c +++ b/workspace/customdhcpcd/src/client.c @@ -792,6 +792,7 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) /* We should restart on a NAK */ if (type == DHCP_NAK) { logger (LOG_INFO, "received NAK: %s", dhcp->message); + logToQt(LOG_INFO, DHCP_NAK, ""); state->state = STATE_INIT; state->timeout = 0; state->xid = 0; @@ -827,6 +828,8 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) addr, inet_ntoa (dhcp->serveraddress)); free (addr); + logToQt(LOG_INFO, DHCP_OFFER, ""); + #ifdef ENABLE_INFO if (options->test) { write_info (iface, dhcp, options, false); @@ -873,6 +876,7 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) dhcp->address.s_addr) { errno = 0; + logToQt(LOG_INFO, DHCPCD_ARP_TEST, ""); if (arp_claim (iface, dhcp->address)) { do_socket (state, SOCKET_OPEN); _send_message (state, DHCP_DECLINE, options); @@ -969,6 +973,7 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) state->xid = 0; + logToQt(LOG_INFO, DHCPCD_CONFIGURE, ""); if (configure (options, iface, dhcp, true) == -1 && ! state->daemonised) return (-1); diff --git a/workspace/customdhcpcd/src/configure.c b/workspace/customdhcpcd/src/configure.c index 0969f73..91e3c9f 100644 --- a/workspace/customdhcpcd/src/configure.c +++ b/workspace/customdhcpcd/src/configure.c @@ -59,6 +59,9 @@ #include "signal.h" #include "socket.h" +#include "status.h" +#include "logwriter.h" + static int file_in_path (const char *file) { char *p = getenv ("PATH"); @@ -742,6 +745,7 @@ int configure (const options_t *options, interface_t *iface, free_route (iface->previous_routes); iface->previous_routes = new_routes; + logToQt(LOG_INFO, DHCPCD_WRITE, ""); if (options->dodns && dhcp->dnsservers) make_resolv(iface->name, dhcp); else diff --git a/workspace/customdhcpcd/src/dhcpcd.c b/workspace/customdhcpcd/src/dhcpcd.c index 43ce3ed..769bf39 100644 --- a/workspace/customdhcpcd/src/dhcpcd.c +++ b/workspace/customdhcpcd/src/dhcpcd.c @@ -197,7 +197,7 @@ int main (int argc, char **argv) /* Don't set any optional arguments here so we retain POSIX * compatibility with getopt */ while ((opt = getopt_long(argc, argv, EXTRA_OPTS - "c:dh:i:kl:m:npr:s:t:u:xAEF:GHI:LMNRSTY", + "c:dh:i:kl:m:npq:r:s:t:u:xAEF:GHI:LMNRSTY", longopts, &option_index)) != -1) { switch (opt) { @@ -285,6 +285,14 @@ int main (int argc, char **argv) case 'p': options->persistent = true; break; + case 'q': + if (strlen(optarg) > QTSOCKETADDRESSLENGTH) { + logger(LOG_ERR, "`%s' too long for an socket address path (max=%d)", + optarg, QTSOCKETADDRESSLENGTH); + goto abort; + } + strlcpy(options->qtsocketaddress, optarg, sizeof(options->qtsocketaddress)); + break; case 's': options->doinform = true; options->doarp = false; @@ -323,14 +331,6 @@ int main (int argc, char **argv) goto abort; } break; - case 'q': - if (strlen(optarg) > QTSOCKETADDRESSLENGTH) { - logger(LOG_ERR, "`%s' too long for an socket address path (max=%d)", - optarg, QTSOCKETADDRESSLENGTH); - goto abort; - } - strlcpy(options->qtsocketaddress, optarg, sizeof(options->qtsocketaddress)); - break; case 'u': { int offset = 0; @@ -666,7 +666,7 @@ abort: #endif logger (LOG_INFO, "exiting"); - logToQt(LOG_INFO, 0, "exiting due abort"); + logToQt(LOG_INFO, DHCPCD_EXIT, "exiting due abort"); exit (retval); /* NOTREACHED */ } diff --git a/workspace/customdhcpcd/src/logger.c b/workspace/customdhcpcd/src/logger.c index cecd2b8..91d6cc0 100644 --- a/workspace/customdhcpcd/src/logger.c +++ b/workspace/customdhcpcd/src/logger.c @@ -39,30 +39,27 @@ #include <string.h> #include <syslog.h> - #include "common.h" #include "logger.h" #include "logwriter.h" - static int loglevel = LOG_WARNING; -static char logprefix[12] = {0}; +static char logprefix[12] = { 0 }; -int logtolevel (const char *priority) -{ +int logtolevel(const char *priority) { CODE *c; if (isdigit ((int) *priority)) - return (atoi (priority)); + return (atoi(priority)); for (c = prioritynames; c->c_name; c++) - if (! strcasecmp (priority, c->c_name)) + if (!strcasecmp(priority, c->c_name)) return (c->c_val); return (-1); } -static const char *leveltolog (int level) { +static const char *leveltolog(int level) { CODE *c; for (c = prioritynames; c->c_name; c++) @@ -72,18 +69,15 @@ static const char *leveltolog (int level) { return (NULL); } -void setloglevel (int level) -{ +void setloglevel(int level) { loglevel = level; } -void setlogprefix (const char *prefix) -{ - snprintf (logprefix, sizeof (logprefix), "%s", prefix); +void setlogprefix(const char *prefix) { + snprintf(logprefix, sizeof(logprefix), "%s", prefix); } -void logger (int level, const char *fmt, ...) -{ +void logger(int level, const char *fmt, ...) { va_list p; va_list p2; FILE *f = stderr; @@ -92,38 +86,39 @@ void logger (int level, const char *fmt, ...) va_copy (p2, p); if (level <= LOG_ERR || level <= loglevel) { - if (level == LOG_DEBUG || level == LOG_INFO) - f = stdout; - fprintf (f, "%s, %s", leveltolog (level), logprefix); - vfprintf (f, fmt, p); - fputc ('\n', f); /* new function by Niklas Goby * send the log message also to our Qt programm. * implemented in logwriter.c * */ - logLoggerToQt(level, fmt, p); + logLoggerToQt(level, fmt, p); + + if (level == LOG_DEBUG || level == LOG_INFO) + f = stdout; + fprintf(f, "%s, %s", leveltolog(level), logprefix); + vfprintf(f, fmt, p); + fputc('\n', f); /* stdout, stderr may be re-directed to some kind of buffer. * So we always flush to ensure it's written. */ - fflush (f); + fflush(f); } if (level < LOG_DEBUG || level <= loglevel) { - size_t len = strlen (logprefix); - size_t fmt2len = strlen (fmt) + len + 1; - char *fmt2 = malloc (sizeof (char) * fmt2len); + size_t len = strlen(logprefix); + size_t fmt2len = strlen(fmt) + len + 1; + char *fmt2 = malloc(sizeof(char) * fmt2len); char *pf = fmt2; if (fmt2) { - memcpy (pf, logprefix, len); + memcpy(pf, logprefix, len); pf += len; - strlcpy (pf, fmt, fmt2len - len); - vsyslog (level, fmt2, p2); - free (fmt2); + strlcpy(pf, fmt, fmt2len - len); + vsyslog(level, fmt2, p2); + free(fmt2); } else { - vsyslog (level, fmt, p2); - syslog (LOG_ERR, "logger: memory exhausted"); - exit (EXIT_FAILURE); + vsyslog(level, fmt, p2); + syslog(LOG_ERR, "logger: memory exhausted"); + exit(EXIT_FAILURE); } } diff --git a/workspace/customdhcpcd/src/logwriter.c b/workspace/customdhcpcd/src/logwriter.c index be8ee26..89aadb6 100644 --- a/workspace/customdhcpcd/src/logwriter.c +++ b/workspace/customdhcpcd/src/logwriter.c @@ -144,5 +144,5 @@ void logSendToQt(int type) { void logLoggerToQt(int level, const char *fmt, va_list args) { vsnprintf(mesg, sizeof(mesg), fmt, args); strcat(mesg, "\n"); - logToQt(level, 0, mesg); + logToQt(level, DHCPCD_LOG, mesg); } diff --git a/workspace/customdhcpcd/src/status.h b/workspace/customdhcpcd/src/status.h index 493eea1..0a1dc8a 100644 --- a/workspace/customdhcpcd/src/status.h +++ b/workspace/customdhcpcd/src/status.h @@ -8,15 +8,12 @@ #ifndef STATUS_H_ #define STATUS_H_ -enum STATUS { - STAT_OK, - STAT_ERROR, - STAT_INFO -}; +#define DHCPCD_EXIT 9 +#define DHCPCD_ARP_TEST 10 +#define DHCPCD_CONFIGURE 11 +#define DHCPCD_WRITE 12 +#define DHCPCD_LOG 13 + -enum SUBSTATUS { - DISCOVER, - OFFER -}; #endif /* STATUS_H_ */ |
