335 lines
12 KiB
C
335 lines
12 KiB
C
/*
|
|
******************************************************************************
|
|
* HEADER FILE
|
|
*
|
|
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: socket.h,v $ $Revision: 1.13.10.1 $
|
|
* $Source: /home/interpeak/CVSRoot/ipxinc/include/sys/socket.h,v $
|
|
* $Author: svc-cmnet $ $Date: 2013-03-13 07:45:47 $
|
|
* $State: Exp $ $Locker: $
|
|
*
|
|
* INTERPEAK_COPYRIGHT_STRING
|
|
* Design and implementation by Lennart Bang <lob@interpeak.se>
|
|
******************************************************************************
|
|
*/
|
|
#ifndef IP_SYS_SOCKET_H
|
|
#define IP_SYS_SOCKET_H
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 1 DESCRIPTION
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 2 CONFIGURATION
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include "ipcom_config.h"
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 3 INCLUDE FILES
|
|
****************************************************************************
|
|
*/
|
|
|
|
#include "ipcom_sock.h"
|
|
#include "ipcom_sysctl.h"
|
|
|
|
#include "sys/types.h"
|
|
#include "limits.h"
|
|
#include "errno.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 4 DEFINES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* domain
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define AF_UNSPEC IP_AF_UNSPEC
|
|
#define AF_INET IP_AF_INET
|
|
#define AF_NETLINK IP_AF_NETLINK
|
|
#define AF_ROUTE IP_AF_ROUTE
|
|
#define AF_LINK IP_AF_LINK
|
|
#define AF_PACKET IP_AF_PACKET
|
|
#define AF_INET6 IP_AF_INET6
|
|
#define AF_KEY IP_AF_KEY
|
|
#define AF_IPX IP_AF_IPX
|
|
#define AF_MAX IP_AF_MAX
|
|
|
|
#define PF_INET IP_PF_INET
|
|
#define PF_NETLINK IP_PF_NETLINK
|
|
#define PF_ROUTE IP_PF_ROUTE
|
|
#define PF_LINK IP_PF_LINK
|
|
#define PF_PACKET IP_PF_PACKET
|
|
#define PF_INET6 IP_PF_INET6
|
|
#define PF_KEY IP_PF_KEY
|
|
#define PF_IPX IP_PF_IPX
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* Socket types
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define SOCK_STREAM IP_SOCK_STREAM
|
|
#define SOCK_DGRAM IP_SOCK_DGRAM
|
|
#define SOCK_RAW IP_SOCK_RAW
|
|
#define SOCK_PACKET IP_SOCK_PACKET
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* setsockopt/getsockopt
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define SOL_SOCKET IP_SOL_SOCKET
|
|
|
|
/***** IP_SOL_SOCKET socket options: *****/
|
|
#define SO_REUSEADDR IP_SO_REUSEADDR
|
|
#define SO_KEEPALIVE IP_SO_KEEPALIVE
|
|
#define SO_DONTROUTE IP_SO_DONTROUTE
|
|
#define SO_BROADCAST IP_SO_BROADCAST
|
|
#define SO_USELOOPBACK IP_SO_USELOOPBACK
|
|
#define SO_REUSEPORT IP_SO_REUSEPORT
|
|
#define SO_SNDBUF IP_SO_SNDBUF
|
|
#define SO_RCVBUF IP_SO_RCVBUF
|
|
#define SO_RCVTIMEO IP_SO_RCVTIMEO
|
|
#define SO_ERROR IP_SO_ERROR
|
|
#define SO_TYPE IP_SO_TYPE
|
|
#define SO_BINDTODEVICE IP_SO_BINDTODEVICE
|
|
#define SO_PASSCRED 16 /* UNSUPPORTED */
|
|
#define SO_BSDCOMPAT 0xffffffff /* UNSUPPORTED */
|
|
#define SO_VR IP_SO_X_VR
|
|
|
|
/*
|
|
*===========================================================================
|
|
* sysctl
|
|
*===========================================================================
|
|
* Networking sysctl's
|
|
*/
|
|
#define NET_RT_DUMP IP_NET_RT_DUMP
|
|
#define NET_RT_FLAGS IP_NET_RT_FLAGS
|
|
#define NET_RT_IFLIST IP_NET_RT_IFLIST
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* msghdr
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define msghdr Ip_msghdr
|
|
|
|
/* msg_flags values */
|
|
#define MSG_TRUNC IP_MSG_TRUNC
|
|
#define MSG_CTRUNC IP_MSG_CTRUNC
|
|
#define MSG_DONTWAIT IP_MSG_DONTWAIT
|
|
#define MSG_WAITALL IP_MSG_WAITALL
|
|
#define MSG_OOB 0x80 /* unsupported */
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* cmsghdr
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define cmsghdr Ip_cmsghdr
|
|
|
|
#define CMSG_ALIGN(len) IP_CMSG_ALIGN(len)
|
|
#define CMSG_FIRSTHDR(mhdrptr) IP_CMSG_FIRSTHDR(mhdrptr)
|
|
#define CMSG_NXTHDR(mhdr,cmsg) IP_CMSG_NXTHDR(mhdr,cmsg)
|
|
#define CMSG_DATA(cmsgptr) IP_CMSG_DATA(cmsgptr)
|
|
#define CMSG_SPACE(len) IP_CMSG_SPACE(len)
|
|
#define CMSG_LEN(len) IP_CMSG_LEN(len)
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* recvxx() argument flags
|
|
*===========================================================================
|
|
*/
|
|
#define MSG_DONTWAIT IP_MSG_DONTWAIT
|
|
#define MSG_PEEK IP_MSG_PEEK
|
|
#define MSG_DONTROUTE IP_MSG_DONTROUTE
|
|
#define MSG_NOTIFICATION IP_MSG_NOTIFICATION
|
|
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* shutdown() argument flags
|
|
*===========================================================================
|
|
*/
|
|
#define SHUT_RD IP_SHUT_RD
|
|
#define SHUT_WR IP_SHUT_WR
|
|
#define SHUT_RDWR IP_SHUT_RDWR
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* UNSUPPORTED
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define SCM_CREDENTIALS 0x02
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 5 TYPES
|
|
****************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*===========================================================================
|
|
* sockaddr
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define sockaddr Ip_sockaddr
|
|
#define sockaddr_storage Ip_sockaddr_storage
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* if_nameindex
|
|
*===========================================================================
|
|
*/
|
|
|
|
typedef struct if_nameindex Ip_if_nameindex;
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* _T TYPES
|
|
*===========================================================================
|
|
*/
|
|
|
|
#define sa_family_t Ip_sa_family_t
|
|
#define socklen_t Ip_socklen_t
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* in_pktinfo
|
|
*===========================================================================
|
|
*/
|
|
#define in_pktinfo Ip_in_pktinfo
|
|
|
|
|
|
/*
|
|
*===========================================================================
|
|
* UNSUPPORTED
|
|
*===========================================================================
|
|
*/
|
|
struct ucred
|
|
{
|
|
Ip_u32 pid;
|
|
Ip_u32 uid;
|
|
Ip_u32 gid;
|
|
};
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* 6 FUNCTIONS
|
|
****************************************************************************
|
|
*/
|
|
|
|
#ifdef IPCOM_USE_NATIVE_SOCK_API
|
|
#define socket(domain,type,protocol) ipcom_socket_usr(domain,type,protocol)
|
|
#define shutdown(fd,how) ipcom_shutdown_usr((Ip_fd)fd,how)
|
|
#define bind(fd,addr,addrlen) ipcom_bind_usr((Ip_fd)fd,(IP_CONST struct Ip_sockaddr *)addr,(Ip_socklen_t)addrlen)
|
|
#define connect(fd,addr,addrlen) ipcom_connect_usr((Ip_fd)fd,(IP_CONST struct Ip_sockaddr *)addr,(Ip_socklen_t)addrlen)
|
|
#define accept(fd,addr,addrlenp) ipcom_accept_usr((Ip_fd)fd,(struct Ip_sockaddr *)addr,(Ip_socklen_t *)addrlenp)
|
|
#define listen(fd,backlog) ipcom_listen_usr((Ip_fd)fd,backlog)
|
|
|
|
#define send(fd,msg,len,flags) ipcom_send_usr((Ip_fd)fd,(IP_CONST void *)(msg),(Ip_size_t)len,flags)
|
|
#define sendto(fd,msg,len,flags,to,tolen) ipcom_sendto_usr((Ip_fd)fd,(IP_CONST void *)(msg),(Ip_size_t)len,flags,(IP_CONST struct Ip_sockaddr *)to,(Ip_socklen_t)tolen)
|
|
#define sendmsg(fd,msg,flags) ipcom_sendmsg_usr((Ip_fd)fd,(IP_CONST struct Ip_msghdr *)msg,flags)
|
|
|
|
#define recv(fd,buf,len,flags) ipcom_recv_usr((Ip_fd)fd,(void *)(buf),(Ip_size_t)len,flags)
|
|
#define recvfrom(fd,buf,len,flags,from,fp) ipcom_recvfrom_usr((Ip_fd)fd,(void *)(buf),(Ip_size_t)len,flags,(struct Ip_sockaddr *)from,(Ip_socklen_t *)fp)
|
|
#define recvmsg(fd,msg,flags) ipcom_recvmsg_usr((Ip_fd)fd,(struct Ip_msghdr *)msg,flags)
|
|
|
|
#define getsockopt(fd,level,optname,optval,optlenp) ipcom_getsockopt_usr((Ip_fd)fd,level,optname,optval,(Ip_socklen_t *)optlenp)
|
|
#define setsockopt(fd,level,optname,optval,optlen) ipcom_setsockopt_usr((Ip_fd)fd,level,optname,(IP_CONST void *)optval,(Ip_socklen_t)optlen)
|
|
|
|
#define getsockname(fd,name,namelenp) ipcom_getsockname_usr((Ip_fd)fd,(struct Ip_sockaddr *)name,(Ip_socklen_t *)namelenp)
|
|
#define getpeername(fd,name,namelenp) ipcom_getpeername_usr((Ip_fd)fd,(struct Ip_sockaddr *)name,(Ip_socklen_t *)namelenp)
|
|
|
|
#define if_nametoindex(ifname) ipcom_if_nametoindex((IP_CONST char *)ifname)
|
|
#define ifNameToIfIndex(ifname) ipcom_if_nametoindex((IP_CONST char *)ifname)
|
|
#define if_indextoname(ifindex,ifname) ipcom_if_indextoname((Ip_u32)ifindex, (char *)ifname)
|
|
#define if_nameindex() ipcom_if_nameindex()
|
|
#define if_freenameindex(pif) ipcom_if_freenameindex(pif)
|
|
|
|
#else /* IPCOM_USE_NATIVE_SOCK_API */
|
|
|
|
#define socket(domain,type,protocol) ipcom_socket(domain,type,protocol)
|
|
#define shutdown(fd,how) ipcom_shutdown((Ip_fd)fd,how)
|
|
#define bind(fd,addr,addrlen) ipcom_bind((Ip_fd)fd,(IP_CONST struct Ip_sockaddr *)addr,(Ip_socklen_t)addrlen)
|
|
#define connect(fd,addr,addrlen) ipcom_connect((Ip_fd)fd,(IP_CONST struct Ip_sockaddr *)addr,(Ip_socklen_t)addrlen)
|
|
#define accept(fd,addr,addrlenp) ipcom_accept((Ip_fd)fd,(struct Ip_sockaddr *)addr,(Ip_socklen_t *)addrlenp)
|
|
#define listen(fd,backlog) ipcom_listen((Ip_fd)fd,backlog)
|
|
|
|
#define send(fd,msg,len,flags) ipcom_send((Ip_fd)fd,(IP_CONST void *)(msg),(Ip_size_t)len,flags)
|
|
#define sendto(fd,msg,len,flags,to,tolen) ipcom_sendto((Ip_fd)fd,(IP_CONST void *)(msg),(Ip_size_t)len,flags,(IP_CONST struct Ip_sockaddr *)to,(Ip_socklen_t)tolen)
|
|
#define sendmsg(fd,msg,flags) ipcom_sendmsg((Ip_fd)fd,(IP_CONST struct Ip_msghdr *)msg,flags)
|
|
|
|
#define recv(fd,buf,len,flags) ipcom_recv((Ip_fd)fd,(void *)(buf),(Ip_size_t)len,flags)
|
|
#define recvfrom(fd,buf,len,flags,from,fp) ipcom_recvfrom((Ip_fd)fd,(void *)(buf),(Ip_size_t)len,flags,(struct Ip_sockaddr *)from,(Ip_socklen_t *)fp)
|
|
#define recvmsg(fd,msg,flags) ipcom_recvmsg((Ip_fd)fd,(struct Ip_msghdr *)msg,flags)
|
|
|
|
#define getsockopt(fd,level,optname,optval,optlenp) ipcom_getsockopt((Ip_fd)fd,level,optname,optval,(Ip_socklen_t *)optlenp)
|
|
#define setsockopt(fd,level,optname,optval,optlen) ipcom_setsockopt((Ip_fd)fd,level,optname,(IP_CONST void *)optval,(Ip_socklen_t)optlen)
|
|
|
|
#define getsockname(fd,name,namelenp) ipcom_getsockname((Ip_fd)fd,(struct Ip_sockaddr *)name,(Ip_socklen_t *)namelenp)
|
|
#define getpeername ipcom_getpeername
|
|
|
|
#define if_nametoindex(ifname) ipcom_if_nametoindex((IP_CONST char *)ifname)
|
|
#define ifNameToIfIndex(ifname) ipcom_if_nametoindex((IP_CONST char *)ifname)
|
|
#define if_indextoname(ifindex,ifname) ipcom_if_indextoname((Ip_u32)ifindex, (char *)ifname)
|
|
#define if_nameindex() ipcom_if_nameindex()
|
|
#define if_freenameindex(pif) ipcom_if_freenameindex(pif)
|
|
|
|
#endif /* IPCOM_USE_NATIVE_SOCK_API */
|
|
|
|
#ifdef NETSNMP_INTERPEAK
|
|
#ifdef socket
|
|
#undef socket
|
|
#endif
|
|
#define socket(domain,type,protocol) ipnetsnmp_socket(domain,type,protocol)
|
|
IP_PUBLIC Ip_fd ipnetsnmp_socket(int domain, int type, int protocol);
|
|
#endif /* #ifdef NETSNMP_INTERPEAK */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
****************************************************************************
|
|
* END OF FILE
|
|
****************************************************************************
|
|
*/
|