⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rvinet.h

📁 h.248协议源码
💻 H
字号:
/*****************************************************************************
Filename   : rvinet.h
Description: Internet Protocol utilities interface declaration.
******************************************************************************
                Copyright (c) 1999 RADVision Inc.
******************************************************************************
NOTICE:
This document contains information that is proprietary to RADVision Inc.
No part of this publication may be reproduced in any form whatsoever 
without written prior approval by RADVision Inc.

RADVision Inc. reserves the right to revise this publication and make 
changes without obligation to notify any person of such revisions or 
changes.
******************************************************************************
$Revision:$
$Date:$
$Author: S. Cipolli$
*****************************************************************************/

#ifndef RV_INET_H
#define RV_INET_H

#include "rvplatform.h"
#include "rvtypes.h"

#if defined(RV_SOCKETS_BSD)
#if defined(RV_OS_OSE)
#	include "inet.h"
#else
#	include <sys/types.h>
#	include <sys/socket.h>
#	include <netinet/in.h>
#	include <arpa/inet.h>
#endif
#if defined(RV_OS_VXWORKS)
#include <hostLib.h>
#endif
#elif defined(RV_SOCKETS_WSOCK)
#	include <windows.h>
#ifdef RV_WINSOCK_2
#	include "ws2tcpip.h"
#endif  
#endif 

#if defined(RV_OS_REDHAT) || defined(RV_OS_SOLARIS) || defined(RV_OS_TRU64) || defined(RV_OS_HPUX)
#include <errno.h>     /* for errno  */
#include <string.h>    /* for strerror */
#endif

#define RV_INET_PORTANY						0
 
#ifdef RV_INET_IPV6
#	define RV_IPV4_MAPPED_IPV6(ipv4)		"::FFFF:" #ipv4
#	define RV_IPV4_COMPATABLE_IPV6(ipv4)	"::" #ipv4
#	define RV_INET_ADDRLOOPBACK				in6addr_loopback
#	define RV_INET_ADDRANY					in6addr_any
#else
#	define RV_IPV4_COMPATABLE_IPV6(ipv4)	#ipv4
#	define RV_IPV4_MAPPED_IPV6(ipv4)		#ipv4
#if defined(RV_SOCKETS_BSD)
#	define RV_INET_ADDRLOOPBACK				INADDR_LOOPBACK
#	define RV_INET_ADDRANY					INADDR_ANY
#elif defined(RV_SOCKETS_WSOCK)
#	define RV_INET_ADDRLOOPBACK				INADDR_LOOPBACK
#	define RV_INET_ADDRANY					INADDR_ANY
#elif defined(RV_SOCKETS_PSOS)
#	define RV_INET_ADDRLOOPBACK				0x7F000001UL
#	define RV_INET_ADDRANY					INADDR_ANY
#elif defined(RV_SOCKETS_NUCLEUS)
#	include <nucleus.h>
#	include <inc/nu_net.h>
#	define RV_INET_ADDRLOOPBACK				0x7F000001UL
#	define RV_INET_ADDRANY					IP_ADDR_ANY
#	define in_addr SCK_IP_ADDR_STRUCT
#	define s_addr sck_ip_addr
#	define gethostname NU_Get_Host_Name

/* call the equivelent Nucleus function */
#	define htonl TLS_Longswap
#	define ntohl TLS_Longswap
#	define htons TLS_Intswap
#	define ntohs TLS_Intswap
#else
#	error Unknown sockets implementation
#endif
#endif

typedef RvUint16 RvInetPort;

typedef struct in_addr RvIpv4Addr;

#define rvIpv4AddrConstruct(ipv4, ip)   ((ipv4)->s_addr = (ip))
#define rvIpv4AddrConstructCopy rvDefaultConstructCopy
#define rvIpv4AddrDestruct rvDefaultDestruct
#define rvIpv4AddrToUint32(ipv4)        ((ipv4)->s_addr)
#define rvIpv4AddrCopy rvDefaultCopy
#define rvIpv4AddrEqual(a, b) (rvIpv4AddrToUint32(a) == rvIpv4AddrToUint32(b))

#if defined(RV_INET_IPV6)
typedef struct in6_addr RvIpv6Addr;

#define rvIpv6AddrConstruct(ipv6, ip)   (memcpy((char*)&(ipv6)->s6_addr,(char*)(ip),sizeof(RvIpv6Addr)))
#define rvIpv6AddrConstructCopy rvDefaultConstructCopy
#define rvIpv6AddrDestruct rvDefaultDestruct
#define rvIpv6AddrCopy rvDefaultCopy
#define rvIpv6AddrEqual(a, b) (memcmp((char*)(a),(char*)(b),sizeof(RvIpv6Addr)) == 0)
#endif

#if defined(RV_SOCKETS_NUCLEUS)
extern char * rvInetNtoa(UINT32 in32, char *ip_buffer);
#else
extern char * rvInetNtoa(struct in_addr in, char *ip_buffer);
#endif

#if defined(RV_SOCKETS_PSOS) || defined(RV_SOCKETS_NUCLEUS)
extern RvUint32 inet_addr(const char *cp);
#endif

#if defined(RV_SOCKETS_PSOS) || defined(RV_OS_OSE)
int gethostname(char *buf, size_t size);
#endif

#if defined(RV_SOCKETS_WSOCK)
#define rvGetLastError()                WSAGetLastError()
#elif defined(RV_OS_REDHAT) || defined(RV_OS_SOLARIS) || defined(RV_OS_TRU64) || defined(RV_OS_HPUX) || defined(RV_OS_PSOS)
#define rvGetLastError()                errno
#elif defined(RV_OS_VXWORKS)
#define rvGetLastError()                errnoGet()
#else
#define rvGetLastError()                0 /* Not implemented */
#endif

const char *rvGetLastErrorAsString(int errorno);

#define rvInetIsIpv4(str)               (inet_addr(str) != (~0))

#if defined(RV_INET_IPV6)
RvBool rvInetIsIpv6(const char* str);        
#else
#define rvInetIsIpv6(str)               (rvFalse)
#endif
#define rvInetIsIp(str)                 (rvInetIsIpv4(str) || rvInetIsIpv6(str))

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -