~john-koepi/ubuntu/trusty/golang/default

« back to all changes in this revision

Viewing changes to src/pkg/syscall/ztypes_windows.go

  • Committer: Bazaar Package Importer
  • Author(s): Ondřej Surý
  • Date: 2011-08-03 17:04:59 UTC
  • mfrom: (14.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20110803170459-wzd99m3567y80ila
Tags: 1:59-1
* Imported Upstream version 59
* Refresh patches to a new release
* Fix FTBFS on ARM (Closes: #634270)
* Update version.bash to work with Debian packaging and not hg
  repository

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package syscall
 
2
 
 
3
// TODO(brainman): autogenerate types in ztypes_windows_386.go
 
4
 
 
5
//import "unsafe"
 
6
 
 
7
// Constants
 
8
const (
 
9
        sizeofPtr      = 0x4
 
10
        sizeofShort    = 0x2
 
11
        sizeofInt      = 0x4
 
12
        sizeofLong     = 0x4
 
13
        sizeofLongLong = 0x8
 
14
        PathMax        = 0x1000
 
15
        SizeofLinger   = 0x8
 
16
        SizeofMsghdr   = 0x1c
 
17
        SizeofCmsghdr  = 0xc
 
18
)
 
19
 
 
20
const (
 
21
        // Windows errors.
 
22
        ERROR_FILE_NOT_FOUND      = 2
 
23
        ERROR_PATH_NOT_FOUND      = 3
 
24
        ERROR_NO_MORE_FILES       = 18
 
25
        ERROR_BROKEN_PIPE         = 109
 
26
        ERROR_BUFFER_OVERFLOW     = 111
 
27
        ERROR_INSUFFICIENT_BUFFER = 122
 
28
        ERROR_MOD_NOT_FOUND       = 126
 
29
        ERROR_PROC_NOT_FOUND      = 127
 
30
        ERROR_ENVVAR_NOT_FOUND    = 203
 
31
        ERROR_DIRECTORY           = 267
 
32
        ERROR_OPERATION_ABORTED   = 995
 
33
        ERROR_IO_PENDING          = 997
 
34
)
 
35
 
 
36
const (
 
37
        // Invented values to support what package os expects.
 
38
        O_RDONLY   = 0x00000
 
39
        O_WRONLY   = 0x00001
 
40
        O_RDWR     = 0x00002
 
41
        O_CREAT    = 0x00040
 
42
        O_EXCL     = 0x00080
 
43
        O_NOCTTY   = 0x00100
 
44
        O_TRUNC    = 0x00200
 
45
        O_NONBLOCK = 0x00800
 
46
        O_APPEND   = 0x00400
 
47
        O_SYNC     = 0x01000
 
48
        O_ASYNC    = 0x02000
 
49
        O_CLOEXEC  = 0x80000
 
50
)
 
51
 
 
52
const (
 
53
        // More invented values for signals
 
54
        SIGHUP  = 0x1
 
55
        SIGINT  = 0x2
 
56
        SIGQUIT = 0x3
 
57
        SIGILL  = 0x4
 
58
        SIGTRAP = 0x5
 
59
        SIGABRT = 0x6
 
60
        SIGBUS  = 0x7
 
61
        SIGFPE  = 0x8
 
62
        SIGKILL = 0x9
 
63
        SIGSEGV = 0xb
 
64
        SIGPIPE = 0xd
 
65
        SIGALRM = 0xe
 
66
        SIGTERM = 0xf
 
67
)
 
68
 
 
69
const (
 
70
        GENERIC_READ    = 0x80000000
 
71
        GENERIC_WRITE   = 0x40000000
 
72
        GENERIC_EXECUTE = 0x20000000
 
73
        GENERIC_ALL     = 0x10000000
 
74
 
 
75
        FILE_APPEND_DATA      = 0x00000004
 
76
        FILE_WRITE_ATTRIBUTES = 0x00000100
 
77
 
 
78
        FILE_SHARE_READ          = 0x00000001
 
79
        FILE_SHARE_WRITE         = 0x00000002
 
80
        FILE_SHARE_DELETE        = 0x00000004
 
81
        FILE_ATTRIBUTE_READONLY  = 0x00000001
 
82
        FILE_ATTRIBUTE_HIDDEN    = 0x00000002
 
83
        FILE_ATTRIBUTE_SYSTEM    = 0x00000004
 
84
        FILE_ATTRIBUTE_DIRECTORY = 0x00000010
 
85
        FILE_ATTRIBUTE_ARCHIVE   = 0x00000020
 
86
        FILE_ATTRIBUTE_NORMAL    = 0x00000080
 
87
 
 
88
        INVALID_FILE_ATTRIBUTES = 0xffffffff
 
89
 
 
90
        CREATE_NEW        = 1
 
91
        CREATE_ALWAYS     = 2
 
92
        OPEN_EXISTING     = 3
 
93
        OPEN_ALWAYS       = 4
 
94
        TRUNCATE_EXISTING = 5
 
95
 
 
96
        HANDLE_FLAG_INHERIT    = 0x00000001
 
97
        STARTF_USESTDHANDLES   = 0x00000100
 
98
        STARTF_USESHOWWINDOW   = 0x00000001
 
99
        DUPLICATE_CLOSE_SOURCE = 0x00000001
 
100
        DUPLICATE_SAME_ACCESS  = 0x00000002
 
101
 
 
102
        STD_INPUT_HANDLE  = -10
 
103
        STD_OUTPUT_HANDLE = -11
 
104
        STD_ERROR_HANDLE  = -12
 
105
 
 
106
        FILE_BEGIN   = 0
 
107
        FILE_CURRENT = 1
 
108
        FILE_END     = 2
 
109
 
 
110
        FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
 
111
        FORMAT_MESSAGE_IGNORE_INSERTS  = 512
 
112
        FORMAT_MESSAGE_FROM_STRING     = 1024
 
113
        FORMAT_MESSAGE_FROM_HMODULE    = 2048
 
114
        FORMAT_MESSAGE_FROM_SYSTEM     = 4096
 
115
        FORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192
 
116
        FORMAT_MESSAGE_MAX_WIDTH_MASK  = 255
 
117
 
 
118
        MAX_PATH      = 260
 
119
        MAX_LONG_PATH = 32768
 
120
 
 
121
        MAX_COMPUTERNAME_LENGTH = 15
 
122
 
 
123
        TIME_ZONE_ID_UNKNOWN  = 0
 
124
        TIME_ZONE_ID_STANDARD = 1
 
125
 
 
126
        TIME_ZONE_ID_DAYLIGHT = 2
 
127
        IGNORE                = 0
 
128
        INFINITE              = 0xffffffff
 
129
 
 
130
        WAIT_TIMEOUT   = 258
 
131
        WAIT_ABANDONED = 0x00000080
 
132
        WAIT_OBJECT_0  = 0x00000000
 
133
        WAIT_FAILED    = 0xFFFFFFFF
 
134
 
 
135
        CREATE_UNICODE_ENVIRONMENT = 0x00000400
 
136
 
 
137
        STANDARD_RIGHTS_READ      = 0x00020000
 
138
        PROCESS_QUERY_INFORMATION = 0x00000400
 
139
        SYNCHRONIZE               = 0x00100000
 
140
 
 
141
        PAGE_READONLY          = 0x02
 
142
        PAGE_READWRITE         = 0x04
 
143
        PAGE_WRITECOPY         = 0x08
 
144
        PAGE_EXECUTE_READ      = 0x20
 
145
        PAGE_EXECUTE_READWRITE = 0x40
 
146
        PAGE_EXECUTE_WRITECOPY = 0x80
 
147
 
 
148
        FILE_MAP_COPY    = 0x01
 
149
        FILE_MAP_WRITE   = 0x02
 
150
        FILE_MAP_READ    = 0x04
 
151
        FILE_MAP_EXECUTE = 0x20
 
152
)
 
153
 
 
154
const (
 
155
        // wincrypt.h
 
156
        PROV_RSA_FULL                    = 1
 
157
        PROV_RSA_SIG                     = 2
 
158
        PROV_DSS                         = 3
 
159
        PROV_FORTEZZA                    = 4
 
160
        PROV_MS_EXCHANGE                 = 5
 
161
        PROV_SSL                         = 6
 
162
        PROV_RSA_SCHANNEL                = 12
 
163
        PROV_DSS_DH                      = 13
 
164
        PROV_EC_ECDSA_SIG                = 14
 
165
        PROV_EC_ECNRA_SIG                = 15
 
166
        PROV_EC_ECDSA_FULL               = 16
 
167
        PROV_EC_ECNRA_FULL               = 17
 
168
        PROV_DH_SCHANNEL                 = 18
 
169
        PROV_SPYRUS_LYNKS                = 20
 
170
        PROV_RNG                         = 21
 
171
        PROV_INTEL_SEC                   = 22
 
172
        PROV_REPLACE_OWF                 = 23
 
173
        PROV_RSA_AES                     = 24
 
174
        CRYPT_VERIFYCONTEXT              = 0xF0000000
 
175
        CRYPT_NEWKEYSET                  = 0x00000008
 
176
        CRYPT_DELETEKEYSET               = 0x00000010
 
177
        CRYPT_MACHINE_KEYSET             = 0x00000020
 
178
        CRYPT_SILENT                     = 0x00000040
 
179
        CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
 
180
)
 
181
 
 
182
// Types
 
183
 
 
184
type _C_short int16
 
185
 
 
186
type _C_int int32
 
187
 
 
188
type _C_long int32
 
189
 
 
190
type _C_long_long int64
 
191
 
 
192
// Invented values to support what package os expects.
 
193
type Timeval struct {
 
194
        Sec  int32
 
195
        Usec int32
 
196
}
 
197
 
 
198
func (tv *Timeval) Nanoseconds() int64 {
 
199
        return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
 
200
}
 
201
 
 
202
func NsecToTimeval(nsec int64) (tv Timeval) {
 
203
        tv.Sec = int32(nsec / 1e9)
 
204
        tv.Usec = int32(nsec % 1e9 / 1e3)
 
205
        return
 
206
}
 
207
 
 
208
type SecurityAttributes struct {
 
209
        Length             uint32
 
210
        SecurityDescriptor uintptr
 
211
        InheritHandle      uint32
 
212
}
 
213
 
 
214
type Overlapped struct {
 
215
        Internal     uint32
 
216
        InternalHigh uint32
 
217
        Offset       uint32
 
218
        OffsetHigh   uint32
 
219
        HEvent       Handle
 
220
}
 
221
 
 
222
type Filetime struct {
 
223
        LowDateTime  uint32
 
224
        HighDateTime uint32
 
225
}
 
226
 
 
227
func (ft *Filetime) Nanoseconds() int64 {
 
228
        // 100-nanosecond intervals since January 1, 1601
 
229
        nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
 
230
        // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
 
231
        nsec -= 116444736000000000
 
232
        // convert into nanoseconds
 
233
        nsec *= 100
 
234
        return nsec
 
235
}
 
236
 
 
237
func NsecToFiletime(nsec int64) (ft Filetime) {
 
238
        // convert into 100-nanosecond
 
239
        nsec /= 100
 
240
        // change starting time to January 1, 1601
 
241
        nsec += 116444736000000000
 
242
        // split into high / low
 
243
        ft.LowDateTime = uint32(nsec & 0xffffffff)
 
244
        ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
 
245
        return ft
 
246
}
 
247
 
 
248
type Win32finddata struct {
 
249
        FileAttributes    uint32
 
250
        CreationTime      Filetime
 
251
        LastAccessTime    Filetime
 
252
        LastWriteTime     Filetime
 
253
        FileSizeHigh      uint32
 
254
        FileSizeLow       uint32
 
255
        Reserved0         uint32
 
256
        Reserved1         uint32
 
257
        FileName          [MAX_PATH - 1]uint16
 
258
        AlternateFileName [13]uint16
 
259
}
 
260
 
 
261
type ByHandleFileInformation struct {
 
262
        FileAttributes     uint32
 
263
        CreationTime       Filetime
 
264
        LastAccessTime     Filetime
 
265
        LastWriteTime      Filetime
 
266
        VolumeSerialNumber uint32
 
267
        FileSizeHigh       uint32
 
268
        FileSizeLow        uint32
 
269
        NumberOfLinks      uint32
 
270
        FileIndexHigh      uint32
 
271
        FileIndexLow       uint32
 
272
}
 
273
 
 
274
// ShowWindow constants
 
275
const (
 
276
        // winuser.h
 
277
        SW_HIDE            = 0
 
278
        SW_NORMAL          = 1
 
279
        SW_SHOWNORMAL      = 1
 
280
        SW_SHOWMINIMIZED   = 2
 
281
        SW_SHOWMAXIMIZED   = 3
 
282
        SW_MAXIMIZE        = 3
 
283
        SW_SHOWNOACTIVATE  = 4
 
284
        SW_SHOW            = 5
 
285
        SW_MINIMIZE        = 6
 
286
        SW_SHOWMINNOACTIVE = 7
 
287
        SW_SHOWNA          = 8
 
288
        SW_RESTORE         = 9
 
289
        SW_SHOWDEFAULT     = 10
 
290
        SW_FORCEMINIMIZE   = 11
 
291
)
 
292
 
 
293
type StartupInfo struct {
 
294
        Cb            uint32
 
295
        _             *uint16
 
296
        Desktop       *uint16
 
297
        Title         *uint16
 
298
        X             uint32
 
299
        Y             uint32
 
300
        XSize         uint32
 
301
        YSize         uint32
 
302
        XCountChars   uint32
 
303
        YCountChars   uint32
 
304
        FillAttribute uint32
 
305
        Flags         uint32
 
306
        ShowWindow    uint16
 
307
        _             uint16
 
308
        _             *byte
 
309
        StdInput      Handle
 
310
        StdOutput     Handle
 
311
        StdErr        Handle
 
312
}
 
313
 
 
314
type ProcessInformation struct {
 
315
        Process   Handle
 
316
        Thread    Handle
 
317
        ProcessId uint32
 
318
        ThreadId  uint32
 
319
}
 
320
 
 
321
// Invented values to support what package os expects.
 
322
type Stat_t struct {
 
323
        Windata Win32finddata
 
324
        Mode    uint32
 
325
}
 
326
 
 
327
type Systemtime struct {
 
328
        Year         uint16
 
329
        Month        uint16
 
330
        DayOfWeek    uint16
 
331
        Day          uint16
 
332
        Hour         uint16
 
333
        Minute       uint16
 
334
        Second       uint16
 
335
        Milliseconds uint16
 
336
}
 
337
 
 
338
type Timezoneinformation struct {
 
339
        Bias         int32
 
340
        StandardName [32]uint16
 
341
        StandardDate Systemtime
 
342
        StandardBias int32
 
343
        DaylightName [32]uint16
 
344
        DaylightDate Systemtime
 
345
        DaylightBias int32
 
346
}
 
347
 
 
348
// Socket related.
 
349
 
 
350
const (
 
351
        AF_UNSPEC  = 0
 
352
        AF_UNIX    = 1
 
353
        AF_INET    = 2
 
354
        AF_INET6   = 23
 
355
        AF_NETBIOS = 17
 
356
 
 
357
        SOCK_STREAM    = 1
 
358
        SOCK_DGRAM     = 2
 
359
        SOCK_RAW       = 3
 
360
        SOCK_SEQPACKET = 5
 
361
 
 
362
        IPPROTO_IP  = 0
 
363
        IPPROTO_TCP = 6
 
364
        IPPROTO_UDP = 17
 
365
 
 
366
        SOL_SOCKET               = 0xffff
 
367
        SO_REUSEADDR             = 4
 
368
        SO_KEEPALIVE             = 8
 
369
        SO_DONTROUTE             = 16
 
370
        SO_BROADCAST             = 32
 
371
        SO_LINGER                = 128
 
372
        SO_RCVBUF                = 0x1002
 
373
        SO_SNDBUF                = 0x1001
 
374
        SO_UPDATE_ACCEPT_CONTEXT = 0x700b
 
375
 
 
376
        IPPROTO_IPV6 = 0x29
 
377
        IPV6_V6ONLY  = 0x1b
 
378
 
 
379
        SOMAXCONN = 5
 
380
 
 
381
        TCP_NODELAY = 1
 
382
 
 
383
        SHUT_RD   = 0
 
384
        SHUT_WR   = 1
 
385
        SHUT_RDWR = 2
 
386
 
 
387
        WSADESCRIPTION_LEN = 256
 
388
        WSASYS_STATUS_LEN  = 128
 
389
)
 
390
 
 
391
type WSAData struct {
 
392
        Version      uint16
 
393
        HighVersion  uint16
 
394
        Description  [WSADESCRIPTION_LEN + 1]byte
 
395
        SystemStatus [WSASYS_STATUS_LEN + 1]byte
 
396
        MaxSockets   uint16
 
397
        MaxUdpDg     uint16
 
398
        VendorInfo   *byte
 
399
}
 
400
 
 
401
type WSABuf struct {
 
402
        Len uint32
 
403
        Buf *byte
 
404
}
 
405
 
 
406
// TODO(brainman): fix all needed for os
 
407
 
 
408
const (
 
409
        PROT_READ  = 0x1
 
410
        PROT_WRITE = 0x2
 
411
        MAP_SHARED = 0x1
 
412
        SYS_FORK   = 0
 
413
        SYS_PTRACE = 0
 
414
        SYS_CHDIR  = 0
 
415
        SYS_DUP2   = 0
 
416
        SYS_FCNTL  = 0
 
417
        SYS_EXECVE = 0
 
418
        F_GETFD    = 0x1
 
419
        F_SETFD    = 0x2
 
420
        F_GETFL    = 0x3
 
421
        F_SETFL    = 0x4
 
422
        FD_CLOEXEC = 0
 
423
        S_IFMT     = 0x1f000
 
424
        S_IFIFO    = 0x1000
 
425
        S_IFCHR    = 0x2000
 
426
        S_IFDIR    = 0x4000
 
427
        S_IFBLK    = 0x6000
 
428
        S_IFREG    = 0x8000
 
429
        S_IFLNK    = 0xa000
 
430
        S_IFSOCK   = 0xc000
 
431
        S_ISUID    = 0x800
 
432
        S_ISGID    = 0x400
 
433
        S_ISVTX    = 0x200
 
434
        S_IRUSR    = 0x100
 
435
        S_IWRITE   = 0x80
 
436
        S_IWUSR    = 0x80
 
437
        S_IXUSR    = 0x40
 
438
)
 
439
 
 
440
const (
 
441
        FILE_TYPE_CHAR    = 0x0002
 
442
        FILE_TYPE_DISK    = 0x0001
 
443
        FILE_TYPE_PIPE    = 0x0003
 
444
        FILE_TYPE_REMOTE  = 0x8000
 
445
        FILE_TYPE_UNKNOWN = 0x0000
 
446
)
 
447
 
 
448
type Hostent struct {
 
449
        Name     *byte
 
450
        Aliases  **byte
 
451
        AddrType uint16
 
452
        Length   uint16
 
453
        AddrList **byte
 
454
}
 
455
 
 
456
type Servent struct {
 
457
        Name    *byte
 
458
        Aliases **byte
 
459
        Port    uint16
 
460
        Proto   *byte
 
461
}
 
462
 
 
463
const (
 
464
        DNS_TYPE_A       = 0x0001
 
465
        DNS_TYPE_NS      = 0x0002
 
466
        DNS_TYPE_MD      = 0x0003
 
467
        DNS_TYPE_MF      = 0x0004
 
468
        DNS_TYPE_CNAME   = 0x0005
 
469
        DNS_TYPE_SOA     = 0x0006
 
470
        DNS_TYPE_MB      = 0x0007
 
471
        DNS_TYPE_MG      = 0x0008
 
472
        DNS_TYPE_MR      = 0x0009
 
473
        DNS_TYPE_NULL    = 0x000a
 
474
        DNS_TYPE_WKS     = 0x000b
 
475
        DNS_TYPE_PTR     = 0x000c
 
476
        DNS_TYPE_HINFO   = 0x000d
 
477
        DNS_TYPE_MINFO   = 0x000e
 
478
        DNS_TYPE_MX      = 0x000f
 
479
        DNS_TYPE_TEXT    = 0x0010
 
480
        DNS_TYPE_RP      = 0x0011
 
481
        DNS_TYPE_AFSDB   = 0x0012
 
482
        DNS_TYPE_X25     = 0x0013
 
483
        DNS_TYPE_ISDN    = 0x0014
 
484
        DNS_TYPE_RT      = 0x0015
 
485
        DNS_TYPE_NSAP    = 0x0016
 
486
        DNS_TYPE_NSAPPTR = 0x0017
 
487
        DNS_TYPE_SIG     = 0x0018
 
488
        DNS_TYPE_KEY     = 0x0019
 
489
        DNS_TYPE_PX      = 0x001a
 
490
        DNS_TYPE_GPOS    = 0x001b
 
491
        DNS_TYPE_AAAA    = 0x001c
 
492
        DNS_TYPE_LOC     = 0x001d
 
493
        DNS_TYPE_NXT     = 0x001e
 
494
        DNS_TYPE_EID     = 0x001f
 
495
        DNS_TYPE_NIMLOC  = 0x0020
 
496
        DNS_TYPE_SRV     = 0x0021
 
497
        DNS_TYPE_ATMA    = 0x0022
 
498
        DNS_TYPE_NAPTR   = 0x0023
 
499
        DNS_TYPE_KX      = 0x0024
 
500
        DNS_TYPE_CERT    = 0x0025
 
501
        DNS_TYPE_A6      = 0x0026
 
502
        DNS_TYPE_DNAME   = 0x0027
 
503
        DNS_TYPE_SINK    = 0x0028
 
504
        DNS_TYPE_OPT     = 0x0029
 
505
        DNS_TYPE_DS      = 0x002B
 
506
        DNS_TYPE_RRSIG   = 0x002E
 
507
        DNS_TYPE_NSEC    = 0x002F
 
508
        DNS_TYPE_DNSKEY  = 0x0030
 
509
        DNS_TYPE_DHCID   = 0x0031
 
510
        DNS_TYPE_UINFO   = 0x0064
 
511
        DNS_TYPE_UID     = 0x0065
 
512
        DNS_TYPE_GID     = 0x0066
 
513
        DNS_TYPE_UNSPEC  = 0x0067
 
514
        DNS_TYPE_ADDRS   = 0x00f8
 
515
        DNS_TYPE_TKEY    = 0x00f9
 
516
        DNS_TYPE_TSIG    = 0x00fa
 
517
        DNS_TYPE_IXFR    = 0x00fb
 
518
        DNS_TYPE_AXFR    = 0x00fc
 
519
        DNS_TYPE_MAILB   = 0x00fd
 
520
        DNS_TYPE_MAILA   = 0x00fe
 
521
        DNS_TYPE_ALL     = 0x00ff
 
522
        DNS_TYPE_ANY     = 0x00ff
 
523
        DNS_TYPE_WINS    = 0xff01
 
524
        DNS_TYPE_WINSR   = 0xff02
 
525
        DNS_TYPE_NBSTAT  = 0xff01
 
526
)
 
527
 
 
528
type DNSSRVData struct {
 
529
        Target   *uint16
 
530
        Priority uint16
 
531
        Weight   uint16
 
532
        Port     uint16
 
533
        Pad      uint16
 
534
}
 
535
 
 
536
type DNSPTRData struct {
 
537
        Host *uint16
 
538
}
 
539
 
 
540
type DNSRecord struct {
 
541
        Next     *DNSRecord
 
542
        Name     *uint16
 
543
        Type     uint16
 
544
        Length   uint16
 
545
        Dw       uint32
 
546
        Ttl      uint32
 
547
        Reserved uint32
 
548
        Data     [40]byte
 
549
}
 
550
 
 
551
const (
 
552
        TF_DISCONNECT         = 1
 
553
        TF_REUSE_SOCKET       = 2
 
554
        TF_WRITE_BEHIND       = 4
 
555
        TF_USE_DEFAULT_WORKER = 0
 
556
        TF_USE_SYSTEM_THREAD  = 16
 
557
        TF_USE_KERNEL_APC     = 32
 
558
)
 
559
 
 
560
type TransmitFileBuffers struct {
 
561
        Head       uintptr
 
562
        HeadLength uint32
 
563
        Tail       uintptr
 
564
        TailLength uint32
 
565
}
 
566
 
 
567
const (
 
568
        IFF_UP           = 1
 
569
        IFF_BROADCAST    = 2
 
570
        IFF_LOOPBACK     = 4
 
571
        IFF_POINTTOPOINT = 8
 
572
        IFF_MULTICAST    = 16
 
573
)
 
574
 
 
575
const SIO_GET_INTERFACE_LIST = 0x4004747F
 
576
 
 
577
// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
 
578
// will be fixed to change variable type as suitable.
 
579
 
 
580
type SockaddrGen [24]byte
 
581
 
 
582
type InterfaceInfo struct {
 
583
        Flags            uint32
 
584
        Address          SockaddrGen
 
585
        BroadcastAddress SockaddrGen
 
586
        Netmask          SockaddrGen
 
587
}
 
588
 
 
589
type IpAddressString struct {
 
590
        String [16]byte
 
591
}
 
592
 
 
593
type IpMaskString IpAddressString
 
594
 
 
595
type IpAddrString struct {
 
596
        Next      *IpAddrString
 
597
        IpAddress IpAddressString
 
598
        IpMask    IpMaskString
 
599
        Context   uint32
 
600
}
 
601
 
 
602
const MAX_ADAPTER_NAME_LENGTH = 256
 
603
const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
 
604
const MAX_ADAPTER_ADDRESS_LENGTH = 8
 
605
 
 
606
type IpAdapterInfo struct {
 
607
        Next                *IpAdapterInfo
 
608
        ComboIndex          uint32
 
609
        AdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte
 
610
        Description         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
 
611
        AddressLength       uint32
 
612
        Address             [MAX_ADAPTER_ADDRESS_LENGTH]byte
 
613
        Index               uint32
 
614
        Type                uint32
 
615
        DhcpEnabled         uint32
 
616
        CurrentIpAddress    *IpAddrString
 
617
        IpAddressList       IpAddrString
 
618
        GatewayList         IpAddrString
 
619
        DhcpServer          IpAddrString
 
620
        HaveWins            bool
 
621
        PrimaryWinsServer   IpAddrString
 
622
        SecondaryWinsServer IpAddrString
 
623
        LeaseObtained       int64
 
624
        LeaseExpires        int64
 
625
}
 
626
 
 
627
const MAXLEN_PHYSADDR = 8
 
628
const MAX_INTERFACE_NAME_LEN = 256
 
629
const MAXLEN_IFDESCR = 256
 
630
 
 
631
type MibIfRow struct {
 
632
        Name            [MAX_INTERFACE_NAME_LEN]uint16
 
633
        Index           uint32
 
634
        Type            uint32
 
635
        Mtu             uint32
 
636
        Speed           uint32
 
637
        PhysAddrLen     uint32
 
638
        PhysAddr        [MAXLEN_PHYSADDR]byte
 
639
        AdminStatus     uint32
 
640
        OperStatus      uint32
 
641
        LastChange      uint32
 
642
        InOctets        uint32
 
643
        InUcastPkts     uint32
 
644
        InNUcastPkts    uint32
 
645
        InDiscards      uint32
 
646
        InErrors        uint32
 
647
        InUnknownProtos uint32
 
648
        OutOctets       uint32
 
649
        OutUcastPkts    uint32
 
650
        OutNUcastPkts   uint32
 
651
        OutDiscards     uint32
 
652
        OutErrors       uint32
 
653
        OutQLen         uint32
 
654
        DescrLen        uint32
 
655
        Descr           [MAXLEN_IFDESCR]byte
 
656
}