ITS#7305 add slapi_[get|free]_client_ip()

This commit is contained in:
Jani Salonen 2012-06-23 05:45:14 -07:00 committed by Howard Chu
parent 450d224291
commit a572f4b967
2 changed files with 39 additions and 0 deletions

View File

@ -399,6 +399,8 @@ void slapi_seq_internal_set_pb( Slapi_PBlock *pb, char *ibase, int type,
/* connection related routines */
int slapi_is_connection_ssl(Slapi_PBlock *pPB, int *isSSL);
int slapi_get_client_port(Slapi_PBlock *pPB, int *fromPort);
int slapi_get_client_ip(Slapi_PBlock *pb, char **clientIP);
void slapi_free_client_ip(char **clientIP);
/* computed attributes */
typedef struct _computed_attr_context computed_attr_context;

View File

@ -1843,6 +1843,43 @@ slapi_pw_find(
return 1;
}
// Get connected client IP address.
//
// The user must free the returned client IP after its use.
// Compatible with IBM Tivoli call.
//
// Errors:
// * LDAP_PARAM_ERROR - If the pb parameter is null.
// * LDAP_OPERATIONS_ERROR - If the API encounters error processing the request.
// * LDAP_NO_MEMORY - Failed to allocate required memory.
int
slapi_get_client_ip(Slapi_PBlock *pb, char **clientIP)
{
char *s = NULL;
if(pb == NULL || pb->pb_conn == NULL) return(LDAP_PARAM_ERROR);
if((s = (char *) slapi_ch_malloc(pb->pb_conn->c_peer_name.bv_len + 1)) == NULL) {
return(LDAP_NO_MEMORY);
}
memcpy(s, pb->pb_conn->c_peer_name.bv_val, pb->pb_conn->c_peer_name.bv_len);
s[pb->pb_conn->c_peer_name.bv_len] = 0;
*clientIP = s;
return(LDAP_SUCCESS);
}
// Free previously allocated client IP address.
void
slapi_free_client_ip(char **clientIP)
{
slapi_ch_free((void **) clientIP);
}
#define MAX_HOSTNAME 512
char *