summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xworkspace/LogReceiver/LogReceiverbin65367 -> 69772 bytes
-rw-r--r--workspace/LogReceiver/LogReceiver.pro1
-rw-r--r--workspace/LogReceiver/logreceiver.cpp113
-rw-r--r--workspace/LogReceiver/logreceiver.h7
-rw-r--r--workspace/LogReceiver/ndgui.cpp5
-rw-r--r--workspace/customdhcpcd/src/client.c5
-rw-r--r--workspace/customdhcpcd/src/configure.c4
-rw-r--r--workspace/customdhcpcd/src/dhcpcd.c20
-rw-r--r--workspace/customdhcpcd/src/logger.c59
-rw-r--r--workspace/customdhcpcd/src/logwriter.c2
-rw-r--r--workspace/customdhcpcd/src/status.h15
11 files changed, 128 insertions, 103 deletions
diff --git a/workspace/LogReceiver/LogReceiver b/workspace/LogReceiver/LogReceiver
index ac7b336..9119d96 100755
--- a/workspace/LogReceiver/LogReceiver
+++ b/workspace/LogReceiver/LogReceiver
Binary files differ
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_ */