6 SockAddr (*namelookup)(char const *, char **);
7 SockAddr (*nonamelookup)(char const *);
8 void (*getaddr)(SockAddr, char *, int);
9 int (*hostname_is_local)(char *);
10 int (*address_is_local)(SockAddr);
11 int (*addrtype)(SockAddr);
12 void (*addrcopy)(SockAddr, char *);
13 void (*addr_free)(SockAddr);
14 Socket (*skregister)(void *, Plug); /* "register" is a reserved word */
15 Socket (*new)(SockAddr, int, int, int, int, Plug);
16 Socket (*newlistener)(char *, int, Plug, int);
17 char *(*addr_error)(SockAddr);
19 void (*cleanup)(void);
22 static struct macnet_stack *stack;
24 static struct macnet_stack ot = {
25 ot_namelookup, ot_nonamelookup, ot_getaddr, ot_hostname_is_local,
26 ot_address_is_local, ot_addrtype, ot_addrcopy, ot_addr_free,
27 ot_register, ot_new, ot_newlistener, ot_addr_error, ot_poll, ot_cleanup
30 #if !TARGET_API_MAC_CARBON
31 static struct macnet_stack mactcp = {
32 mactcp_namelookup, mactcp_nonamelookup, mactcp_getaddr,
33 mactcp_hostname_is_local, mactcp_address_is_local, mactcp_addrtype,
34 mactcp_addrcopy, mactcp_addr_free, mactcp_register, mactcp_new,
35 mactcp_newlistener, mactcp_addr_error, mactcp_poll, mactcp_cleanup
43 if (ot_init() == noErr)
47 #if !TARGET_API_MAC_CARBON
48 if (mactcp_init() == noErr)
56 * Network functions exported to the world. These choose whether to call
57 * MacTCP or OpenTransport and behave accordingly.
59 SockAddr sk_namelookup(char const *host, char **canonicalname)
63 return stack->namelookup(host, canonicalname);
67 SockAddr sk_nonamelookup(char const *host)
71 return stack->nonamelookup(host);
75 void sk_getaddr(SockAddr addr, char *buf, int buflen)
79 stack->getaddr(addr, buf, buflen);
84 int sk_hostname_is_local(char *name)
88 return stack->hostname_is_local(name);
92 int sk_address_is_local(SockAddr addr)
96 return stack->address_is_local(addr);
100 int sk_addrtype(SockAddr addr)
104 return stack->addrtype(addr);
108 void sk_addrcopy(SockAddr addr, char *buf)
112 stack->addrcopy(addr, buf);
115 void sk_addr_free(SockAddr addr)
119 stack->addr_free(addr);
122 Socket sk_register(void *sock, Plug plug)
126 return stack->skregister(sock, plug);
130 Socket sk_new(SockAddr addr, int port, int privport, int oobinline,
131 int nodelay, Plug plug)
135 return stack->new(addr, port, privport, oobinline, nodelay, plug);
139 Socket sk_newlistener(char *srcaddr, int port, Plug plug, int local_host_only)
143 return stack->newlistener(srcaddr, port, plug, local_host_only);
147 const char *sk_addr_error(SockAddr addr)
151 return stack->addr_error(addr);
152 return "No TCP/IP stack installed";
162 void sk_cleanup(void)
169 /* We should use Internet Config here. */
170 int net_service_lookup(char *service)
179 * c-file-style: "simon"