/*
* Things to do
- *
+ *
* - Working as an relay agent
* - Rapid commit option support
* - Additional packet options (commented on the middle of sources)
#define FOR_dhcpd
#include "toys.h"
-#include <linux/sockios.h>
+#include <linux/sockios.h>
#include <linux/if_ether.h>
// Todo: headers not in posix
#include <netinet/udp.h>
#include <netpacket/packet.h>
-#if CFG_DEBUG_DHCP==1
# define dbg(fmt, arg...) printf(fmt, ##arg)
-#else
-# define dbg(fmt, arg...)
-#endif
#define flag_get(f,v,d) ((toys.optflags & (f)) ? (v) : (d))
#define flag_chk(f) ((toys.optflags & (f)) ? 1 : 0)
static void signal_handler(int sig)
{
unsigned char ch = sig;
- if (write(sigfd.wr, &ch, 1) != 1) dbg("can't send signal\n");
+ if (write(sigfd.wr, &ch, 1) != 1) {
+ dbg("can't send signal\n");
+ exit(0);
+ }
}
// signal setup for SIGUSR1 SIGTERM
return -1;
if (!memcmp(((dyn_lease6*) listdls->arg)->duid, duid, ((dyn_lease6*) listdls->arg)->duid_len)
- && ((dyn_lease6*) listdls->arg)->ia_type == ia_type)
+ && ((dyn_lease6*) listdls->arg)->ia_type == ia_type)
return -1;
}
for (sls6 = gstate.leases.sleases6; sls6; sls6 = sls6->next)
dls6->ia_type = ia_type;
dls6->iaid = iaid;
memcpy(dls6->lease_nip6, assigned_nip, sizeof(uint32_t)*4);
-
+
if (update) *lifetime = get_lease(*lifetime + now);
dls6->expires = *lifetime + now;
dbg("Error in select wait again...\n");
continue;
}
- if (!retval) { // Timed out
+ if (!retval) { // Timed out
dbg("select wait Timed Out...\n");
waited = 0;
(addr_version==AF_INET6)? write_lease6file() : write_leasefile();
} else gconfig.server_nip = htonl(gconfig.server_nip);
continue;
}
- if (FD_ISSET(sigfd.rd, &rfds)) { // Some Activity on RDFDs : is signal
+ if (FD_ISSET(sigfd.rd, &rfds)) { // Some Activity on RDFDs : is signal
unsigned char sig;
if (read(sigfd.rd, &sig, 1) != 1) {
dbg("signal read failed.\n");
dbg("no or bad message type option, ignoring packet.\n");
continue;
}
- if (!gstate.rcvd.rcvd_pkt6.transaction_id ||
+ if (!gstate.rcvd.rcvd_pkt6.transaction_id ||
memcmp(gstate.rcvd.rcvd_pkt6.transaction_id, transactionid, 3)) {
dbg("no or bad transaction id, ignoring packet.\n");
continue;
dbg("Message Type : %u\n", gstate.rqcode);
break;
}
-
+
} else {
if(read_packet() < 0) {
open_listensock();
get_optval((uint8_t*)&gstate.rcvd.rcvd_pkt.options,
DHCP_OPT_MESSAGE_TYPE, &gstate.rqcode);
- if (gstate.rqcode == 0 || gstate.rqcode < DHCPDISCOVER
+ if (gstate.rqcode == 0 || gstate.rqcode < DHCPDISCOVER
|| gstate.rqcode > DHCPINFORM) {
dbg("no or bad message type option, ignoring packet.\n");
continue;