/*************************************************************************** * Copyright 2007 - 2009 VMware, Inc. All rights reserved. ***************************************************************************/ /* * @VMKAPIMOD_LICENSE@ */ /* *********************************************************************** * vmkapi_socket_ip.h */ /** * \addtogroup Socket *@{ * \defgroup SocketIP IP Socket Interfaces *@{ * * Data types and constants for IPv4 sockets * *********************************************************************** */ #ifndef _VMKAPI_SOCKET_IP_H_ #define _VMKAPI_SOCKET_IP_H_ /** \cond never */ #ifndef VMK_HEADER_INCLUDED_FROM_VMKAPI_H #error This vmkapi file should never be included directly but only via vmkapi.h #endif /** \endcond never */ #include "sockets/vmkapi_socket.h" /* * IP protocol types */ #define VMK_SOCKET_IPPROTO_IP 0 #define VMK_SOCKET_IPPROTO_ICMP 1 #define VMK_SOCKET_IPPROTO_TCP 6 #define VMK_SOCKET_IPPROTO_UDP 17 #define VMK_SOCKET_IPPROTO_GRE 47 /* * Special addresses */ #define VMK_SOCKET_IPINADDR_ANY ((vmk_uint32)(0x0)) #define VMK_SOCKET_IPINADDR_BROADCAST ((vmk_uint32)(0xffffffff)) /* * Socket level */ #define VMK_SOCKET_SOL_IP 0 /* * Socket options */ #define VMK_SOCKET_OPT_IP_HDRINCL 2 /** * \brief Binary IP address in network byte order. */ typedef struct vmk_SocketIPAddressAddr { vmk_uint32 s_addr; } vmk_SocketIPAddressAddr; /** * \brief An IPv4-style socket address. */ typedef struct vmk_SocketIPAddress { /** \brief Address length. Should be sizeof(vmk_SocketIPAddress) */ vmk_uint8 sin_len; /** \brief Address family. Should be VMK_SOCKET_AF_INET */ vmk_uint8 sin_family; /** \brief IP port in network byte order */ vmk_uint16 sin_port; /** \brief Binary IP address in network byte order */ vmk_SocketIPAddressAddr sin_addr; /** \brief Padding. This area should be zeroed. */ vmk_uint8 sin_zero[8]; } VMK_ATTRIBUTE_PACKED vmk_SocketIPAddress; /* *********************************************************************** * vmk_Ntohl -- */ /** * * \ingroup SocketIP * \brief Convert a 32 bit unsigned integer in the network byte order * to the host-native byte order. * * \note This function will not block. * * \param[in] x Value to reorder. * * \return Reordered value. * * \sa vmk_Htonl * *********************************************************************** */ static inline vmk_uint32 vmk_Ntohl(vmk_uint32 x) { return vmk_BE32ToCPU(x); } /* *********************************************************************** * vmk_Htonl -- */ /** * * \ingroup SocketIP * \brief Convert a 32 bit unsigned integer in the host-native byte * order to the network byte order. * * \note This function will not block. * * \param[in] x Value to reorder. * * \return Reordered value. * * \sa vmk_Ntohl * *********************************************************************** */ static inline vmk_uint32 vmk_Htonl(vmk_uint32 x) { return vmk_CPUToBE32(x); } /* *********************************************************************** * vmk_Ntohs -- */ /** * * \ingroup SocketIP * \brief Convert a 16 bit unsigned integer in the network byte order * to the host-native byte order. * * \note This function will not block. * * \param[in] x Value to reorder. * * \return Reordered value. * * \sa vmk_Htons * *********************************************************************** */ static inline vmk_uint16 vmk_Ntohs(vmk_uint16 x) { return vmk_BE16ToCPU(x); } /* *********************************************************************** * vmk_Htons -- */ /** * * \ingroup SocketIP * \brief Convert a 16 bit unsigned integer in the host-native byte * order to the network byte order. * * \note This function will not block. * * \param[in] x Value to reorder. * * \return Reordered value. * * \sa vmk_Ntohs * *********************************************************************** */ static inline vmk_uint16 vmk_Htons(vmk_uint16 x) { return vmk_CPUToBE16(x); } /** @} */ /** @} */ #endif /* _VMKAPI_SOCKET_IP_H_ */