⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp.h

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
 * Waterloo TCP
 *
 * Copyright (c) 1990, 1991, 1992, 1993 Erick Engelke
 *
 * Portions copyright others, see copyright.h for details.
 *
 * This library is free software; you can use it or redistribute under
 * the terms of the license included in LICENSE.H.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * file LICENSE.H for more details.
 *
 */

#ifndef __WATT_TCP_H
#define __WATT_TCP_H

#define WATTCP_VER  0x0210   /* Kernel version (major.minor) */

#define WATTCP_MAJOR_VER  2
#define WATTCP_MINOR_VER  1
#define WATTCP_DEVEL_REL  5

#ifndef __WATTCP_H  /* <tcp.h> only included in ./src/version.c */

#include <stdio.h>       /* FILE, size_t */
#include <sys/wtypes.h>  /* fd_set */
#include <sys/wtime.h>   /* struct timeval */
#include <sys/swap.h>    /* intel(), intel16() */

#ifdef __cplusplus
extern "C" {
#endif

extern const char *wattcpCopyright;  /* "See COPYRIGHT.H for details" ? */

extern const char *wattcpVersion (void);      /* WatTCP target version/date */
extern const char *wattcpCapabilities (void); /* what's been compiled in */

/*
 * Typedefs and constants
 */
#ifndef BYTE
#define BYTE   unsigned char
#endif

#ifndef WORD
#define WORD   unsigned short
#endif

#ifndef DWORD
#define DWORD  unsigned long
#endif

/*
 * Old compatibility
 */
#ifndef byte
#define byte  BYTE
#endif

#ifndef word
#define word  WORD
#endif

#ifndef dword
#define dword DWORD
#endif

#ifndef longword
#define longword DWORD
#endif

#ifndef eth_address
typedef BYTE  eth_address[6];
#endif

typedef struct {
        BYTE   undoc [4308];
      } tcp_Socket;

typedef struct {
        BYTE   undoc [2136];
      } udp_Socket;

typedef int (*ProtoHandler) (void *sock, BYTE *data, int len,
                             void *tcp_phdr, void *udp_hdr);

typedef int (*UserHandler)  (void *sock);


#define MAX_COOKIES     10
#define MAX_NAMESERVERS 10

#define TCP_MODE_BINARY  0
#define TCP_MODE_ASCII   1
#define UDP_MODE_CHK     0       /* default to checksum */
#define UDP_MODE_NOCHK   2
#define TCP_MODE_NAGLE   0       /* Nagle algorithm */
#define TCP_MODE_NONAGLE 4

#define SOCKESTABLISHED  1       /* socket states for sock_sselect */
#define SOCKDATAREADY    2
#define SOCKCLOSED       4

/*
 * Hide "private" symbols by prefixing with "_w32_"
 */
#undef  W32_NAMESPACE
#define W32_NAMESPACE(x) _w32_ ## x

#define init_misc         W32_NAMESPACE (init_misc)
#define Random            W32_NAMESPACE (Random)
#define set_timeout       W32_NAMESPACE (set_timeout)
#define chk_timeout       W32_NAMESPACE (chk_timeout)
#define cmp_timeout       W32_NAMESPACE (cmp_timeout)
#define hires_timer       W32_NAMESPACE (hires_timer)
#define set_timediff      W32_NAMESPACE (set_timediff)
#define get_timediff      W32_NAMESPACE (get_timediff)
#define timeval_diff      W32_NAMESPACE (timeval_diff)

#define my_ip_addr        W32_NAMESPACE (my_ip_addr)
#define sin_mask          W32_NAMESPACE (sin_mask)
#define sock_delay        W32_NAMESPACE (sock_delay)
#define sock_inactive     W32_NAMESPACE (sock_inactive)
#define sock_data_timeout W32_NAMESPACE (sock_data_timeout)
#define multihomes        W32_NAMESPACE (multihomes)
#define block_tcp         W32_NAMESPACE (block_tcp)
#define block_udp         W32_NAMESPACE (block_udp)
#define block_ip          W32_NAMESPACE (block_ip)
#define block_icmp        W32_NAMESPACE (block_icmp)
#define last_cookie       W32_NAMESPACE (last_cookie)
#define cookies           W32_NAMESPACE (cookies)
#define survivebootp      W32_NAMESPACE (survivebootp)
#define survivedhcp       W32_NAMESPACE (survivedhcp)
#define surviverarp       W32_NAMESPACE (surviverarp)
#define loopback_handler  W32_NAMESPACE (loopback_handler)
#define usr_init          W32_NAMESPACE (usr_init)
#define inchksum          W32_NAMESPACE (inchksum)

extern int  sock_init (void);
extern void sock_exit (void);
extern void dbug_init (void);  /* effective if compiled with `USE_DEBUG' */
extern void dbug_exit (void);  /* effective if compiled with `USE_DEBUG' */
extern void init_misc (void);  /* might be called before sock_init() */


/*
 *  `s' is the pointer to a udp or tcp socket
 */
extern int  sock_read       (void *s, char *dp, int len);
extern int  sock_preread    (void *s, char *dp, int len);
extern int  sock_fastread   (void *s, char *dp, int len);
extern int  sock_write      (void *s, const char *dp, int len);
extern void sock_enqueue    (void *s, const char *dp, int len);
extern int  sock_fastwrite  (void *s, const char *dp, int len);
extern int  sock_setbuf     (void *s, char *buf, unsigned len);
extern int  sock_flush      (void *s);
extern int  sock_flushnext  (void *s);
extern int  sock_puts       (void *s, const char *dp);
extern WORD sock_gets       (void *s, char *dp, int n);
extern BYTE sock_putc       (void *s, char c);
extern BYTE sock_getc       (void *s);
extern WORD sock_dataready  (void *s);
extern int  sock_established(void *s);
extern int  sock_close      (void *s);
extern int  sock_abort      (void *s);
extern int  sock_keepalive  (void *s);
extern int  sock_printf     (void *s, const char *format, ...);
extern int  sock_scanf      (void *s, const char *format, ...);
extern int  sock_yield      (void *s, void (*fn)(void));
extern int  sock_mode       (void *s, WORD mode);        /* see TCP_MODE_... */
extern int  sock_sselect    (void *s, int waitstate);
extern int  sock_timeout    (void *s, int seconds);
extern int  sock_recv       (void *s, char *buf, int len);
extern int  sock_recv_init  (void *s, char *buf, int len);
extern int  sock_recv_from  (void *s, DWORD *ip, WORD *port, char *buf, int len, int peek);
extern int  sock_recv_used  (void *s);

/*
 * TCP or UDP specific stuff, must be used for open's and listens, but
 * sock stuff above is used for everything else
 */
extern int   udp_open   (void *s, WORD lport, DWORD ina, WORD port, ProtoHandler handler);
extern int   tcp_open   (void *s, WORD lport, DWORD ina, WORD port, ProtoHandler handler);
extern int   udp_listen (void *s, WORD lport, DWORD ina, WORD port, ProtoHandler handler);
extern int   tcp_listen (void *s, WORD lport, DWORD ina, WORD port, ProtoHandler handler, WORD timeout);
extern int   tcp_established (void *s);

extern char *rip        (char *s);
extern DWORD resolve    (const char *name);
extern int   resolve_ip (DWORD ip, char *name);
extern DWORD lookup_host(const char *host, char *ip_str);

/*
 * less general functions
 */
extern int   tcp_cbreak(WORD  mode);
extern DWORD aton      (const char *name);
extern int   isaddr    (const char *name);

#define tcp_cbrk(mode) tcp_cbreak(mode) /* old name */

/*
 * timers
 */
extern DWORD  set_timeout  (DWORD msec);
extern int    chk_timeout  (DWORD value);
extern int    cmp_timers   (DWORD t1, DWORD t2);
extern int    set_timediff (long msec);
extern DWORD  get_timediff (DWORD now, DWORD t);
extern void   hires_timer  (int on);
extern double timeval_diff (const struct timeval *a, const struct timeval *b);

extern void   ip_timer_init   (void *s , WORD delayseconds);
extern WORD   ip_timer_expired(void *s);

/*
 * TCP/IP system variables - do not change these since they
 *      are not necessarily the source variables, instead use
 *      ip_Init function
 */
extern DWORD my_ip_addr;
extern DWORD sin_mask;       /* eg.  0xfffffe00L */
extern WORD  sock_delay;
extern WORD  sock_inactive;
extern WORD  sock_data_timeout;
extern WORD  multihomes;

extern int   block_tcp;
extern int   block_udp;
extern int   block_icmp;
extern int   block_ip;
extern WORD  last_cookie;
extern DWORD cookies [MAX_COOKIES];

extern WORD  survivebootp;
extern WORD  survivedhcp;
extern WORD  surviverarp;
extern void (*loopback_handler)(void *ip);

/*
 * things you probably won't need to know about
 */

/*
 * sock_debugdump
 *      - dump some socket control block parameters
 * used for testing the kernal, not recommended
 */
extern void sock_debugdump (const void *s);

/*
 * tcp_config - read a configuration file
 *            - if special path desired, call after sock_init()
 *            - null reads path WATTCP.CFG env-var or from program's path
 * see sock_init();
 */
extern int tcp_config (const char *path);

/*
 * tcp_tick - must be called periodically by user application.
 *          - returns 1 when our socket closes
 */
extern WORD tcp_tick (void *s);

/*
 * tcp_set_debug_state - set to 1,2 or reset 0
 */
extern void tcp_set_debug_state (WORD x);


/*
 * name domain constants, etc.
 */
#define loc_domain       W32_NAMESPACE (loc_domain)
#define def_domain       W32_NAMESPACE (def_domain)
#define def_nameservers  W32_NAMESPACE (def_nameservers)
#define dns_timeout      W32_NAMESPACE (dns_timeout)
#define last_nameserver  W32_NAMESPACE (last_nameserver)
#define arp_last_gateway W32_NAMESPACE (arp_last_gateway)
#define arp_timeout      W32_NAMESPACE (arp_timeout)
#define arp_alive        W32_NAMESPACE (arp_alive)
#define arp_cache_data   W32_NAMESPACE (arp_cache_data)
#define arp_gate_list    W32_NAMESPACE (arp_gate_list)

#define mtu              W32_NAMESPACE (mtu)
#define mss              W32_NAMESPACE (mss)
#define ctrace_on        W32_NAMESPACE (ctrace_on)

extern char  *def_domain;
extern char  *loc_domain;
extern DWORD  def_nameservers [MAX_NAMESERVERS];
extern WORD   dns_timeout;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -