0
mirror of https://github.com/Indemsys/Frequency_Inverter.git synced 2026-05-12 14:28:29 +00:00
Files
2022-01-04 12:22:53 +02:00

347 lines
9.4 KiB
C

/**HEADER********************************************************************
*
* Copyright (c) 2008 Freescale Semiconductor;
* All Rights Reserved
*
* Copyright (c) 2004-2008 Embedded Access Inc.;
* All Rights Reserved
*
* Copyright (c) 1989-2008 ARC International;
* All Rights Reserved
*
***************************************************************************
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
**************************************************************************
*
* $FileName: ifdhcp.c$
* $Version : 3.8.8.0$
* $Date : Jun-14-2012$
*
* Comments:
*
* This file contains the interface functions for the
* DHCP client.
*
*END************************************************************************/
#include <rtcs.h>
#include "rtcs_prv.h"
#include "tcpip.h"
#include "dhcp_prv.h"
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : RTCS_if_bind_DHCP
* Returned Values : uint_32 (error code)
* Comments :
* Initialize a hardware interface using DHCP.
*
*END*-----------------------------------------------------------------*/
uint_32 RTCS_if_bind_DHCP
(
_rtcs_if_handle handle,
/* [IN] the RTCS interface state structure */
DHCP_DATA_STRUCT_PTR params,
/* [IN] optional parameters */
uchar_ptr optptr,
/* [IN] the DHCP options the application wishes to use */
uint_32 optlen
/* [IN] the size of the options buffer passed in */
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP parms;
if (handle==NULL)
{
return RTCSERR_INVALID_PARAMETER;
}
parms.HANDLE = handle;
/* Start CR 1547 */
parms.FLAGS = DHCP_SEND_PROBE;
/* End CR 1547 */
parms.OPT_BUFF = optptr;
parms.OPT_BUFF_SIZE = optlen;
parms.OPTIONS = params;
parms.TIMEOUT = _RTCS_dhcp_term_timeout;
/* We block the application until DHCP completes initialization. */
return RTCSCMD_issue(parms, DHCPCLNT_init);
#else
return RTCSERR_IP_IS_DISABLED;
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : RTCS_if_rebind_DHCP
* Returned Values : uint_32 (error code)
* Comments :
* Initialize a hardware interface using DHCP.
*
*END*-----------------------------------------------------------------*/
uint_32 RTCS_if_rebind_DHCP
(
_rtcs_if_handle handle,
/* [IN] the RTCS interface state structure */
_ip_address address,
/* [IN] the IP address for the interface */
_ip_address netmask,
/* [IN] the IP (sub)network mask for the interface */
uint_32 lease,
/* [IN] the duration of the lease in seconds */
_ip_address server,
/* [IN] the IP address of the DHCP server */
DHCP_DATA_STRUCT_PTR params,
/* [IN] optional parameters */
uchar_ptr optptr,
/* [IN] the DHCP options the application wishes to use */
uint_32 optlen
/* [IN] the size of the options buffer passed in */
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP parms;
parms.HANDLE = handle;
parms.FLAGS = 0;
parms.OPT_BUFF = optptr;
parms.OPT_BUFF_SIZE = optlen;
parms.OPTIONS = params;
parms.CLNT_IP_ADDR = address;
parms.CLNT_IP_MASK = netmask;
parms.SERVER_IP_ADDR = server;
parms.LEASE = lease;
/* Start CR 1066 */
parms.TIMEOUT = 0;
/* End CR 1066 */
/* We block the application until DHCP completes initialization. */
return RTCSCMD_issue(parms, DHCPCLNT_reinit);
#else
return RTCSERR_IP_IS_DISABLED;
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : RTCS_request_DHCP_inform
* Returned Values : uint_32 (error code)
* Comments :
* Request the sending of a DHCP inform message.
*
*END*-----------------------------------------------------------------*/
uint_32 RTCS_request_DHCP_inform
(
_rtcs_if_handle handle,
/* [IN] the RTCS interface state structure */
uchar_ptr optptr,
/* [IN] the DHCP options the application wishes to use */
uint_32 optlen,
/* [IN] the size of the options buffer passed in */
_ip_address client_addr,
/* [IN] the IP address the application is bound to */
_ip_address server_addr,
/* [IN] the IP address of the server we want parameters from */
void (_CODE_PTR_ inform_func)(uchar _PTR_, uint_32, _rtcs_if_handle)
/* The function to call when DHCP is finished */
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP parms;
DHCP_DATA_STRUCT options;
options.BIND_FUNC = inform_func;
options.CHOICE_FUNC = NULL;
options.UNBIND_FUNC = NULL;
options.REBIND_FUNC = NULL;
parms.HANDLE = handle;
parms.FLAGS = DHCP_SEND_INFORM_MESSAGE;
parms.OPT_BUFF = optptr;
parms.OPT_BUFF_SIZE = optlen;
parms.OPTIONS = &options;
parms.CLNT_IP_ADDR = client_addr;
parms.SERVER_IP_ADDR = server_addr;
/* We block the application until DHCP completes initialization. */
return RTCSCMD_issue(parms, DHCPCLNT_init);
#else
return RTCSERR_IP_IS_DISABLED;
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : RTCS_if_bind_DHCP_timed
* Returned Values : uint_32 (error code)
* Comments :
* Initialize a hardware interface using DHCP.
*
*END*-----------------------------------------------------------------*/
uint_32 RTCS_if_bind_DHCP_timed
(
_rtcs_if_handle handle,
/* [IN] the RTCS interface state structure */
DHCP_DATA_STRUCT_PTR params,
/* [IN] optional parameters */
uchar_ptr optptr,
/* [IN] the DHCP options the application wishes to use */
uint_32 optlen,
/* [IN] the size of the options buffer passed in */
uint_32 timeout
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP parms;
if (handle==NULL)
{
return RTCSERR_INVALID_PARAMETER;
}
parms.HANDLE = handle;
/* Start CR 1547 */
parms.FLAGS = DHCP_SEND_PROBE;
/* End CR 1547 */
parms.OPT_BUFF = optptr;
parms.OPT_BUFF_SIZE = optlen;
parms.OPTIONS = params;
parms.TIMEOUT = timeout;
/* We block the application until DHCP completes initialization. */
return RTCSCMD_issue(parms, DHCPCLNT_init);
#else
return RTCSERR_IP_IS_DISABLED;
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : RTCS_if_bind_DHCP_flagged
* Returned Values : uint_32 (error code)
* Comments :
* Initialize a hardware interface using DHCP.
*
*END*-----------------------------------------------------------------*/
uint_32 RTCS_if_bind_DHCP_flagged
(
_rtcs_if_handle handle,
/* [IN] the RTCS interface state structure */
DHCP_DATA_STRUCT_PTR params,
/* [IN] optional parameters */
uchar_ptr optptr,
/* [IN] the DHCP options the application wishes to use */
uint_32 optlen
/* [IN] the size of the options buffer passed in */
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP parms;
if (handle==NULL)
{
return RTCSERR_INVALID_PARAMETER;
}
parms.HANDLE = handle;
parms.FLAGS = params->FLAGS;
parms.OPT_BUFF = optptr;
parms.OPT_BUFF_SIZE = optlen;
parms.OPTIONS = params;
parms.TIMEOUT = 0;
/* We block the application until DHCP completes initialization. */
return RTCSCMD_issue(parms, DHCPCLNT_init);
#else
return RTCSERR_IP_IS_DISABLED;
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/*FUNCTION*-------------------------------------------------------------
*
* Function Name : DHCPCLNT_release
* Returned Values : void
* Comments :
*
*END*-----------------------------------------------------------------*/
void DHCPCLNT_release
(
_rtcs_if_handle ihandle
/* [IN] The pointer to the interface we no longer need */
)
{ /* Body */
#if RTCSCFG_ENABLE_IP4
TCPIP_PARM_IF_DHCP_RELEASE dhcp_parms;
dhcp_parms.HANDLE = ihandle;
RTCSCMD_issue(dhcp_parms, DHCPCLNT_release_internal);
#endif /* RTCSCFG_ENABLE_IP4 */
} /* Endbody */
/* EOF */