251 lines
6.4 KiB
C
251 lines
6.4 KiB
C
/* sockFunc.h - socket function table header */
|
|
|
|
/*
|
|
* Copyright 1984-2006, 2009-2010 Wind River Systems, Inc.
|
|
*
|
|
* The right to copy, distribute or otherwise make use of this software
|
|
* may be licensed only pursuant to the terms of an applicable Wind River
|
|
* license agreement.
|
|
*/
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
02p,05jan11,h_x Fix WIND00248759
|
|
02o,17feb10,dlk Remove FUNCPTR function pointer use entirely.
|
|
02n,29may09,dlk LP64 conversion and POSIXification.
|
|
02m,20jun06,jpb Removed I960 check.
|
|
02l,14sep04,dlk Omit entire contents of this file unless _WRS_KERNEL is
|
|
defined.
|
|
02k,29jun04,dlk Merged from BASE6_ITER5_FRZ27.
|
|
02l,28may04,dlk Use single socket IO-system device driver with wrappers
|
|
calling back-end routines.
|
|
02k,24mar04,mcm Including time.h instead of sys/time.h.
|
|
02j,15mar04,bwa added multiple concurrent backends capabalities.
|
|
02j,28may04,niq Merging from base6 label POST_ITER5_FRZ16_REBASE (ver
|
|
/main/vdt/base6_itn5-int/2)
|
|
02i,08dec03,vvv updated based on inspection comments
|
|
02h,03dec03,asr Fix compile errors after dinkum libc check-in
|
|
02g,14nov03,nee Adding closeRtn to SOCK_FUNC
|
|
02f,05nov03,cdw Removal of unnecessary _KERNEL guards.
|
|
02e,04nov03,rlm Ran batch header path update for header re-org.
|
|
02d,03nov03,rlm Removed wrn/coreip/ prefix from #includes for header re-org.
|
|
02c,10jun03,vvv include netVersion.h
|
|
02b,02feb02,ham changed for tornado build
|
|
02a,15aug01,ann ported to clarinet from AE1.1 version 01f
|
|
*/
|
|
|
|
#ifndef __INCsockFunch
|
|
#define __INCsockFunch
|
|
|
|
#ifdef _WRS_KERNEL
|
|
|
|
/* includes */
|
|
#include <netVersion.h>
|
|
#include <sys/times.h>
|
|
|
|
#if defined (_WRS_VXWORKS_MAJOR) && (_WRS_VXWORKS_MAJOR >= 6)
|
|
#include <ioLib.h> /* For type DEV_HDR */
|
|
#else
|
|
#include <iosLib.h>
|
|
#endif /* defined (_WRS_VXWORKS_MAJOR) && (_WRS_VXWORKS_MAJOR >= 6) */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* HIDDEN */
|
|
|
|
/* typedefs */
|
|
|
|
typedef struct sockFunc SOCK_FUNC;
|
|
|
|
struct socket; /* defined in net/socketvar.h */
|
|
|
|
typedef SOCK_FUNC * (*SOCK_FUNC_INIT) (void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/*
|
|
* sys/socket.h has circular dependencies on this header file, more
|
|
* specifically on type SOCK_FUNC which must be defined. This is why
|
|
* this file must be included after SOCK_FUNC has been defined.
|
|
*/
|
|
#include <sys/socket.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef int (*SOCK_FUNC_ACCEPT)
|
|
(struct socket **pso,
|
|
struct sockaddr * addr,
|
|
socklen_t * pAddrlen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_BIND)
|
|
(struct socket * so,
|
|
const struct sockaddr * name,
|
|
socklen_t namelen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_CONNECT)
|
|
(struct socket * so,
|
|
const struct sockaddr * name,
|
|
socklen_t namelen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_CONN_TIMEO)
|
|
(struct socket * so,
|
|
const struct sockaddr * name,
|
|
socklen_t namelen,
|
|
const struct timeval * tv);
|
|
|
|
typedef STATUS (*SOCK_FUNC_GETPEERNAME)
|
|
(struct socket * so,
|
|
struct sockaddr * addr,
|
|
socklen_t * pAddrlen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_GETSOCKNAME)
|
|
(struct socket * so,
|
|
struct sockaddr * addr,
|
|
socklen_t * pAddrlen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_LISTEN)
|
|
(struct socket * so,
|
|
int backlog);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_RECV)
|
|
(struct socket * so,
|
|
void * buf,
|
|
size_t bufLen,
|
|
int flags);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_RECVFROM)
|
|
(struct socket * so,
|
|
void * buf,
|
|
size_t bufLen,
|
|
int flags,
|
|
struct sockaddr * from,
|
|
socklen_t * pFromLen);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_RECVMSG)
|
|
(struct socket * so,
|
|
struct msghdr * msg,
|
|
int flags);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_SEND)
|
|
(struct socket * so,
|
|
const void * buf,
|
|
size_t bufLen,
|
|
int flags);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_SENDTO)
|
|
(struct socket * so,
|
|
const void * buf,
|
|
size_t bufLen,
|
|
int flags,
|
|
const struct sockaddr * name,
|
|
socklen_t namelen);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_SENDMSG)
|
|
(struct socket * so,
|
|
const struct msghdr * msg,
|
|
int flags);
|
|
|
|
typedef STATUS (*SOCK_FUNC_SHUTDOWN)
|
|
(struct socket * so,
|
|
int how);
|
|
|
|
typedef STATUS (*SOCK_FUNC_SOCKET)
|
|
(int domain,
|
|
int type,
|
|
int protocol,
|
|
struct socket ** pso);
|
|
|
|
typedef STATUS (*SOCK_FUNC_GETSOCKOPT)
|
|
(struct socket * so,
|
|
int level,
|
|
int optname,
|
|
void * optval,
|
|
socklen_t * optlen);
|
|
|
|
typedef STATUS (*SOCK_FUNC_SETSOCKOPT)
|
|
(struct socket * so,
|
|
int level,
|
|
int optname,
|
|
const void * optval,
|
|
socklen_t optlen);
|
|
|
|
typedef BOOL (*SOCK_FUNC_ZBUF) (void); /* Does the back end support zbufs? */
|
|
|
|
typedef int (*SOCK_FUNC_CLOSE)
|
|
(struct socket * so);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_WRITE)
|
|
(struct socket * so,
|
|
const char * buf,
|
|
size_t maxBytes);
|
|
|
|
typedef ssize_t (*SOCK_FUNC_READ)
|
|
(struct socket * so,
|
|
char * buf,
|
|
size_t maxBytes);
|
|
|
|
typedef int (*SOCK_FUNC_IOCTL)
|
|
(struct socket *,
|
|
int code,
|
|
_Vx_usr_arg_t arg,
|
|
void * nullForKernel); /* last arg is NULL if from kernel, non-NULL for
|
|
system call originating in user space. */
|
|
|
|
|
|
struct sockFunc /* SOCK_FUNC */
|
|
{
|
|
SOCK_FUNC_INIT libInitRtn; /* Unused */
|
|
SOCK_FUNC_ACCEPT acceptRtn;
|
|
SOCK_FUNC_BIND bindRtn;
|
|
SOCK_FUNC_CONNECT connectRtn;
|
|
SOCK_FUNC_CONN_TIMEO connectWithTimeoutRtn;
|
|
SOCK_FUNC_GETPEERNAME getpeernameRtn;
|
|
SOCK_FUNC_GETSOCKNAME getsocknameRtn;
|
|
SOCK_FUNC_LISTEN listenRtn;
|
|
SOCK_FUNC_RECV recvRtn;
|
|
SOCK_FUNC_RECVFROM recvfromRtn;
|
|
SOCK_FUNC_RECVMSG recvmsgRtn;
|
|
SOCK_FUNC_SEND sendRtn;
|
|
SOCK_FUNC_SENDTO sendtoRtn;
|
|
SOCK_FUNC_SENDMSG sendmsgRtn;
|
|
SOCK_FUNC_SHUTDOWN shutdownRtn;
|
|
SOCK_FUNC_SOCKET socketRtn;
|
|
SOCK_FUNC_GETSOCKOPT getsockoptRtn;
|
|
SOCK_FUNC_SETSOCKOPT setsockoptRtn;
|
|
SOCK_FUNC_ZBUF zbufRtn;
|
|
|
|
/*
|
|
* The following IO-system handlers are called via wrappers in
|
|
* sockLib.c:
|
|
*/
|
|
SOCK_FUNC_CLOSE closeRtn;
|
|
SOCK_FUNC_READ readRtn;
|
|
SOCK_FUNC_WRITE writeRtn;
|
|
SOCK_FUNC_IOCTL ioctlRtn;
|
|
};
|
|
|
|
extern DEV_HDR socketDevHdr; /* I/O system device driver header */
|
|
|
|
/* END_HIDDEN */
|
|
|
|
/* Memory validation function pointers */
|
|
|
|
extern int (*pSockIoctlMemVal) (unsigned int cmd, void * data);
|
|
extern STATUS (*pUnixIoctlMemVal) (unsigned int cmd, const void * pData);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _WRS_KERNEL */
|
|
|
|
#endif /* __INCsockFunch */
|
|
|