DHCP compile fixes
Stephen R. van den Berg
srb at cuci.nl
Sat Jul 9 12:40:27 CEST 2011
---
Trying to compile and use the DHCP server, I find these things that
need to be fixed (code untested as yet, I intend to use the DHCP server
in a production environment later this weekend).
src/include/dhcp.h | 2 +-
src/lib/dhcp.c | 4 ++--
src/lib/radius.c | 2 +-
src/main/dhcpd.c | 8 ++++----
src/modules/rlm_ldap/rlm_ldap.c | 10 +++++-----
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/include/dhcp.h b/src/include/dhcp.h
index 63ab5e9..4305c0d 100644
--- a/src/include/dhcp.h
+++ b/src/include/dhcp.h
@@ -62,7 +62,7 @@ int fr_dhcp_decode(RADIUS_PACKET *packet);
#define DHCP_UNPACK_OPTION1(x) (((x) & 0xff00) >> 8)
#define PW_DHCP_MESSAGE_TYPE (53)
-#define PW_DHCP_YOU_IP_ADDRESS (264)
+#define PW_DHCP_YOUR_IP_ADDRESS (264)
#define PW_DHCP_SUBNET_MASK (1)
#define PW_DHCP_IP_ADDRESS_LEASE_TIME (51)
diff --git a/src/lib/dhcp.c b/src/lib/dhcp.c
index d234d60..5879135 100644
--- a/src/lib/dhcp.c
+++ b/src/lib/dhcp.c
@@ -1141,7 +1141,7 @@ int fr_dhcp_encode(RADIUS_PACKET *packet, RADIUS_PACKET *original)
}
}
- vp = pairfind(packet->vps, DHCP2ATTR(256));
+ vp = pairfind(packet->vps, 256, DHCP_MAGIC_VENDOR);
if (vp) {
*p++ = vp->vp_integer & 0xff;
} else {
@@ -1154,7 +1154,7 @@ int fr_dhcp_encode(RADIUS_PACKET *packet, RADIUS_PACKET *original)
*p++ = 1; /* hardware type = ethernet */
*p++ = 6; /* 6 bytes of ethernet */
- vp = pairfind(packet->vps, DHCP2ATTR(259));
+ vp = pairfind(packet->vps, 259, DHCP_MAGIC_VENDOR);
if (vp) {
*p++ = vp->vp_integer & 0xff;
} else {
diff --git a/src/lib/radius.c b/src/lib/radius.c
index 5eb3ae3..6c09b4f 100644
--- a/src/lib/radius.c
+++ b/src/lib/radius.c
@@ -278,7 +278,7 @@ static int rad_sendto(int sockfd, void *data, size_t data_len, int flags,
*/
rcode = sendto(sockfd, data, data_len, flags,
(struct sockaddr *) &dst, sizeof_dst);
- if (rcode < 0) {
+done: if (rcode < 0) {
DEBUG("rad_send() failed: %s\n", strerror(errno));
}
diff --git a/src/main/dhcpd.c b/src/main/dhcpd.c
index c216bcf..5af566d 100644
--- a/src/main/dhcpd.c
+++ b/src/main/dhcpd.c
@@ -107,7 +107,7 @@ static int dhcp_process(REQUEST *request)
/*
* Hop count goes up.
*/
- vp = pairfind(request->reply->vps, DHCP2ATTR(259));
+ vp = pairfind(request->reply->vps, 259, DHCP_MAGIC_VENDOR);
if (vp) vp->vp_integer++;
return 1;
@@ -123,7 +123,7 @@ static int dhcp_process(REQUEST *request)
* server. So we must be the destination of the
* giaddr field.
*/
- pairdelete(&request->packet->vps, DHCP2ATTR(266));
+ pairdelete(&request->packet->vps, 266, DHCP_MAGIC_VENDOR);
rad_free(&request->reply);
request->reply = request->packet;
@@ -132,7 +132,7 @@ static int dhcp_process(REQUEST *request)
/*
* Search for client IP address.
*/
- vp = pairfind(request->packet->vps, DHCP2ATTR(264));
+ vp = pairfind(request->packet->vps, 264, DHCP_MAGIC_VENDOR);
if (!vp) {
request->reply->code = 0;
RDEBUG("DHCP: No YIAddr in the reply. Discarding packet");
@@ -151,7 +151,7 @@ static int dhcp_process(REQUEST *request)
/*
* Hop count goes down.
*/
- vp = pairfind(request->reply->vps, DHCP2ATTR(259));
+ vp = pairfind(request->reply->vps, 259, DHCP_MAGIC_VENDOR);
if (vp && (vp->vp_integer > 0)) vp->vp_integer--;
/*
diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c
index 8b08f6a..129e5ea 100644
--- a/src/modules/rlm_ldap/rlm_ldap.c
+++ b/src/modules/rlm_ldap/rlm_ldap.c
@@ -1580,7 +1580,7 @@ static int ldap_authorize(void *instance, REQUEST * request)
if (res == 0){
passwd_val = universal_password;
if (passwd_val){
- passwd_item = radius_paircreate(request, &request->config_items, PW_CLEARTEXT_PASSWORD, PW_TYPE_STRING);
+ passwd_item = radius_paircreate(request, &request->config_items, PW_CLEARTEXT_PASSWORD, 0, PW_TYPE_STRING);
strlcpy(passwd_item->vp_strvalue,passwd_val,sizeof(passwd_item->vp_strvalue));
passwd_item->length = strlen(passwd_item->vp_strvalue);
added_known_password = 1;
@@ -1602,7 +1602,7 @@ static int ldap_authorize(void *instance, REQUEST * request)
* The authorize method of no other LDAP module instance has
* processed this request.
*/
- vp_inst = radius_paircreate(request, &request->config_items, inst_attr, PW_TYPE_STRING);
+ vp_inst = radius_paircreate(request, &request->config_items, inst_attr, 0, PW_TYPE_STRING);
strlcpy(vp_inst->vp_strvalue, inst->xlat_name, sizeof(vp_inst->vp_strvalue));
vp_inst->length = strlen(vp_inst->vp_strvalue);
@@ -1611,7 +1611,7 @@ static int ldap_authorize(void *instance, REQUEST * request)
* of UP in the config items list and whether eDirectory account
* policy check is to be performed or not.
*/
- vp_apc = radius_paircreate(request, &request->config_items, apc_attr, PW_TYPE_STRING);
+ vp_apc = radius_paircreate(request, &request->config_items, apc_attr, 0, PW_TYPE_STRING);
if(!inst->edir_account_policy_check){
/* Do nothing */
strcpy(vp_apc->vp_strvalue, "1");
@@ -1649,7 +1649,7 @@ static int ldap_authorize(void *instance, REQUEST * request)
auth_opt_attr = dattr->attr;
if(pairfind(*check_pairs, auth_opt_attr, 0) == NULL){
if ((auth_option = ldap_get_values(conn->ld, msg, "sasDefaultLoginSequence")) != NULL) {
- if ((vp_auth_opt = paircreate(auth_opt_attr, PW_TYPE_STRING)) == NULL){
+ if ((vp_auth_opt = paircreate(auth_opt_attr, 0, PW_TYPE_STRING)) == NULL){
radlog(L_ERR, " [%s] Could not allocate memory. Aborting.", inst->xlat_name);
ldap_msgfree(result);
ldap_release_conn(conn_id, inst);
@@ -1979,7 +1979,7 @@ retry:
/* Generate state attribute */
state = rad_malloc(MAX_CHALLENGE_LEN);
(void) sprintf(state, "%s%s", challenge, challenge);
- vp_state = paircreate(PW_STATE, PW_TYPE_OCTETS);
+ vp_state = paircreate(PW_STATE, 0, PW_TYPE_OCTETS);
memcpy(vp_state->vp_strvalue, state, strlen(state));
vp_state->length = strlen(state);
pairadd(&request->reply->vps, vp_state);
--
1.7.5.4
--
Stephen.
More information about the Freeradius-Devel
mailing list