/binding/win32/inaddr.d

http://github.com/wilkie/djehuty · D · 115 lines · 63 code · 19 blank · 33 comment · 0 complexity · 63721e571f916e042fb64042b8d39e7e MD5 · raw file

  1. /*
  2. * inaddr.d
  3. *
  4. * This module binds inaddr.h to D. The original copyright notice is
  5. * preserved below.
  6. *
  7. * Author: Dave Wilkinson
  8. * Originated: November 25th, 2009
  9. *
  10. */
  11. module binding.win32.inaddr;
  12. import binding.win32.windef;
  13. import binding.win32.winbase;
  14. import binding.win32.winnt;
  15. import binding.win32.inaddr;
  16. extern(System):
  17. /*++
  18. Copyright (c) Microsoft Corporation
  19. Module Name:
  20. inaddr.h
  21. Environment:
  22. user mode or kernel mode
  23. --*/
  24. //
  25. // IPv4 Internet address
  26. // This is an 'on-wire' format structure.
  27. //
  28. struct in_addr {
  29. union _inner_union {
  30. struct _inner_struct {
  31. UCHAR s_b1;
  32. UCHAR s_b2;
  33. UCHAR s_b3;
  34. UCHAR s_b4;
  35. }
  36. _inner_struct S_un_b;
  37. struct _inner_struct2 {
  38. USHORT s_w1;
  39. USHORT s_w2;
  40. }
  41. _inner_struct2 S_un_w;
  42. ULONG S_addr;
  43. }
  44. _inner_union S_un;
  45. ULONG s_addr() {
  46. return S_un.S_addr;
  47. }
  48. void s_addr(ULONG val) {
  49. S_un.S_addr = val;
  50. }
  51. UCHAR s_host() {
  52. return S_un.S_un_b.s_b2;
  53. }
  54. void s_host(UCHAR val) {
  55. S_un.S_un_b.s_b2 = val;
  56. }
  57. UCHAR s_net() {
  58. return S_un.S_un_b.s_b1;
  59. }
  60. void s_net(UCHAR val) {
  61. S_un.S_un_b.s_b1 = val;
  62. }
  63. USHORT s_imp() {
  64. return S_un.S_un_w.s_w2;
  65. }
  66. void s_imp(USHORT val) {
  67. S_un.S_un_w.s_w2 = val;
  68. }
  69. UCHAR s_impno() {
  70. return S_un.S_un_b.s_b4;
  71. }
  72. void s_impno(UCHAR val) {
  73. S_un.S_un_b.s_b4 = val;
  74. }
  75. UCHAR s_lh() {
  76. return S_un.S_un_b.s_b3;
  77. }
  78. void s_lh(UCHAR val) {
  79. S_un.S_un_b.s_b3 = val;
  80. }
  81. //#define s_addr S_un.S_addr /* can be used for most tcp & ip code */
  82. //#define s_host S_un.S_un_b.s_b2 // host on imp
  83. //#define s_net S_un.S_un_b.s_b1 // network
  84. //#define s_imp S_un.S_un_w.s_w2 // imp
  85. //#define s_impno S_un.S_un_b.s_b4 // imp #
  86. //#define s_lh S_un.S_un_b.s_b3 // logical host
  87. }
  88. alias in_addr IN_ADDR;
  89. alias in_addr* PIN_ADDR;
  90. alias in_addr* LPIN_ADDR;