/src/core/sys/posix/arpa/inet.d

http://github.com/AlexeyProkhin/druntime · D · 140 lines · 72 code · 19 blank · 49 comment · 4 complexity · f70b556872096e741b643b72fe35ccd0 MD5 · raw file

  1. /**
  2. * D header file for POSIX.
  3. *
  4. * Copyright: Copyright Sean Kelly 2005 - 2009.
  5. * License: <a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>.
  6. * Authors: Sean Kelly
  7. * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
  8. */
  9. /* Copyright Sean Kelly 2005 - 2009.
  10. * Distributed under the Boost Software License, Version 1.0.
  11. * (See accompanying file LICENSE or copy at
  12. * http://www.boost.org/LICENSE_1_0.txt)
  13. */
  14. module core.sys.posix.arpa.inet;
  15. private import core.sys.posix.config;
  16. public import core.stdc.inttypes; // for uint32_t, uint16_t
  17. public import core.sys.posix.sys.socket; // for socklen_t
  18. version (Posix):
  19. extern (C):
  20. //
  21. // Required
  22. //
  23. /*
  24. NOTE: The following must must be defined in core.sys.posix.arpa.inet to break
  25. a circular import: in_port_t, in_addr_t, struct in_addr, INET_ADDRSTRLEN.
  26. in_port_t // from core.sys.posix.netinet.in_
  27. in_addr_t // from core.sys.posix.netinet.in_
  28. struct in_addr // from core.sys.posix.netinet.in_
  29. INET_ADDRSTRLEN // from core.sys.posix.netinet.in_
  30. uint32_t // from core.stdc.inttypes
  31. uint16_t // from core.stdc.inttypes
  32. uint32_t htonl(uint32_t);
  33. uint16_t htons(uint16_t);
  34. uint32_t ntohl(uint32_t);
  35. uint16_t ntohs(uint16_t);
  36. in_addr_t inet_addr(in char*);
  37. char* inet_ntoa(in_addr);
  38. // per spec: const char* inet_ntop(int, const void*, char*, socklen_t);
  39. char* inet_ntop(int, in void*, char*, socklen_t);
  40. int inet_pton(int, in char*, void*);
  41. */
  42. version( linux )
  43. {
  44. alias uint16_t in_port_t;
  45. alias uint32_t in_addr_t;
  46. struct in_addr
  47. {
  48. in_addr_t s_addr;
  49. }
  50. enum INET_ADDRSTRLEN = 16;
  51. uint32_t htonl(uint32_t);
  52. uint16_t htons(uint16_t);
  53. uint32_t ntohl(uint32_t);
  54. uint16_t ntohs(uint16_t);
  55. in_addr_t inet_addr(in char*);
  56. char* inet_ntoa(in_addr);
  57. const(char)* inet_ntop(int, in void*, char*, socklen_t);
  58. int inet_pton(int, in char*, void*);
  59. }
  60. else version( OSX )
  61. {
  62. alias uint16_t in_port_t;
  63. alias uint32_t in_addr_t;
  64. struct in_addr
  65. {
  66. in_addr_t s_addr;
  67. }
  68. enum INET_ADDRSTRLEN = 16;
  69. uint32_t htonl(uint32_t);
  70. uint16_t htons(uint16_t);
  71. uint32_t ntohl(uint32_t);
  72. uint16_t ntohs(uint16_t);
  73. in_addr_t inet_addr(in char*);
  74. char* inet_ntoa(in_addr);
  75. const(char)* inet_ntop(int, in void*, char*, socklen_t);
  76. int inet_pton(int, in char*, void*);
  77. }
  78. else version( FreeBSD )
  79. {
  80. alias uint16_t in_port_t;
  81. alias uint32_t in_addr_t;
  82. struct in_addr
  83. {
  84. in_addr_t s_addr;
  85. }
  86. enum INET_ADDRSTRLEN = 16;
  87. uint32_t htonl(uint32_t);
  88. uint16_t htons(uint16_t);
  89. uint32_t ntohl(uint32_t);
  90. uint16_t ntohs(uint16_t);
  91. in_addr_t inet_addr(in char*);
  92. char* inet_ntoa(in_addr);
  93. const(char)* inet_ntop(int, in void*, char*, socklen_t);
  94. int inet_pton(int, in char*, void*);
  95. }
  96. //
  97. // IPV6 (IP6)
  98. //
  99. /*
  100. NOTE: The following must must be defined in core.sys.posix.arpa.inet to break
  101. a circular import: INET6_ADDRSTRLEN.
  102. INET6_ADDRSTRLEN // from core.sys.posix.netinet.in_
  103. */
  104. version( linux )
  105. {
  106. enum INET6_ADDRSTRLEN = 46;
  107. }
  108. else version( OSX )
  109. {
  110. enum INET6_ADDRSTRLEN = 46;
  111. }
  112. else version( FreeBSD )
  113. {
  114. enum INET6_ADDRSTRLEN = 46;
  115. }