7 SockAddr (*namelookup
)(char const *, char **);
8 SockAddr (*nonamelookup
)(char const *);
9 void (*getaddr
)(SockAddr
, char *, int);
10 int (*hostname_is_local
)(char *);
11 int (*address_is_local
)(SockAddr
);
12 int (*addrtype
)(SockAddr
);
13 void (*addrcopy
)(SockAddr
, char *);
14 void (*addr_free
)(SockAddr
);
15 Socket (*skregister
)(void *, Plug
); /* "register" is a reserved word */
16 Socket (*new)(SockAddr
, int, int, int, int, int, Plug
);
17 Socket (*newlistener
)(char *, int, Plug
, int, int);
18 char *(*addr_error
)(SockAddr
);
20 void (*cleanup
)(void);
23 static struct macnet_stack
*stack
;
25 static struct macnet_stack ot
= {
26 ot_namelookup
, ot_nonamelookup
, ot_getaddr
, ot_hostname_is_local
,
27 ot_address_is_local
, ot_addrtype
, ot_addrcopy
, ot_addr_free
,
28 ot_register
, ot_new
, ot_newlistener
, ot_addr_error
, ot_poll
, ot_cleanup
31 #if !TARGET_API_MAC_CARBON
32 static struct macnet_stack mactcp
= {
33 mactcp_namelookup
, mactcp_nonamelookup
, mactcp_getaddr
,
34 mactcp_hostname_is_local
, mactcp_address_is_local
, mactcp_addrtype
,
35 mactcp_addrcopy
, mactcp_addr_free
, mactcp_register
, mactcp_new
,
36 mactcp_newlistener
, mactcp_addr_error
, mactcp_poll
, mactcp_cleanup
44 if (ot_init() == noErr
)
48 #if !TARGET_API_MAC_CARBON
49 if (mactcp_init() == noErr
)
57 * Network functions exported to the world. These choose whether to call
58 * MacTCP or OpenTransport and behave accordingly.
60 SockAddr
sk_namelookup(char const *host
, char **canonicalname
, int address_family
)
64 return stack
->namelookup(host
, canonicalname
);
68 SockAddr
sk_nonamelookup(char const *host
)
72 return stack
->nonamelookup(host
);
76 void sk_getaddr(SockAddr addr
, char *buf
, int buflen
)
80 stack
->getaddr(addr
, buf
, buflen
);
85 int sk_hostname_is_local(char *name
)
89 return stack
->hostname_is_local(name
);
93 int sk_address_is_local(SockAddr addr
)
97 return stack
->address_is_local(addr
);
101 int sk_addrtype(SockAddr addr
)
105 return stack
->addrtype(addr
);
109 void sk_addrcopy(SockAddr addr
, char *buf
)
113 stack
->addrcopy(addr
, buf
);
116 void sk_addr_free(SockAddr addr
)
120 stack
->addr_free(addr
);
123 Socket
sk_register(void *sock
, Plug plug
)
127 return stack
->skregister(sock
, plug
);
131 Socket
sk_new(SockAddr addr
, int port
, int privport
, int oobinline
,
132 int nodelay
, int keepalive
, Plug plug
)
136 return stack
->new(addr
, port
, privport
, oobinline
, nodelay
, keepalive
,
141 Socket
sk_newlistener(char *srcaddr
, int port
, Plug plug
, int local_host_only
, int address_family
)
145 return stack
->newlistener(srcaddr
, port
, plug
, local_host_only
, address_family
);
149 const char *sk_addr_error(SockAddr addr
)
153 return stack
->addr_error(addr
);
154 return "No TCP/IP stack installed";
164 void sk_cleanup(void)
171 /* We should use Internet Config here. */
172 int net_service_lookup(char *service
)
178 SockAddr
platform_get_x11_unix_address(const char *display
, int displaynum
,
179 char **canonicalname
)
186 * c-file-style: "simon"