addr.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 1999,2000,2001  Ross Combs (rocombs@cs.nmsu.edu)
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #ifndef INCLUDED_ADDR_TYPES
  19. #define INCLUDED_ADDR_TYPES
  20. #ifdef JUST_NEED_TYPES
  21. # include "common/list.h"
  22. #else
  23. # define JUST_NEED_TYPES
  24. # include "common/list.h"
  25. # undef JUST_NEED_TYPES
  26. #endif
  27. typedef union
  28. {
  29.     unsigned long n;
  30. /* EDITED BY CREEPLORD  */
  31.     int           i;
  32. /* END OF EDIT */
  33.     void *        p;
  34. } t_addr_data;
  35. typedef struct addr_struct
  36. #ifdef ADDR_INTERNAL_ACCESS
  37. {
  38.     char const * str; /* hostname or ip */
  39.     unsigned int ip;
  40.     unsigned int port;
  41.     t_addr_data  data;  /* data argument */
  42. }
  43. #endif
  44. t_addr;
  45. typedef struct netaddr_struct
  46. #ifdef ADDR_INTERNAL_ACCESS
  47. {
  48.     unsigned int ip;
  49.     unsigned int mask;
  50. }
  51. #endif
  52. t_netaddr;
  53. typedef t_list t_addrlist;
  54. #endif
  55. /*****/
  56. #ifndef JUST_NEED_TYPES
  57. #ifndef INCLUDED_ADDR_PROTOS
  58. #define INCLUDED_ADDR_PROTOS
  59. /* ipaddr and port are in host byte order */
  60. extern char const * addr_num_to_addr_str(unsigned int ipaddr, unsigned short port);
  61. /* ipaddr is in host byte order */
  62. extern char const * addr_num_to_ip_str(unsigned int ipaddr);
  63. extern char const * host_lookup(char const * hoststr, unsigned int * ipaddr);
  64. /* ipaddr and port are in host byte order */
  65. #ifdef USE_CHECK_ALLOC
  66. extern t_addr * addr_create_num_real(unsigned int ipaddr, unsigned short port, char const * fn, unsigned int ln) ;
  67. # define addr_create_num(A,P) addr_create_num_real(A,P,__FILE__"{addr_create_num}",__LINE__)
  68. #else
  69. extern t_addr * addr_create_num(unsigned int ipaddr, unsigned short port) ;
  70. #endif
  71. /* defipaddr and defport are in host byte order */
  72. #ifdef USE_CHECK_ALLOC
  73. extern t_addr * addr_create_str_real(char const * str, unsigned int defipaddr, unsigned short defport, char const * fn, unsigned int ln) ;
  74. # define addr_create_str(S,A,P) addr_create_str_real(S,A,P,__FILE__"{addr_create_str}",__LINE__)
  75. #else
  76. extern t_addr * addr_create_str(char const * str, unsigned int defipaddr, unsigned short defport) ;
  77. #endif
  78. extern int addr_destroy(t_addr const * addr);
  79. extern char * addr_get_host_str(t_addr const * addr, char * str, unsigned int len);
  80. extern char * addr_get_addr_str(t_addr const * addr, char * str, unsigned int len);
  81. /* returned in host byte order */
  82. extern unsigned int addr_get_ip(t_addr const * addr);
  83. /* returned in host byte order */
  84. extern unsigned short addr_get_port(t_addr const * addr);
  85. extern int addr_set_data(t_addr * addr, t_addr_data data);
  86. extern t_addr_data addr_get_data(t_addr const * addr);
  87. extern t_netaddr * netaddr_create_str(char const * str) ;
  88. extern int netaddr_destroy(t_netaddr const * netaddr);
  89. extern char * netaddr_get_addr_str(t_netaddr const * netaddr, char * str, unsigned int len);
  90. extern int netaddr_contains_addr_num(t_netaddr const * netaddr, unsigned int ipaddr);
  91. /* defipaddr and defport are in host byte order */
  92. extern int addrlist_append(t_addrlist * addrlist, char const * str, unsigned int defipaddr, unsigned short defport);
  93. extern t_addrlist * addrlist_create(char const * str, unsigned int defipaddr, unsigned short defport) ;
  94. extern int addrlist_destroy(t_addrlist * addrlist);
  95. extern int addrlist_get_length(t_addrlist const * addrlist);
  96. #endif
  97. #endif