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, 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
, int keepalive
, Plug plug
)
135 return stack
->new(addr
, port
, privport
, oobinline
, nodelay
, keepalive
,
140 Socket
sk_newlistener(char *srcaddr
, int port
, Plug plug
, int local_host_only
)
144 return stack
->newlistener(srcaddr
, port
, plug
, local_host_only
);
148 const char *sk_addr_error(SockAddr addr
)
152 return stack
->addr_error(addr
);
153 return "No TCP/IP stack installed";
163 void sk_cleanup(void)
170 /* We should use Internet Config here. */
171 int net_service_lookup(char *service
)
180 * c-file-style: "simon"