diff options
Diffstat (limited to 'src/libs/xpcom18a4/nsprpub/pr/src/md/mac/macsocket.h')
-rw-r--r-- | src/libs/xpcom18a4/nsprpub/pr/src/md/mac/macsocket.h | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/src/libs/xpcom18a4/nsprpub/pr/src/md/mac/macsocket.h b/src/libs/xpcom18a4/nsprpub/pr/src/md/mac/macsocket.h new file mode 100644 index 00000000..7e99faf2 --- /dev/null +++ b/src/libs/xpcom18a4/nsprpub/pr/src/md/mac/macsocket.h @@ -0,0 +1,238 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Netscape Portable Runtime (NSPR). + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998-2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef macksocket_h___ +#define macksocket_h___ + +// macsock.h +// Interface visible to xp code +// C socket type definitions and routines +// from sys/socket.h +#include <Files.h> +#include <OpenTptInternet.h> // All the internet typedefs +#include <utime.h> // For timeval +/* + * sleep and delay conflict with the same in unistd.h from Metrowerks. OT + * defines them as + * + * extern pascal void OTDelay(UInt32 seconds); + * extern pascal void OTIdle(void); + * + * #define sleep(x) OTDelay(x) + * #define delay(x) OTDelay(x) + */ + +#undef sleep +#undef delay + +#pragma once + +#include "prio.h" + +struct sockaddr { + unsigned char sa_len; /* total length */ + unsigned char sa_family; /* address family */ + char sa_data[14]; /* actually longer; address value */ +}; + +// from netinet/in.h +struct in_addr { + unsigned long s_addr; +}; + +struct sockaddr_in { + unsigned char sin_len; + unsigned char sin_family; // AF_INET + unsigned short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; + +struct hostent { + char *h_name; /* official name of host */ + char **h_aliases; /* alias list */ + int h_addrtype; /* host address type */ + int h_length; /* length of address */ + char **h_addr_list; /* list of addresses from name server */ +#define h_addr h_addr_list[0] /* address, for backward compatiblity */ +}; + +// Necessary network defines, found by grepping unix headers when XP code would not compile +#define FIONBIO 1 +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define IPPROTO_TCP INET_TCP // Default TCP protocol +#define IPPROTO_UDP INET_UDP // Default UDP protocol +#define INADDR_ANY kOTAnyInetAddress +#define SOL_SOCKET XTI_GENERIC // Any type of socket +#define SO_REUSEADDR IP_REUSEADDR +#define SO_BROADCAST IP_BROADCAST +#define MSG_PEEK 0x2 // Just look at a message waiting, donŐt actually read it. + +typedef unsigned long u_long; + +/* ldap.h has its own definition of fd_set */ +/* select support */ +#if !defined(FD_SET) +#define NBBY 8 +typedef long fd_mask; +#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ + +#ifndef howmany +#define howmany(x, y) (((x)+((y)-1))/(y)) +#endif +#define FD_SETSIZE 64 +typedef struct fd_set{ + fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; +} fd_set; + +#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) +#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) +#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) +#define FD_ZERO(p) memset (p, 0, sizeof(*(p))) +#endif /* !FD_SET */ + + +#ifdef __cplusplus +extern "C" { +#endif + +extern unsigned long inet_addr(const char *cp); +extern char *inet_ntoa(struct in_addr in); + +inline unsigned long htonl(unsigned long hostlong) {return hostlong;} +inline unsigned long ntohl(unsigned long netlong) {return netlong;} +inline unsigned short ntohs(unsigned short netshort) {return netshort;} +inline unsigned short htons(unsigned short hostshort) {return hostshort;} + + +// UNIX look-alike routines +// They make sure that the arguments passed in are valid, and then +// +extern struct hostent *macsock_gethostbyaddr(const void *addr, int addrlen, int type); + +extern int macsock_socket(int domain, int type, int protocol); +extern int macsock_ioctl(int sID, unsigned int request, void *value); +extern int macsock_connect(int sID, struct sockaddr *name, int namelen); +extern int macsock_write(int sID, const void *buffer, unsigned buflen); +extern int macsock_read(int sID, void *buf, unsigned nbyte); +extern int macsock_close(int sID); + +extern int macsock_accept(int sID, struct sockaddr *addr, int *addrlen); +extern int macsock_bind(int sID, const struct sockaddr *name, int namelen); +extern int macsock_listen(int sID, int backlog); + +extern int macsock_shutdown(int sID, int how); +extern int macsock_getpeername(int sID, struct sockaddr *name, int *namelen); +extern int macsock_getsockname(int sID, struct sockaddr *name, int *namelen); +extern int macsock_getsockopt(int sID, int level, int optname, void *optval,int *optlen); +extern int macsock_setsockopt(int sID, int level, int optname, const void *optval,int optlen); +extern int macsock_socketavailable(int sID, size_t *bytesAvailable); +extern int macsock_dup(int sID); + +extern int macsock_send(int sID, const void *msg, int len, int flags); +extern int macsock_sendto(int sID, const void *msg, int len, int flags, struct sockaddr *toAddr, int toLen); +extern int macsock_recvfrom(int sID, void *buf, int len, int flags, struct sockaddr *from, int *fromLen); +extern int macsock_recv(int sID, void *buf, int len, int flags); + +extern int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); + + +#define macsock_gethostbyaddr PR_GetHostByAddr +#define macsock_socket PR_Socket +#define macsock_connect PR_Connect +#define macsock_write PR_Write +#define macsock_read PR_Read +#define macsock_close PR_Close +#define macsock_accept PR_Accept +#define macsock_bind PR_Bind +#define macsock_listen PR_Listen +#define macsock_shutdown PR_Shutdown +#define macsock_getpeername PR_GetPeerName +#define macsock_getsockname PR_GetSockName +#define macsock_socketavailable PR_SocketAvailable +#define macsock_send PR_Send +#define macsock_sendto PR_SendTo +#define macsock_recvfrom PR_RecvFrom +#define macsock_recv PR_Recv + +#ifdef __cplusplus +} +#endif +//extern int errno; + +/* +macsock_sendmsg +macsock_readv +macsock_writev +*/ + +/* New definitions that are not defined in macsock.h in macsock library */ +struct protoent { + char *p_name; /* official protocol name */ + char **p_aliases; /* alias list */ + int p_proto; /* protocol # */ +}; + +extern struct protoent *getprotobyname(const char * name); +extern struct protoent *getprotobynumber(int number); + +extern int gethostname (char *name, int namelen); +extern struct hostent *gethostbyname(const char * name); +extern struct hostent *gethostbyaddr(const void *addr, int addrlen, int type); + +#define INADDR_LOOPBACK 0x7F000001 + +#define SO_KEEPALIVE TCP_KEEPALIVE +#define SO_RCVBUF XTI_RCVBUF +#define SO_SNDBUF XTI_SNDBUF +#define SO_LINGER XTI_LINGER /* linger on close if data present */ + +#define IPPROTO_IP INET_IP + +/* Get/Set sock opt until fixed in NSPR 2.0 */ +struct linger { + int l_onoff; /* option on/off */ + int l_linger; /* linger time */ +}; + +struct ip_mreq { + struct in_addr imr_multiaddr; /* IP multicast address of group */ + struct in_addr imr_interface; /* local IP address of interface */ +}; + +#endif /* macksocket_h___ */ |