#include <freeradius-devel/modules.h>
#include <freeradius-devel/rad_assert.h>
#include <freeradius-devel/vqp.h>
+#include <freeradius-devel/dhcp.h>
#include <freeradius-devel/vmps.h>
#include <freeradius-devel/detail.h>
rad_assert((listener->type == RAD_LISTEN_AUTH) ||
(listener->type == RAD_LISTEN_ACCT) ||
- (listener->type == RAD_LISTEN_VQP));
+ (listener->type == RAD_LISTEN_VQP) ||
+ (listener->type == RAD_LISTEN_DHCP));
clients = ((listen_socket_t *)listener->data)->clients;
break;
#endif
+#ifdef WITH_DHCP
+ case RAD_LISTEN_DHCP:
+ name = "dhcp";
+ break;
+#endif
+
default:
name = "??";
break;
request->home_server->secret);
}
-
#ifdef WITH_SNMP
static int radius_snmp_recv(rad_listen_t *listener,
UNUSED RAD_REQUEST_FUNP *pfun,
#endif
+#include "dhcpd.c"
+
static const rad_listen_master_t master_listen[RAD_LISTEN_MAX] = {
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL}, /* RAD_LISTEN_NONE */
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL},
#endif
+#ifdef WITH_DHCP
+ /* dhcp query protocol */
+ { dhcp_socket_parse, NULL,
+ dhcp_socket_recv, dhcp_socket_send,
+ socket_print, dhcp_socket_encode, dhcp_socket_decode },
+#else
+ { NULL, NULL, NULL, NULL, NULL, NULL, NULL},
+#endif
+
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL} /* RAD_LISTEN_SNMP */
};
case RAD_LISTEN_ACCT:
case RAD_LISTEN_PROXY:
case RAD_LISTEN_VQP:
+ case RAD_LISTEN_DHCP:
this->data = rad_malloc(sizeof(listen_socket_t));
memset(this->data, 0, sizeof(listen_socket_t));
break;
#ifdef WITH_VMPS
{ "vmps", RAD_LISTEN_VQP },
#endif
+#ifdef WITH_DHCP
+ { "dhcp", RAD_LISTEN_DHCP },
+#else
+ { "dhcp", RAD_LISTEN_NONE },
+#endif
{ NULL, 0 },
};