#ifndef INLINE_SOCKET_H
#define INLINE_SOCKET_H \
       "$Id: socket.h,v 4.2 1994/10/05 23:18:36 ppessi Exp $"
/*
 *	Gcc inlines for bsdsocket.library.
 *
 *	Copyright © 1994 AmiTCP/IP Group,
 *			 Network Solutions Development, Inc.
 *			 All rights reserved.
 */

#include <sys/types.h>
#include <sys/cdefs.h>
#include <sys/socket.h>
#include <inline/stubs.h>
#include <stdarg.h>

__BEGIN_DECLS

#if !defined(SOCKETBASE_IN_CONTEXT) && !defined(BASE_EXT_DECL)
#define BASE_EXT_DECL
#define BASE_EXT_DECL0 extern struct Library * SocketBase;
#define BASE_PAR_DECL
#define BASE_PAR_DECL0 void
#elif !defined(BASE_EXT_DECL)
#define BASE_EXT_DECL
#define BASE_EXT_DECL0
#define BASE_PAR_DECL struct Library * SocketBase,
#define BASE_PAR_DECL0 struct Library * SocketBase
#endif

#ifndef BASE_NAME
#define BASE_NAME SocketBase
#endif

BASE_EXT_DECL0

#ifndef AMITCP_NEW_NAMES
#define STDSOCKAPI
#define 	  Socket	socket
#define 	    Bind	bind
#define 	  Listen	listen
#define 	  Accept	accept
#define 	 Connect	connect
#define 	    Send	send
#define 	  SendTo	sendto
#define 	 SendMsg	sendmsg
#define 	    Recv	recv
#define 	RecvFrom	recvfrom
#define 	 RecvMsg	recvmsg
#define 	Shutdown	shutdown
#define       SetSockOpt	setsockopt
#define       GetSockOpt	getsockopt
#define      GetSockName	getsockname
#define      GetPeerName	getpeername
#define        Inet_Addr	inet_addr
#define     Inet_Network	inet_network
#define    GetHostByName	gethostbyname
#define    GetHostByAddr	gethostbyaddr
#define     GetNetByName	getnetbyname
#define     GetNetByAddr	getnetbyaddr
#define    GetServByName	getservbyname
#define    GetServByPort	getservbyport
#define   GetProtoByName	getprotobyname
#define GetProtoByNumber	getprotobynumber
#define    GetDTableSize	getdtablesize
#define      GetHostName	gethostname
#define        GetHostId	gethostid
#define 	 SyslogA	vsyslog
#endif

extern __inline int
Accept (BASE_PAR_DECL int s,struct sockaddr * addr,int * addrlen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register struct sockaddr *a0 __asm("a0") =  addr;
  register int *a1 __asm("a1") =  addrlen;
  __asm __volatile ("jsr a6@(-0x30)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Bind (BASE_PAR_DECL int s,const struct sockaddr * name,int  namelen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register const struct sockaddr *a0 __asm("a0") =  name;
  register int d1 __asm("d1") =  namelen;
  __asm __volatile ("jsr a6@(-0x24)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
CloseSocket (BASE_PAR_DECL int d)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = d;
  __asm __volatile ("jsr a6@(-0x78)"
  : "=r" (_res)
  : "r" (a6), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Connect (BASE_PAR_DECL int s,const struct sockaddr * name,int  namelen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register const struct sockaddr *a0 __asm("a0") =  name;
  register int d1 __asm("d1") =  namelen;
  __asm __volatile ("jsr a6@(-0x36)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Dup2Socket (BASE_PAR_DECL int fd1,int  fd2)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = fd1;
  register int d1 __asm("d1") =  fd2;
  __asm __volatile ("jsr a6@(-0x108)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Errno (BASE_PAR_DECL0)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  __asm __volatile ("jsr a6@(-0xa2)"
  : "=r" (_res)
  : "r" (a6)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetDTableSize (BASE_PAR_DECL0)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  __asm __volatile ("jsr a6@(-0x8a)"
  : "=r" (_res)
  : "r" (a6)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct hostent *
GetHostByAddr (BASE_PAR_DECL const char *addr,int  len,int  type)
{
  BASE_EXT_DECL
  register struct hostent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char *a0 __asm("a0") = addr;
  register int d0 __asm("d0") =  len;
  register int d1 __asm("d1") =  type;
  __asm __volatile ("jsr a6@(-0xd8)"
  : "=r" (_res)
  : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct hostent *
GetHostByName (BASE_PAR_DECL char *name)
{
  BASE_EXT_DECL
  register struct hostent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register char *a0 __asm("a0") = name;
  __asm __volatile ("jsr a6@(-0xd2)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline long
GetHostId (BASE_PAR_DECL0)
{
  BASE_EXT_DECL
  register int _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  __asm __volatile ("jsr a6@(-0x120)"
  : "=r" (_res)
  : "r" (a6)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetHostName (BASE_PAR_DECL char *hostname,int  size)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char *a0 __asm("a0") = hostname;
  register int d0 __asm("d0") =  size;
  __asm __volatile ("jsr a6@(-0x11a)"
  : "=r" (_res)
  : "r" (a6), "r" (a0), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct netent *
GetNetByAddr (BASE_PAR_DECL long net,int  type)
{
  BASE_EXT_DECL
  register struct netent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register long d0 __asm("d0") = net;
  register int d1 __asm("d1") =  type;
  __asm __volatile ("jsr a6@(-0xe4)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct netent *
GetNetByName (BASE_PAR_DECL const char *name)
{
  BASE_EXT_DECL
  register struct netent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char *a0 __asm("a0") = name;
  __asm __volatile ("jsr a6@(-0xde)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetPeerName (BASE_PAR_DECL int s,struct sockaddr * hostname,int * namelen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register struct sockaddr *a0 __asm("a0") =  hostname;
  register int *a1 __asm("a1") =  namelen;
  __asm __volatile ("jsr a6@(-0x6c)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct protoent *
GetProtoByName (BASE_PAR_DECL const char *name)
{
  BASE_EXT_DECL
  register struct protoent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char *a0 __asm("a0") = name;
  __asm __volatile ("jsr a6@(-0xf6)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct protoent *
GetProtoByNumber (BASE_PAR_DECL int proto)
{
  BASE_EXT_DECL
  register struct protoent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = proto;
  __asm __volatile ("jsr a6@(-0xfc)"
  : "=r" (_res)
  : "r" (a6), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct servent *
GetServByName (BASE_PAR_DECL const char *name,const char * proto)
{
  BASE_EXT_DECL
  register struct servent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char *a0 __asm("a0") = name;
  register const char *a1 __asm("a1") =  proto;
  __asm __volatile ("jsr a6@(-0xea)"
  : "=r" (_res)
  : "r" (a6), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline struct servent *
GetServByPort (BASE_PAR_DECL int port,const char * proto)
{
  BASE_EXT_DECL
  register struct servent * _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = port;
  register const char *a0 __asm("a0") =  proto;
  __asm __volatile ("jsr a6@(-0xf0)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetSocketEvents (BASE_PAR_DECL ULONG *eventmaskp)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register ULONG *a0 __asm("a0") = eventmaskp;
  __asm __volatile ("jsr a6@(-0x12c)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetSockName (BASE_PAR_DECL int s,struct sockaddr * hostname,int * namelen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register struct sockaddr *a0 __asm("a0") =  hostname;
  register int *a1 __asm("a1") =  namelen;
  __asm __volatile ("jsr a6@(-0x66)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
GetSockOpt (BASE_PAR_DECL int s,int  level,int  optname,void * optval,int * optlen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register int d1 __asm("d1") =  level;
  register int d2 __asm("d2") =  optname;
  register void *a0 __asm("a0") =  optval;
  register int *a1 __asm("a1") =  optlen;
  __asm __volatile ("jsr a6@(-0x60)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1","d2", "memory");
  return _res;
}
extern __inline unsigned long
Inet_Addr (BASE_PAR_DECL const char * cp)
{
  BASE_EXT_DECL
  register unsigned long  _res	__asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char * a0 __asm("a0") = cp;
  __asm __volatile ("jsr a6@(-0xb4)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline ULONG
Inet_LnaOf (BASE_PAR_DECL LONG in)
{
  BASE_EXT_DECL
  register unsigned long  _res	__asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = in;
  __asm __volatile ("jsr a6@(-0xba)"
  : "=r" (_res)
  : "r" (a6), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline ULONG
Inet_MakeAddr (BASE_PAR_DECL u_long net,u_long host)
{
  BASE_EXT_DECL
  register ULONG  _res	__asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register u_long d0 __asm("d0") = net;
  register u_long d1 __asm("d1") =  host;
  __asm __volatile ("jsr a6@(-0xc6)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline unsigned long
Inet_NetOf (BASE_PAR_DECL LONG in)
{
  BASE_EXT_DECL
  register unsigned long _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register LONG d0 __asm("d0") = in;
  __asm __volatile ("jsr a6@(-0xc0)"
  : "=r" (_res)
  : "r" (a6), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline unsigned long
Inet_Network (BASE_PAR_DECL const char * cp)
{
  BASE_EXT_DECL
  register unsigned long  _res	__asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register const char * a0 __asm("a0") = cp;
  __asm __volatile ("jsr a6@(-0xcc)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline char *
Inet_NtoA (BASE_PAR_DECL ULONG in)
{
  BASE_EXT_DECL
  register char * _res	__asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register ULONG d0 __asm("d0") = in;
  __asm __volatile ("jsr a6@(-0xae)"
  : "=r" (_res)
  : "r" (a6), "r" (d0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
IoctlSocket (BASE_PAR_DECL int d,ULONG  request,char * argp)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = d;
  register ULONG d1 __asm("d1") =  request;
  register char *a0 __asm("a0") =  argp;
  __asm __volatile ("jsr a6@(-0x72)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Listen (BASE_PAR_DECL int s,int  backlog)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register int d1 __asm("d1") =  backlog;
  __asm __volatile ("jsr a6@(-0x2a)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
ObtainSocket (BASE_PAR_DECL LONG id,int  domain,int  type,int  protocol)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = id;
  register int d1 __asm("d1") =  domain;
  register int d2 __asm("d2") =  type;
  register int d3 __asm("d3") =  protocol;
  __asm __volatile ("jsr a6@(-0x90)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  : "a0","a1","d0","d1","d2","d3", "memory");
  return _res;
}
extern __inline int
Recv (BASE_PAR_DECL int s,void *buf,int  len,int  flags)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register void *a0 __asm("a0") =  buf;
  register int d1 __asm("d1") =  len;
  register int d2 __asm("d2") =  flags;
  __asm __volatile ("jsr a6@(-0x4e)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  : "a0","a1","d0","d1","d2", "memory");
  return _res;
}
extern __inline int
RecvFrom (BASE_PAR_DECL int s,void * buf,int  len,int  flags,struct sockaddr * from,int * fromlen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register void *a0 __asm("a0") =  buf;
  register int d1 __asm("d1") =  len;
  register int d2 __asm("d2") =  flags;
  register struct sockaddr *a1 __asm("a1") =  from;
  register int *a2 __asm("a2") =  fromlen;
  __asm __volatile ("jsr a6@(-0x48)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (a2)
  : "a0","a1","a2","d0","d1","d2", "memory");
  return _res;
}
extern __inline int
RecvMsg (BASE_PAR_DECL int s,struct msghdr *  msg,int  flags)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register struct msghdr * a0 __asm("a0") =  msg;
  register int d1 __asm("d1") =  flags;
  __asm __volatile ("jsr a6@(-0x114)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
ReleaseCopyOfSocket (BASE_PAR_DECL int fd,LONG id)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = fd;
  register int d1 __asm("d1") =  id;
  __asm __volatile ("jsr a6@(-0x9c)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
ReleaseSocket (BASE_PAR_DECL int fd,LONG id)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = fd;
  register int d1 __asm("d1") =  id;
  __asm __volatile ("jsr a6@(-0x96)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Send (BASE_PAR_DECL int s,const void * msg,int  len,int  flags)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register const void *a0 __asm("a0") =  msg;
  register int d1 __asm("d1") =  len;
  register int d2 __asm("d2") =  flags;
  __asm __volatile ("jsr a6@(-0x42)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  : "a0","a1","d0","d1","d2", "memory");
  return _res;
}
extern __inline int
SendMsg (BASE_PAR_DECL int s,const struct msghdr *  msg,int  flags)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register const struct msghdr * a0 __asm("a0") =  msg;
  register int d1 __asm("d1") =  flags;
  __asm __volatile ("jsr a6@(-0x10e)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
SendTo (BASE_PAR_DECL int s,const void * msg,int  len,int  flags,const struct sockaddr * to,int  tolen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register const void *a0 __asm("a0") =  msg;
  register int d1 __asm("d1") =  len;
  register int d2 __asm("d2") =  flags;
  register const struct sockaddr *a1 __asm("a1") =  to;
  register int d3 __asm("d3") =  tolen;
  __asm __volatile ("jsr a6@(-0x3c)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (d3)
  : "a0","a1","d0","d1","d2","d3", "memory");
  return _res;
}
extern __inline void
SetErrnoPtr (BASE_PAR_DECL void *errno_p,int  size)
{
  BASE_EXT_DECL
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register void *a0 __asm("a0") = errno_p;
  register int d0 __asm("d0") =  size;
  __asm __volatile ("jsr a6@(-0xa8)"
  : /* no output */
  : "r" (a6), "r" (a0), "r" (d0)
  : "a0","a1","d0","d1", "memory");
}
extern __inline int
SetSockOpt (BASE_PAR_DECL int s,int  level,int  optname,const void * optval,int  optlen)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register int d1 __asm("d1") =  level;
  register int d2 __asm("d2") =  optname;
  register const void *a0 __asm("a0") =  optval;
  register int d3 __asm("d3") =  optlen;
  __asm __volatile ("jsr a6@(-0x5a)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (d3)
  : "a0","a1","d0","d1","d2","d3", "memory");
  return _res;
}
extern __inline void
SetSocketSignals (BASE_PAR_DECL ULONG SGINTR,ULONG  SGIO,ULONG  SGURG)
{
  BASE_EXT_DECL
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register ULONG d0 __asm("d0") = SGINTR;
  register ULONG d1 __asm("d1") =  SGIO;
  register ULONG d2 __asm("d2") =  SGURG;
  __asm __volatile ("jsr a6@(-0x84)"
  : /* no output */
  : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  : "a0","a1","d0","d1","d2", "memory");
}
extern __inline int
Shutdown (BASE_PAR_DECL int s,int  how)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = s;
  register int d1 __asm("d1") =  how;
  __asm __volatile ("jsr a6@(-0x54)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}
extern __inline int
Socket (BASE_PAR_DECL int domain,int  type,int  protocol)
{
  BASE_EXT_DECL
  register int	_res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = domain;
  register int d1 __asm("d1") =  type;
  register int d2 __asm("d2") =  protocol;
  __asm __volatile ("jsr a6@(-0x1e)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  : "a0","a1","d0","d1","d2", "memory");
  return _res;
}
extern __inline LONG
SocketBaseTagList (BASE_PAR_DECL struct TagItem *taglist)
{
  BASE_EXT_DECL
  register LONG  _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register struct TagItem *a0 __asm("a0") = taglist;
  __asm __volatile ("jsr a6@(-0x126)"
  : "=r" (_res)
  : "r" (a6), "r" (a0)
  : "a0","a1","d0","d1", "memory");
  return _res;
}

#ifndef NO_INLINE_STDARG
#define SocketBaseTags(tags...) \
    ({ ULONG _tags[] = { tags }; SocketBaseTagList(_tags); })
#endif

extern __inline int
WaitSelect (BASE_PAR_DECL int nfds,fd_set * readfds,fd_set * writefds,fd_set * execptfds,struct timeval * timeout,ULONG * maskp)
{
  BASE_EXT_DECL
  register LONG  _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register LONG d0 __asm("d0") = nfds;
  register fd_set *a0 __asm("a0") =  readfds;
  register fd_set *a1 __asm("a1") =  writefds;
  register fd_set *a2 __asm("a2") =  execptfds;
  register struct timeval *a3 __asm("a3") =  timeout;
  register ULONG *d1 __asm("d1") =  maskp;
  __asm __volatile ("jsr a6@(-0x7e)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d1)
  : "a0","a1","a2","a3","d0","d1", "memory");
  return _res;
}

extern __inline void
SyslogA (BASE_PAR_DECL int level,const char * format,va_list  ap)
{
  BASE_EXT_DECL
  register struct Library *a6 __asm("a6") = BASE_NAME;
  register int d0 __asm("d0") = level;
  register const char *a0 __asm("a0") =  format;
  register va_list a1 __asm("a1") =  ap;
  __asm __volatile ("jsr a6@(-0x102)"
  : /* no output */
  : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  : "a0","a1","d0","d1", "memory");
}


#ifdef STDSOCKAPI
#undef STDSOCKAPI
#undef Socket
#undef Bind
#undef Listen
#undef Accept
#undef Connect
#undef Send
#undef SendTo
#undef SendMsg
#undef Recv
#undef RecvFrom
#undef RecvMsg
#undef Shutdown
#undef SetSockOpt
#undef GetSockOpt
#undef GetSockName
#undef GetPeerName
#undef Inet_Addr
#undef Inet_Network
#undef GetHostByName
#undef GetHostByAddr
#undef GetNetByName
#undef GetNetByAddr
#undef GetServByName
#undef GetServByPort
#undef GetProtoByName
#undef GetProtoByNumber
#undef GetDTableSize
#undef GetHostName
#undef GetHostId
#undef SyslogA
#endif


extern __inline LONG
InheritSocket (BASE_PAR_DECL LONG id)
{
  BASE_EXT_DECL
  register LONG  _res  __asm("d0");
  register struct Library * a6 __asm("a6") = BASE_NAME;
  register LONG d0 __asm("d0") = id;
  register LONG d1 __asm("d1") =  0;
  __asm __volatile ("jsr a6@(-0x90)"
  : "=r" (_res)
  : "r" (a6), "r" (d0), "r" (d1)
  : "a0","a1","d0","d1", "memory");
  return _res;
}


#ifdef SOCKETBASE_IN_CONTEXT

#ifdef AMITCP_NEW_NAMES

#define 	     Socket(r...)       Socket(SocketBase, r)
#define 	       Bind(r...)       Bind(SocketBase, r)
#define 	     Listen(r...)       Listen(SocketBase, r)
#define 	     Accept(r...)       Accept(SocketBase, r)
#define 	    Connect(r...)       Connect(SocketBase, r)
#define 	     SendTo(r...)       SendTo(SocketBase, r)
#define 	       Send(r...)       Send(SocketBase, r)
#define 	   RecvFrom(r...)       RecvFrom(SocketBase, r)
#define 	       Recv(r...)       Recv(SocketBase, r)
#define 	   Shutdown(r...)       Shutdown(SocketBase, r)
#define 	 SetSockOpt(r...)       SetSockOpt(SocketBase, r)
#define 	 GetSockOpt(r...)       GetSockOpt(SocketBase, r)
#define 	GetSockName(r...)       GetSockName(SocketBase, r)
#define 	GetPeerName(r...)       GetPeerName(SocketBase, r)

#define       GetDTableSize()           GetDTableSize(SocketBase)

#define 	  Inet_Addr(r...)       Inet_Addr(SocketBase, r)
#define        Inet_Network(r...)       Inet_Network(SocketBase, r)
#define       GetHostByName(r...)       GetHostByName(SocketBase, r)
#define       GetHostByAddr(r...)       GetHostByAddr(SocketBase, r)
#define        GetNetByName(r...)       GetNetByName(SocketBase, r)
#define        GetNetByAddr(r...)       GetNetByAddr(SocketBase, r)
#define       GetServByName(r...)       GetServByName(SocketBase, r)
#define       GetServByPort(r...)       GetServByPort(SocketBase, r)
#define      GetProtoByName(r...)       GetProtoByName(SocketBase, r)
#define    GetProtoByNumber(r...)       GetProtoByNumber(SocketBase, r)

#define 	    SyslogA(r...)       SyslogA(SocketBase, r)

#define 	    SendMsg(r...)       SendMsg(SocketBase, r)
#define 	    RecvMsg(r...)       RecvMsg(SocketBase, r)

#define 	GetHostName(r...)       GetHostName(SocketBase, r)
#define 	  GetHostId()           GetHostId(SocketBase)

#else /* AMITCP_OLD_NAMES */

#define 	     socket(r...)       socket(SocketBase, r)
#define 	       bind(r...)       bind(SocketBase, r)
#define 	     listen(r...)       listen(SocketBase, r)
#define 	     accept(r...)       accept(SocketBase, r)
#define 	    connect(r...)       connect(SocketBase, r)
#define 	     sendto(r...)       sendto(SocketBase, r)
#define 	       send(r...)       send(SocketBase, r)
#define 	   recvfrom(r...)       recvfrom(SocketBase, r)
#define 	       recv(r...)       recv(SocketBase, r)
#define 	   shutdown(r...)       shutdown(SocketBase, r)
#define 	 setsockopt(r...)       setsockopt(SocketBase, r)
#define 	 getsockopt(r...)       getsockopt(SocketBase, r)
#define 	getsockname(r...)       getsockname(SocketBase, r)
#define 	getpeername(r...)       getpeername(SocketBase, r)

#define       getdtablesize()           getdtablesize(SocketBase)

#define 	  inet_addr(r...)       inet_addr(SocketBase, r)
#define        inet_network(r...)       inet_network(SocketBase, r)

#define       gethostbyname(r...)       gethostbyname(SocketBase, r)
#define       gethostbyaddr(r...)       gethostbyaddr(SocketBase, r)
#define        getnetbyname(r...)       getnetbyname(SocketBase, r)
#define        getnetbyaddr(r...)       getnetbyaddr(SocketBase, r)
#define       getservbyname(r...)       getservbyname(SocketBase, r)
#define       getservbyport(r...)       getservbyport(SocketBase, r)
#define      getprotobyname(r...)       getprotobyname(SocketBase, r)
#define    getprotobynumber(r...)       getprotobynumber(SocketBase, r)

#define 	    vsyslog(r...)       vsyslog(SocketBase, r)

#define 	    sendmsg(r...)       sendmsg(SocketBase, r)
#define 	    recvmsg(r...)       recvmsg(SocketBase, r)

#define 	gethostname(r...)       gethostname(SocketBase, r)
#define 	  gethostid()           gethostid(SocketBase)

#endif /* AMITCP_NEW_NAMES */

#define 	IoctlSocket(r...)       IoctlSocket(SocketBase, r)
#define 	CloseSocket(r...)       CloseSocket(SocketBase, r)

#define 	 WaitSelect(r...)       WaitSelect(SocketBase, r)
#define    SetSocketSignals(r...)       SetSocketSignals(SocketBase, r)

#define        ObtainSocket(r...)       ObtainSocket(SocketBase, r)
#define       ReleaseSocket(r...)       ReleaseSocket(SocketBase, r)
#define ReleaseCopyOfSocket(r...)       ReleaseCopyOfSocket(SocketBase, r)
#define 	      Errno()           Errno(SocketBase)
#define 	SetErrnoPtr(r...)       SetErrnoPtr(SocketBase, r)

#define 	  Inet_NtoA(r...)       Inet_NtoA(SocketBase, r)
#define 	 Inet_LnaOf(r...)       Inet_LnaOf(SocketBase, r)
#define 	 Inet_NetOf(r...)       Inet_NetOf(SocketBase, r)
#define       Inet_MakeAddr(r...)       Inet_MakeAddr(SocketBase, r)

#define   SocketBaseTagList(r...)       SocketBaseTagList(SocketBase, r)

#define     GetSocketEvents(r...)       GetSocketEvents(SocketBase, r)

#define       InheritSocket(r...)       InheritSocket(SocketBase, r)

#endif /* SOCKETBASE_IN_CONTEXT */


#ifndef AMITCP_NEW_NAMES

#include <netinet/in.h>

/*
extern __inline LONG
  select(BASE_PAR_DECL LONG nfds, fd_set *readfds, fd_set *writefds, fd_set *exeptfds, struct timeval *timeout)
{
  return WaitSelect(nfds, readfds, writefds, exeptfds, timeout, NULL);
}

extern __inline char *
  inet_ntoa(BASE_PAR_DECL struct in_addr addr)
{
  return Inet_NtoA(addr.s_addr);
}
extern __inline struct in_addr
  inet_makeaddr(BASE_PAR_DECL u_long net, u_long host)
{
  struct in_addr addr;

  addr.s_addr = Inet_MakeAddr(net, host);
  return addr;
}
extern __inline unsigned long
  inet_lnaof(BASE_PAR_DECL struct in_addr addr)
{
  return Inet_LnaOf(addr.s_addr);
}
extern __inline unsigned long
  inet_netof(BASE_PAR_DECL struct in_addr addr)
{
  return Inet_NetOf(addr.s_addr);
}
*/
#ifdef SOCKETBASE_IN_CONTEXT

#define        select(r...)     select(SocketBase, r)
#define     inet_ntoa(r...)     inet_ntoa(SocketBase, r)
#define inet_makeaddr(r...)     inet_makeaddr(SocketBase, r)
#define    inet_lnaof(r...)     inet_lnaof(SocketBase, r)
#define    inet_netof(r...)     inet_netof(SocketBase, r)

#endif /* SOCKETBASE_IN_CONTEXT */

#endif /* ! AMITCP_NEW_NAMES */


#undef BASE_EXT_DECL
#undef BASE_EXT_DECL0
#undef BASE_PAR_DECL
#undef BASE_PAR_DECL0
#undef BASE_NAME


__END_DECLS

#endif /* !INLINE_SOCKET_H */
