diff options
| author | Niklas | 2011-07-13 17:03:29 +0200 |
|---|---|---|
| committer | Niklas | 2011-07-13 17:03:29 +0200 |
| commit | 5c815484e63280f9fdbe167149a5f693a29945b9 (patch) | |
| tree | 6de3b0de48aad83aa151922127c8cba50400e16a /workspace/customdhcpcd | |
| parent | added the custom dhcpcd client to git. (diff) | |
| download | fbgui-5c815484e63280f9fdbe167149a5f693a29945b9.tar.gz fbgui-5c815484e63280f9fdbe167149a5f693a29945b9.tar.xz fbgui-5c815484e63280f9fdbe167149a5f693a29945b9.zip | |
multiple clients possible. inserted something into _send_message
Diffstat (limited to 'workspace/customdhcpcd')
| -rw-r--r-- | workspace/customdhcpcd/src/client.c | 11 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/dhcpcd.c | 17 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logwriter.c | 36 | ||||
| -rw-r--r-- | workspace/customdhcpcd/src/logwriter.h | 3 |
4 files changed, 61 insertions, 6 deletions
diff --git a/workspace/customdhcpcd/src/client.c b/workspace/customdhcpcd/src/client.c index 8ce2721..24c8680 100644 --- a/workspace/customdhcpcd/src/client.c +++ b/workspace/customdhcpcd/src/client.c @@ -60,6 +60,9 @@ #include "signal.h" #include "socket.h" +#include "logwriter.h" +#include "status.h" + #ifdef ENABLE_DUID # include "duid.h" #endif @@ -453,6 +456,7 @@ static bool _send_message (state_t *state, int type, const options_t *options) state->last_type = type; state->last_sent = uptime (); + logSendToQt(type); retval = send_message (state->interface, state->dhcp, state->xid, type, options); return (retval == -1 ? false : true); @@ -596,8 +600,9 @@ static bool handle_signal (int sig, state_t *state, const options_t *options) if (! IN_LINKLOCAL (ntohl (state->dhcp->address.s_addr))) { do_socket (state, SOCKET_OPEN); state->xid = (uint32_t) random (); - if ((open_socket (state->interface, false)) >= 0) + if ((open_socket (state->interface, false)) >= 0) { _send_message (state, DHCP_RELEASE, options); + } do_socket (state, SOCKET_CLOSED); } unlink (state->interface->infofile); @@ -847,6 +852,9 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) logger (LOG_ERR, "%d not an ACK or OFFER", type); return (0); } + + /* if we are here, than we received an ACK and can go on with configuration */ + logToQt(STAT_OK, DHCP_ACK, ""); switch (state->state) { case STATE_RENEW_REQUESTED: @@ -1064,6 +1072,7 @@ int dhcp_run (const options_t *options, int *pidfd) if (! options) return (-1); + /*read_interface : defined in interface.c*/ iface = read_interface (options->interface, options->metric); if (! iface) goto eexit; diff --git a/workspace/customdhcpcd/src/dhcpcd.c b/workspace/customdhcpcd/src/dhcpcd.c index 97a685a..fca0bd4 100644 --- a/workspace/customdhcpcd/src/dhcpcd.c +++ b/workspace/customdhcpcd/src/dhcpcd.c @@ -51,6 +51,9 @@ const char copyright[] = "Copyright (c) 2006-2008 Roy Marples"; #include "socket.h" #include "version.h" +#include "logwriter.h" +#include "status.h" + static int doversion = 0; static int dohelp = 0; #define EXTRA_OPTS @@ -198,10 +201,17 @@ int nd_main(char *ifname) #endif */ + /* initializations for the ipc connection to qt*/ + setSocketName(""); + setInterfaceName(ifname); + initQtLoggerSocket(); + + if (strlen (ifname) > IF_NAMESIZE) { logger (LOG_ERR, "`%s' too long for an interface name (max=%d)", ifname, IF_NAMESIZE); + logToQt(STAT_ERROR,-1,"interface name is too long"); goto abort; } else { strlcpy (options->interface, ifname, @@ -223,12 +233,14 @@ int nd_main(char *ifname) if (IN_LINKLOCAL (ntohl (options->request_address.s_addr))) { logger (LOG_ERR, "you are not allowed to request a link local address"); + logToQt(STAT_ERROR, -1, "you are not allowed to request a link local address"); goto abort; } - if (geteuid ()) + if (geteuid ()) { logger (LOG_WARNING, PACKAGE " will not work correctly unless" " run as root"); + } prefix = xmalloc (sizeof (char) * (IF_NAMESIZE + 3)); snprintf (prefix, IF_NAMESIZE, "%s: ", options->interface); @@ -339,6 +351,7 @@ int nd_main(char *ifname) /* Massage our filters per platform */ setup_packet_filters (); + /*dhcp_run : defined in client.c*/ if (dhcp_run (options, &pidfd) == 0) retval = EXIT_SUCCESS; @@ -358,7 +371,7 @@ abort: #endif logger (LOG_INFO, "exiting"); - + logToQt(STAT_INFO, -1, "exiting due abort"); exit (retval); /* NOTREACHED */ } diff --git a/workspace/customdhcpcd/src/logwriter.c b/workspace/customdhcpcd/src/logwriter.c index 5bba4ad..5f51a7e 100644 --- a/workspace/customdhcpcd/src/logwriter.c +++ b/workspace/customdhcpcd/src/logwriter.c @@ -8,8 +8,8 @@ #include <string.h> #include <syslog.h> - #include "common.h" +#include "dhcp.h" /*sockets for the logger and the qt-reader */ int sockfd, ns; @@ -43,6 +43,38 @@ void closeQtLoggerSocket (){ close(sockfd); } +void logSendToQt(int type) { + switch(type) { + case DHCP_DISCOVER: + logToQt(STAT_OK, DHCP_DISCOVER, ""); + break; + case DHCP_OFFER: + logToQt(STAT_OK, DHCP_OFFER, ""); + break; + case DHCP_REQUEST: + logToQt(STAT_OK, DHCP_REQUEST, ""); + break; + case DHCP_DECLINE: + logToQt(STAT_OK, DHCP_DECLINE, ""); + break; + case DHCP_ACK: + logToQt(STAT_OK, DHCP_ACK, ""); + break; + case DHCP_NAK: + logToQt(STAT_OK, DHCP_NAK, ""); + break; + case DHCP_RELEASE: + logToQt(STAT_OK, DHCP_RELEASE, ""); + break; + case DHCP_INFORM: + logToQt(STAT_OK, DHCP_INFORM, ""); + break; + default : + break; + } +} + +/* void logToQt(char * status, char * substatus, char * msg) { char * m = malloc(strlen(interfaceName) + strlen(status) + strlen(substatus) + strlen(msg) +4 ); strcpy(m,interfaceName); @@ -56,7 +88,7 @@ void logToQt(char * status, char * substatus, char * msg) { free(m); } - +*/ void logToQt(int status, int substatus, char * msg) { char * st = (char *) malloc(sizeof(int)*4+1); char * sst = (char *) malloc(sizeof(int)*4+1); diff --git a/workspace/customdhcpcd/src/logwriter.h b/workspace/customdhcpcd/src/logwriter.h index 7248fed..5ee7b84 100644 --- a/workspace/customdhcpcd/src/logwriter.h +++ b/workspace/customdhcpcd/src/logwriter.h @@ -15,7 +15,8 @@ void setSocketName(char * sn); void setInterfaceName(char * in); void initQtLoggerSocket (); void closeQtLoggerSocket (); -void logToQt(char * status, char * substatus, char * msg); +void logSendToQt(int type); +//void logToQt(char * status, char * substatus, char * msg); void logToQt(int status, int substatus, char * msg); void sendToQt (); |
