Compartir a través de


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

  1. 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 dwRetValDWORD (usado para la comprobación de errores). Se supone que la variable devuelta por GetInterfaceInfo se denomina pInfo.

    DWORD dwRetVal;
    
    
  2. Si DHCP está habilitado, llame a la función IpReleaseAddress y pase la variable AdapterIP_ADAPTER_INDEX_MAP como parámetro. Compruebe si hay errores generales y devuelva su valor a la variable dwRetValDWORD (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

  1. 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 dwRetValDWORD (usado para la comprobación de errores) si esta variable no se ha declarado. Se supone que la variable devuelta por GetInterfaceInfo se denomina pInfo.

    DWORD dwRetVal;
    
    
  2. Llame a la función IpRenewAddress y pase la variable AdapterIP_ADAPTER_INDEX_MAP como parámetro. Compruebe si hay errores generales y devuelva su valor a la variable dwRetValDWORD (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