📄 rvinet.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 + -