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

Ftp客户端

开发平台:

Unix_Linux

  1. /*
  2.  * ProFTPD - FTP server daemon
  3.  * Copyright (c) 1997, 1998 Public Flood Software
  4.  *  
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
  18.  */
  19. /* BSD socket manipulation tools.
  20.  *
  21.  * $Id: inet.h,v 1.2 1999/09/17 03:56:55 macgyver Exp $
  22.  */
  23. #ifndef __INET_H
  24. #define __INET_H
  25. /* connection modes */
  26. #define CM_NONE 0
  27. #define CM_LISTEN 1
  28. #define CM_OPEN 2
  29. #define CM_ACCEPT 3
  30. #define CM_CONNECT 4
  31. #define CM_CLOSED 5
  32. #define CM_ERROR 6
  33. #ifndef INADDR_ANY
  34. #define INADDR_ANY ((unsigned long int) 0x00000000)
  35. #endif
  36. #ifndef INPORT_ANY
  37. #define INPORT_ANY 0
  38. #endif
  39. #ifndef U32BITS
  40. #define U32BITS 0xffffffff
  41. #endif
  42. /* connection structure */
  43. typedef struct conn_struc {
  44.   pool *pool;
  45.   int mode; /* Current connection mode */
  46.   int listen_fd; /* Listening file descriptor */
  47.   int rcvbuf,sndbuf; /* Socket recv and send sizes */
  48.   int xerrno; /* Set to error if mode == CM_ERROR */
  49.   array_header *iplist;
  50.   int niplist; /* IPs we are listening to */
  51.   
  52.   int rfd,wfd; /* Read and write fds */
  53.   IOFILE *inf,*outf; /* Input/Output streams */
  54.   p_in_addr_t *remote_ipaddr; /* Remote address of connection */
  55.   int remote_port; /* Remote port of connection */
  56.   p_in_addr_t *local_ipaddr; /* Local side of connection */
  57.   int local_port; /* Local port */
  58.   char *remote_name; /* Remote FQDN */
  59. } conn_t;
  60. /* Prototypes */
  61. void init_inet();
  62. void clear_inet_pool();
  63. int inet_reverse_dns(pool*,int);
  64. int inet_getservport(pool*,char *serv,char *proto);
  65. char *inet_validate(char *buf);
  66. char *inet_gethostname(pool*);
  67. char *inet_fqdn(pool*,const char*);
  68. p_in_addr_t *inet_getaddr(pool*,char*);
  69. char *inet_ascii(pool*,p_in_addr_t*);
  70. char *inet_getname(pool*,p_in_addr_t*);
  71. conn_t *inet_copy_connection(pool*,conn_t*);
  72. int inet_prebind_socket(pool*,p_in_addr_t*,int);
  73. conn_t *inet_create_dup_connection(pool*,xaset_t*,int,p_in_addr_t*);
  74. conn_t *inet_create_connection(pool*,xaset_t *servers,int fd,
  75.                                p_in_addr_t *bind_addr,int port,int retry_bind);
  76. void inet_close(pool*,conn_t*);
  77. int inet_setnonblock(pool*,conn_t*);
  78. int inet_setblock(pool*,conn_t*);
  79. int inet_setoptions(pool*,conn_t*,int rcvbuf,int sndbuf);
  80. int inet_set_proto_options(pool*,conn_t*,int,int,int,int);
  81. int inet_setasync(pool*,conn_t*);
  82. int inet_listen(pool*,conn_t*,int);
  83. int inet_resetlisten(pool*,conn_t*);
  84. int inet_accept_nowait(pool*,conn_t*);
  85. int inet_connect(pool*,conn_t*,p_in_addr_t*,int);
  86. int inet_connect_nowait(pool*,conn_t*,p_in_addr_t*,int);
  87. int inet_get_conn_info(conn_t*,int);
  88. conn_t *inet_accept(pool*,conn_t*,int rfd,int wfd,int resolve);
  89. conn_t *inet_associate(pool*,conn_t*,p_in_addr_t *addr,
  90.                        IOFILE *inf, IOFILE *outf,int resolve);
  91. conn_t *inet_openrw(pool*,conn_t*,p_in_addr_t *addr,
  92.                     int fd,int rfd,int wfd,int resolve);
  93. #endif /* __INET_H */