Administración de concesiones dhcp con IpReleaseAddress, IpRenewAddress
Las funciones IpReleaseAddress y IpRenewAddress se usan para liberar y renovar la concesión actual del Protocolo de configuración dinámica de host (DHCP). La función IpReleaseAddress libera una dirección IPv4 obtenida previamente a través de DHCP. La función IpRenewAddress renueva una concesión en una dirección IPv4 obtenida previamente a través de DHCP. Es habitual usar estas dos funciones juntas, liberar primero la concesión con una llamada a IpReleaseAddress y, a continuación, renovar la concesión con una llamada a la función IpRenewAddress .
Cuando un cliente DHCP ha obtenido previamente una concesión DHCP y No se llama a IpReleaseAddress antes de la función IpRenewAddress , la solicitud de cliente DHCP se envía al servidor DHCP que emitió la concesión DHCP inicial. Es posible que este servidor DHCP no esté disponible o se produzca un error en la solicitud DHCP. Cuando un host ha obtenido previamente una concesión DHCP y se llama a IpReleaseAddress antes de la función IpRenewAddress , el cliente DHCP libera primero la dirección IP obtenida y envía una solicitud de cliente DHCP para una respuesta de cualquier servidor DHCP disponible.
Nota
Las funciones IpReleaseAddress e IpRenewAddress requieren que DHCP esté habilitado para funcionar correctamente.
La función IpReleaseAddress toma un puntero a una estructura IP_ADAPTER_INDEX_MAP como único parámetro. Para obtener este parámetro, llame primero a GetInterfaceInfo. Para obtener ayuda con la función GetInterfaceInfo , consulte Administración de interfaces mediante GetInterfaceInfo.
Para usar IpReleaseAddress
Obtenga un puntero a una estructura de IP_ADAPTER_INDEX_MAP mediante la función GetInterfaceInfo . (Para obtener ayuda con la función GetInterfaceInfo, consulte Administración de interfaces mediante GetInterfaceInfo). Cree un objeto
dwRetVal
DWORD (usado para la comprobación de errores). Se supone que la variable devuelta por GetInterfaceInfo se denominapInfo
.DWORD dwRetVal;
Si DHCP está habilitado, llame a la función IpReleaseAddress y pase la variable
Adapter
IP_ADAPTER_INDEX_MAP como parámetro. Compruebe si hay errores generales y devuelva su valor a la variabledwRetVal
DWORD (para una comprobación de errores más extensa).Nota
La función GetAdaptersInfo devuelve un parámetro que se puede usar para comprobar si DHCP está habilitado antes de llamar a estas funciones. Para obtener ayuda con GetAdaptersInfo, consulte Administración de adaptadores de red mediante GetAdaptersInfo.
if ((dwRetVal = IpReleaseAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Release succeeded.\n"); }
Nota
Es habitual usar estas dos funciones juntas, llamar a la función IpReleaseAddress y, a continuación, llamar a la función IpRenewAddress , pasando la misma estructura que el parámetro a ambas funciones. En el siguiente procedimiento se da por supuesto que las funciones no se usan conjuntamente; sin embargo, si las funciones se usan juntas, omita el paso 1.
Para usar IpRenewAddress
Obtenga un puntero a una estructura de IP_ADAPTER_INDEX_MAP mediante la función GetInterfaceInfo . (Para obtener ayuda con la función GetInterfaceInfo , consulte Administración de interfaces mediante GetInterfaceInfo). Declare un objeto
dwRetVal
DWORD (usado para la comprobación de errores) si esta variable no se ha declarado. Se supone que la variable devuelta por GetInterfaceInfo se denominapInfo
.DWORD dwRetVal;
Llame a la función IpRenewAddress y pase la variable
Adapter
IP_ADAPTER_INDEX_MAP como parámetro. Compruebe si hay errores generales y devuelva su valor a la variabledwRetVal
DWORD (para una comprobación de errores más extensa).if ((dwRetVal = IpRenewAddress(&pInfo->Adapter[0])) == NO_ERROR) { printf("Ip Renew succeeded.\n"); }
Paso siguiente: Administrar direcciones IP mediante AddIPAddress y DeleteIPAddress
Paso anterior: Administración de direcciones IP mediante GetIpAddrTable