/************************************************************************** | |
* | |
* Copyright (c) 2012 ZTE Corporation. | |
* | |
*************************************************************************** | |
* Ä£ ¿é Ãû : P98D_DHCP | |
* ÎÄ ¼þ Ãû : dhcp_api.h | |
* Ïà¹ØÎļþ : | |
* ʵÏÖ¹¦ÄÜ : dhcpÄ£¿é½Ó¿Ú·â×° | |
* ×÷ Õß : LiuZhengXuan | |
* °æ ±¾ : V1.0 | |
* Íê³ÉÈÕÆÚ : 2012-08-14 | |
* ÆäËü˵Ã÷ : | |
**************************************************************************/ | |
/************************************************************************** | |
* Ð޸ļǼ | |
**************************************************************************/ | |
#ifndef _DHCP_API_H | |
#define _DHCP_API_H | |
/************************************************************************** | |
* #includeÇø | |
**************************************************************************/ | |
#include "oss_api.h" | |
#ifdef __cplusplus | |
extern "C" | |
{ | |
#endif | |
/************************************************************************** | |
* ³£Á¿¶¨ÒåÇø | |
**************************************************************************/ | |
/************************************************************************** | |
* Êý¾Ý½á¹¹¶¨ÒåÇø | |
**************************************************************************/ | |
typedef struct | |
{ | |
UINT32 addr; | |
}T_zDhcp_IPv4Addr; | |
typedef struct | |
{ | |
UINT32 addr[4]; | |
}T_zDhcp_IPv6Addr; | |
typedef union | |
{ | |
T_zDhcp_IPv4Addr v4Addr; | |
T_zDhcp_IPv6Addr v6Addr; | |
}T_zDhcp_IPAddr; | |
typedef struct | |
{ | |
UINT8 pdpType; /* IPv4-0x21 IPv6-0x57 IPv4v6-0x8d */ | |
T_zDhcp_IPv4Addr ipv4Addr; /* Íø²àÉϱ¨µÄipv4µØÖ· */ | |
T_zDhcp_IPv4Addr routerIp; /* Íø¹ØipµØÖ· */ | |
T_zDhcp_IPv4Addr snMask; /* ×ÓÍøÑÚÂë */ | |
T_zDhcp_IPv4Addr v4Dns1; /* IPv4 DNS server addresses 1 */ | |
T_zDhcp_IPv4Addr v4Dns2; /* IPv4 DNS server addresses 2 */ | |
T_zDhcp_IPv6Addr ipv6Addr; /* Íø²àÉϱ¨µÄipv6µØÖ·,µ±Ç°Ö»Éϱ¨ÁË8×Ö½ÚµÄID */ | |
T_zDhcp_IPv6Addr v6Dns1; /* IPv6 DNS server addresses 1 */ | |
T_zDhcp_IPv6Addr v6Dns2; /* IPv6 DNS server addresses 2 */ | |
}T_zDhcp_PdpCfgInf; /* PDP¼¤»î»ñÈ¡µÄÉÏÏÂÎÄÐÅÏ¢½á¹¹ */ | |
typedef enum | |
{ | |
DHCP_FRAMETYPE_IP_V4_TRANS = 0, /* IPv4ÏòÍâÍø´«ÊäÊý¾Ý */ | |
DHCP_FRAMETYPE_IP_V6_TRANS, /* IPv6ÏòÍâÍø´«ÊäÊý¾Ý */ | |
DHCP_FRAMETYPE_IP_V4_DHCP_RSP, /* IPv4µÄDHCPÓ¦´ðÊý¾Ý */ | |
DHCP_FRAMETYPE_IP_V6_DHCP_RSP, /* IPv6µÄDHCPÓ¦´ðÊý¾Ý */ | |
DHCP_FRAMETYPE_ARP_RSP, /* ARPÓ¦´ðÊý¾Ý */ | |
DHCP_FRAMETYPE_NDP_RSP, /* NDPÓ¦´ðÊý¾Ý */ | |
DHCP_FRAMETYPE_INVALID /* ÎÞЧÊý¾Ý */ | |
}T_zDhcp_FrameType; /* ¶ÁÈ¡Çý¶¯Êý¾ÝÖ¡ÀàÐÍ */ | |
/************************************************************************** | |
* º¯ÊýÉùÃ÷Çø | |
**************************************************************************/ | |
VOID zDhcp_Init(VOID); | |
UINT32 zDhcp_OpenSvr(const T_zDhcp_PdpCfgInf *pPdpCfgInf); | |
T_zDhcp_FrameType zDhcp_ParseEtherFrame(UINT32 handle, const UINT8 *pEtherFrame, UINT16 etherFrameSize, BOOL *pIsRecvRs); | |
UINT16 zDhcp_GetRspEtherFrame(UINT32 handle, | |
UINT8 *pReqEtherFrame, | |
UINT16 reqEtherFrameSize, | |
UINT8 *pRspEtherFrameBuf, | |
UINT16 rspEtherFrameBufSize, | |
BOOL *pIsDhcpOver); | |
UINT16 zDhcp_GetRspArpFrame(UINT32 handle, UINT8 *pReqEtherFrame, UINT16 reqSize, UINT8 *pRspEtherFrame, UINT16 rspSize, UINT32 addr); | |
UINT32 zDhcp_GetCfgInfV4addr(UINT32 handle); | |
BOOL zDhcp_FillEtherFrame(UINT32 handle, UINT8 *pEtherFrame, UINT16 etherFrameSize, BOOL *pIsRecvRa); | |
VOID zDhcp_CloseSvr(UINT32 handle); | |
VOID zDhcp_UnInit(VOID); | |
BOOL zDhcp_StartUfi(VOID); | |
BOOL zDhcp_RecycleUfiIp(T_zDhcp_IPv4Addr *pIpv4AddrRemoved, T_zDhcp_IPv6Addr *pIpv6AddrRemoved, BOOL isIpv4Addr); | |
BOOL zDhcp_StaticSetUfiIpv4(UINT8 *pMacAddr, T_zDhcp_IPv4Addr *pSetIpv4Addr); | |
VOID zDhcp_StopUfi(VOID); | |
UINT32 zDhcp_GetSrcIpPortType(UINT8 *pPacket, T_zDhcp_IPAddr *pIpAddr, UINT16 *pPort, UINT16 *pPdpType); | |
UINT32 zDhcp_GetDestIpPortType(UINT8 *pPacket, T_zDhcp_IPAddr *pIpAddr, UINT16 *pPort, UINT16 *pPdpType); | |
UINT32 zDhcp_UpdatePacketSrcIpv4(UINT8 *pPacket, T_zDhcp_IPv4Addr *pIpAddr); | |
UINT32 zDhcp_UpdatePacketDestIpv4(UINT8 *pPacket, T_zDhcp_IPv4Addr *pIpAddr); | |
BOOL zDhcp_IsDnsPacket(UINT8 *pPacket); | |
/************************************************************************** | |
* È«¾Ö±äÁ¿ÉùÃ÷Çø | |
**************************************************************************/ | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif /* _DHCP_API_H */ | |