udputil.h
上传用户:sddyfurun
上传日期:2007-01-04
资源大小:525k
文件大小:3k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /* Copyright (c) 1995,1996,1997 NEC Corporation.  All rights reserved.       */
  2. /*                                                                           */
  3. /* The redistribution, use and modification in source or binary forms of     */
  4. /* this software is subject to the conditions set forth in the copyright     */
  5. /* document ("Copyright") included with this distribution.                   */
  6. /*
  7.  * $Id: udputil.h,v 1.22.4.1 1998/09/29 15:46:04 jduan Exp $
  8.  */
  9. /* This file contains all the prototypes for the udp utility functions       */
  10. #ifndef UDPUTIL_H
  11. #define UDPUTIL_H
  12. #include "socks5api.h"
  13. #include "sident.h"
  14. /* socks cache -- which addresses are those of socks servers? (for recvfrom) */
  15. /* Also, need to know if this guy is probly still alive or not...XXX not?    */
  16. struct scache {
  17.     S5NetAddr tcpsin; /* the server's tcp address, where we connected...     */
  18.     S5NetAddr udpsin; /* the server's udp address, where we sendto...        */
  19.     S5IOInfo cinfo;   /* connection info for this server.                    */
  20.     char name[S5_HOSTNAME_SIZE];
  21.     u_char reserved;
  22.     char idtentry[IDTENTRY_SIZE];
  23.     struct scache *next;
  24. };
  25. typedef struct scache UdpSocksCache;
  26. /* authentication cache -- have I sent a message to you before?  If not I    */
  27. /* won't be allowing this message to be recv'd from you.                     */
  28. struct acache {
  29.     S5NetAddr addr; /* remote server's address...                            */
  30.     S5NetAddr baddr; /* last socks5 server's outbound address              */
  31.     int bounded; /* address in bndAddr is valid                              */
  32.     struct acache *next;
  33. };
  34. typedef struct acache UdpAuthCache;
  35. /* route cacche...what socket to write out on (dest)                         */
  36. struct aroute {
  37.     S5NetAddr raddr;      /* The address of the interface...                 */
  38.     S5IOHandle sd;   /* The socket to use...                            */
  39.   
  40.     struct aroute *next;
  41. };
  42. typedef struct aroute UdpRouteCache;
  43. struct hinfo {
  44.     char name[MAXHOSTNAMELEN];
  45.     struct in_addr addr;
  46.     struct hinfo *next;
  47. };
  48. typedef struct hinfo UdpHostCache;
  49. struct sdring {
  50.     S5IOHandle sd;
  51.     struct sdring *next;
  52. };
  53. typedef struct sdring UdpSdRing;
  54. struct udpinfo {
  55.     S5IOInfo iio, *oiop;
  56.     
  57.     UdpSocksCache *scache;
  58.     UdpAuthCache  *acache;
  59.     UdpRouteCache *rcache;
  60.     UdpHostCache  *hcache;
  61.     
  62.     UdpSocksCache *curs;
  63.     UdpAuthCache  *cura;
  64.     UdpRouteCache *curr;
  65.     UdpSdRing     *sdring;
  66.     char mbuf[UDP_MAX_PAYLOAD + MAXHDRSIZE], *obuf;
  67.     int obuflen;
  68.     S5IOHandle maxfd, relay;
  69.     fd_set myfds;
  70. };
  71. typedef struct udpinfo UdpInfo;
  72. S5IOHandle MakeOutSocket   P((UdpInfo *, S5NetAddr *, u_short));
  73. S5IOHandle FindOutSocket   P((UdpInfo *, S5LinkInfo *, const S5NetAddr *, const char *));
  74. int        FindProxyEntry  P((UdpInfo *, S5LinkInfo *, S5NetAddr *, int));
  75. int        CheckIfAllowed  P((UdpInfo *, S5LinkInfo *));        /* See if host is allowed; cache  */
  76. int        CheckIfCached   P((UdpInfo *, S5LinkInfo *, int));   /* Check cache to see if allowed  */
  77. int        WasResolved     P((UdpInfo *, S5NetAddr *, char *)); /* See if dst was resolved here.  */
  78. void       MarkResolved    P((UdpInfo *, S5NetAddr *, char *)); /* Mark dst was resolved here.    */
  79. #endif