hyperic-sigar 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. data/COPYING +339 -0
  2. data/EXCEPTIONS +104 -0
  3. data/README +2 -0
  4. data/Rakefile +87 -0
  5. data/bindings/SigarWrapper.pm +2934 -0
  6. data/bindings/ruby/examples/cpu_info.rb +16 -0
  7. data/bindings/ruby/examples/df.rb +32 -0
  8. data/bindings/ruby/examples/free.rb +19 -0
  9. data/bindings/ruby/examples/ifconfig.rb +67 -0
  10. data/bindings/ruby/examples/netstat.rb +54 -0
  11. data/bindings/ruby/examples/pargs.rb +18 -0
  12. data/bindings/ruby/examples/penv.rb +14 -0
  13. data/bindings/ruby/examples/route.rb +31 -0
  14. data/bindings/ruby/examples/who.rb +13 -0
  15. data/bindings/ruby/extconf.rb +110 -0
  16. data/bindings/ruby/rbsigar.c +628 -0
  17. data/include/sigar.h +901 -0
  18. data/include/sigar_fileinfo.h +141 -0
  19. data/include/sigar_format.h +65 -0
  20. data/include/sigar_getline.h +18 -0
  21. data/include/sigar_log.h +82 -0
  22. data/include/sigar_private.h +365 -0
  23. data/include/sigar_ptql.h +55 -0
  24. data/include/sigar_util.h +192 -0
  25. data/src/os/aix/aix_sigar.c +1927 -0
  26. data/src/os/aix/sigar_os.h +71 -0
  27. data/src/os/darwin/darwin_sigar.c +3450 -0
  28. data/src/os/darwin/sigar_os.h +82 -0
  29. data/src/os/hpux/dlpi.c +284 -0
  30. data/src/os/hpux/hpux_sigar.c +1205 -0
  31. data/src/os/hpux/sigar_os.h +51 -0
  32. data/src/os/linux/linux_sigar.c +2595 -0
  33. data/src/os/linux/sigar_os.h +84 -0
  34. data/src/os/netware/netware_sigar.c +719 -0
  35. data/src/os/netware/sigar_os.h +26 -0
  36. data/src/os/osf1/osf1_sigar.c +593 -0
  37. data/src/os/osf1/sigar_os.h +42 -0
  38. data/src/os/solaris/get_mib2.c +321 -0
  39. data/src/os/solaris/get_mib2.h +127 -0
  40. data/src/os/solaris/hmekstat.h +77 -0
  41. data/src/os/solaris/kstats.c +182 -0
  42. data/src/os/solaris/procfs.c +99 -0
  43. data/src/os/solaris/sigar_os.h +225 -0
  44. data/src/os/solaris/solaris_sigar.c +2561 -0
  45. data/src/os/stub/sigar_os.h +8 -0
  46. data/src/os/stub/stub_sigar.c +303 -0
  47. data/src/os/win32/peb.c +213 -0
  48. data/src/os/win32/sigar_os.h +623 -0
  49. data/src/os/win32/sigar_pdh.h +49 -0
  50. data/src/os/win32/win32_sigar.c +3718 -0
  51. data/src/sigar.c +2292 -0
  52. data/src/sigar_cache.c +181 -0
  53. data/src/sigar_fileinfo.c +792 -0
  54. data/src/sigar_format.c +649 -0
  55. data/src/sigar_getline.c +1849 -0
  56. data/src/sigar_ptql.c +1966 -0
  57. data/src/sigar_signal.c +218 -0
  58. data/src/sigar_util.c +1061 -0
  59. data/version.properties +11 -0
  60. metadata +112 -0
@@ -0,0 +1,901 @@
1
+ /*
2
+ * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
3
+ * This file is part of SIGAR.
4
+ *
5
+ * SIGAR is free software; you can redistribute it and/or modify
6
+ * it under the terms version 2 of the GNU General Public License as
7
+ * published by the Free Software Foundation. This program is distributed
8
+ * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
+ * PARTICULAR PURPOSE. See the GNU General Public License for more
11
+ * details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with this program; if not, write to the Free Software
15
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
16
+ * USA.
17
+ */
18
+
19
+ #ifndef SIGAR_H
20
+ #define SIGAR_H
21
+
22
+ /* System Information Gatherer And Reporter */
23
+
24
+ #include <limits.h>
25
+
26
+ #ifdef __cplusplus
27
+ extern "C" {
28
+ #endif
29
+
30
+ #if defined(_LP64) || \
31
+ defined(__LP64__) || \
32
+ defined(__64BIT__) || \
33
+ defined(__powerpc64__) || \
34
+ defined(__osf__)
35
+ #define SIGAR_64BIT
36
+ #endif
37
+
38
+ /* for printf sigar_uint64_t */
39
+ #ifdef SIGAR_64BIT
40
+ # define SIGAR_F_U64 "%lu"
41
+ #else
42
+ # define SIGAR_F_U64 "%Lu"
43
+ #endif
44
+
45
+ #if defined(WIN32)
46
+
47
+ typedef unsigned __int32 sigar_uint32_t;
48
+
49
+ typedef unsigned __int64 sigar_uint64_t;
50
+
51
+ typedef __int32 sigar_int32_t;
52
+
53
+ typedef __int64 sigar_int64_t;
54
+
55
+ #elif ULONG_MAX > 4294967295UL
56
+
57
+ typedef unsigned int sigar_uint32_t;
58
+
59
+ typedef unsigned long sigar_uint64_t;
60
+
61
+ typedef int sigar_int32_t;
62
+
63
+ typedef long sigar_int64_t;
64
+
65
+ #else
66
+
67
+ typedef unsigned int sigar_uint32_t;
68
+
69
+ typedef unsigned long long sigar_uint64_t;
70
+
71
+ typedef int sigar_int32_t;
72
+
73
+ typedef long long sigar_int64_t;
74
+
75
+ #endif
76
+
77
+ #define SIGAR_FIELD_NOTIMPL -1
78
+
79
+ #define SIGAR_OK 0
80
+ #define SIGAR_START_ERROR 20000
81
+ #define SIGAR_ENOTIMPL (SIGAR_START_ERROR + 1)
82
+ #define SIGAR_OS_START_ERROR (SIGAR_START_ERROR*2)
83
+
84
+ #ifdef WIN32
85
+ # define SIGAR_ENOENT ERROR_FILE_NOT_FOUND
86
+ # define SIGAR_EACCES ERROR_ACCESS_DENIED
87
+ # define SIGAR_ENXIO ERROR_BAD_DRIVER_LEVEL
88
+ #else
89
+ # define SIGAR_ENOENT ENOENT
90
+ # define SIGAR_EACCES EACCES
91
+ # define SIGAR_ENXIO ENXIO
92
+ #endif
93
+
94
+ #ifdef WIN32
95
+ # define SIGAR_DECLARE(type) \
96
+ __declspec(dllexport) type __stdcall
97
+ #else
98
+ # define SIGAR_DECLARE(type) type
99
+ #endif
100
+
101
+ #if defined(PATH_MAX)
102
+ # define SIGAR_PATH_MAX PATH_MAX
103
+ #elif defined(MAXPATHLEN)
104
+ # define SIGAR_PATH_MAX MAXPATHLEN
105
+ #else
106
+ # define SIGAR_PATH_MAX 4096
107
+ #endif
108
+
109
+ #ifdef WIN32
110
+ typedef sigar_uint64_t sigar_pid_t;
111
+ typedef unsigned long sigar_uid_t;
112
+ typedef unsigned long sigar_gid_t;
113
+ #else
114
+ #include <sys/types.h>
115
+ typedef pid_t sigar_pid_t;
116
+ typedef uid_t sigar_uid_t;
117
+ typedef gid_t sigar_gid_t;
118
+ #endif
119
+
120
+ typedef struct sigar_t sigar_t;
121
+
122
+ SIGAR_DECLARE(int) sigar_open(sigar_t **sigar);
123
+
124
+ SIGAR_DECLARE(int) sigar_close(sigar_t *sigar);
125
+
126
+ SIGAR_DECLARE(sigar_pid_t) sigar_pid_get(sigar_t *sigar);
127
+
128
+ SIGAR_DECLARE(int) sigar_proc_kill(sigar_pid_t pid, int signum);
129
+
130
+ SIGAR_DECLARE(int) sigar_signum_get(char *name);
131
+
132
+ SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err);
133
+
134
+ /* system memory info */
135
+
136
+ typedef struct {
137
+ sigar_uint64_t
138
+ ram,
139
+ total,
140
+ used,
141
+ free,
142
+ actual_used,
143
+ actual_free;
144
+ double used_percent;
145
+ double free_percent;
146
+ } sigar_mem_t;
147
+
148
+ SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem);
149
+
150
+ typedef struct {
151
+ sigar_uint64_t
152
+ total,
153
+ used,
154
+ free,
155
+ page_in,
156
+ page_out;
157
+ } sigar_swap_t;
158
+
159
+ SIGAR_DECLARE(int) sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap);
160
+
161
+ typedef struct {
162
+ sigar_uint64_t
163
+ user,
164
+ sys,
165
+ nice,
166
+ idle,
167
+ wait,
168
+ irq,
169
+ soft_irq,
170
+ stolen,
171
+ total;
172
+ } sigar_cpu_t;
173
+
174
+ SIGAR_DECLARE(int) sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu);
175
+
176
+ typedef struct {
177
+ unsigned long number;
178
+ unsigned long size;
179
+ sigar_cpu_t *data;
180
+ } sigar_cpu_list_t;
181
+
182
+ SIGAR_DECLARE(int) sigar_cpu_list_get(sigar_t *sigar, sigar_cpu_list_t *cpulist);
183
+
184
+ SIGAR_DECLARE(int) sigar_cpu_list_destroy(sigar_t *sigar,
185
+ sigar_cpu_list_t *cpulist);
186
+
187
+ typedef struct {
188
+ char vendor[128];
189
+ char model[128];
190
+ int mhz;
191
+ sigar_uint64_t cache_size;
192
+ int total_sockets;
193
+ int total_cores;
194
+ int cores_per_socket;
195
+ } sigar_cpu_info_t;
196
+
197
+ typedef struct {
198
+ unsigned long number;
199
+ unsigned long size;
200
+ sigar_cpu_info_t *data;
201
+ } sigar_cpu_info_list_t;
202
+
203
+ SIGAR_DECLARE(int)
204
+ sigar_cpu_info_list_get(sigar_t *sigar,
205
+ sigar_cpu_info_list_t *cpu_infos);
206
+
207
+ SIGAR_DECLARE(int)
208
+ sigar_cpu_info_list_destroy(sigar_t *sigar,
209
+ sigar_cpu_info_list_t *cpu_infos);
210
+
211
+ typedef struct {
212
+ double uptime;
213
+ } sigar_uptime_t;
214
+
215
+ SIGAR_DECLARE(int) sigar_uptime_get(sigar_t *sigar,
216
+ sigar_uptime_t *uptime);
217
+
218
+ typedef struct {
219
+ double loadavg[3];
220
+ } sigar_loadavg_t;
221
+
222
+ SIGAR_DECLARE(int) sigar_loadavg_get(sigar_t *sigar,
223
+ sigar_loadavg_t *loadavg);
224
+
225
+ typedef struct {
226
+ unsigned long number;
227
+ unsigned long size;
228
+ sigar_pid_t *data;
229
+ } sigar_proc_list_t;
230
+
231
+ typedef struct {
232
+ /* RLIMIT_CPU */
233
+ sigar_uint64_t cpu_cur, cpu_max;
234
+ /* RLIMIT_FSIZE */
235
+ sigar_uint64_t file_size_cur, file_size_max;
236
+ /* PIPE_BUF */
237
+ sigar_uint64_t pipe_size_cur, pipe_size_max;
238
+ /* RLIMIT_DATA */
239
+ sigar_uint64_t data_cur, data_max;
240
+ /* RLIMIT_STACK */
241
+ sigar_uint64_t stack_cur, stack_max;
242
+ /* RLIMIT_CORE */
243
+ sigar_uint64_t core_cur, core_max;
244
+ /* RLIMIT_RSS */
245
+ sigar_uint64_t memory_cur, memory_max;
246
+ /* RLIMIT_NPROC */
247
+ sigar_uint64_t processes_cur, processes_max;
248
+ /* RLIMIT_NOFILE */
249
+ sigar_uint64_t open_files_cur, open_files_max;
250
+ /* RLIMIT_AS */
251
+ sigar_uint64_t virtual_memory_cur, virtual_memory_max;
252
+ } sigar_resource_limit_t;
253
+
254
+ SIGAR_DECLARE(int) sigar_resource_limit_get(sigar_t *sigar,
255
+ sigar_resource_limit_t *rlimit);
256
+
257
+ SIGAR_DECLARE(int) sigar_proc_list_get(sigar_t *sigar,
258
+ sigar_proc_list_t *proclist);
259
+
260
+ SIGAR_DECLARE(int) sigar_proc_list_destroy(sigar_t *sigar,
261
+ sigar_proc_list_t *proclist);
262
+
263
+ typedef struct {
264
+ sigar_uint64_t total;
265
+ sigar_uint64_t sleeping;
266
+ sigar_uint64_t running;
267
+ sigar_uint64_t zombie;
268
+ sigar_uint64_t stopped;
269
+ sigar_uint64_t idle;
270
+ sigar_uint64_t threads;
271
+ } sigar_proc_stat_t;
272
+
273
+ SIGAR_DECLARE(int) sigar_proc_stat_get(sigar_t *sigar,
274
+ sigar_proc_stat_t *procstat);
275
+
276
+ typedef struct {
277
+ sigar_uint64_t
278
+ size,
279
+ resident,
280
+ share,
281
+ minor_faults,
282
+ major_faults,
283
+ page_faults;
284
+ } sigar_proc_mem_t;
285
+
286
+ SIGAR_DECLARE(int) sigar_proc_mem_get(sigar_t *sigar, sigar_pid_t pid,
287
+ sigar_proc_mem_t *procmem);
288
+
289
+ typedef struct {
290
+ sigar_uid_t uid;
291
+ sigar_gid_t gid;
292
+ sigar_uid_t euid;
293
+ sigar_gid_t egid;
294
+ } sigar_proc_cred_t;
295
+
296
+ SIGAR_DECLARE(int) sigar_proc_cred_get(sigar_t *sigar, sigar_pid_t pid,
297
+ sigar_proc_cred_t *proccred);
298
+
299
+ #define SIGAR_CRED_NAME_MAX 512
300
+
301
+ typedef struct {
302
+ char user[SIGAR_CRED_NAME_MAX];
303
+ char group[SIGAR_CRED_NAME_MAX];
304
+ } sigar_proc_cred_name_t;
305
+
306
+ SIGAR_DECLARE(int)
307
+ sigar_proc_cred_name_get(sigar_t *sigar, sigar_pid_t pid,
308
+ sigar_proc_cred_name_t *proccredname);
309
+
310
+ typedef struct {
311
+ sigar_uint64_t
312
+ start_time,
313
+ user,
314
+ sys,
315
+ total;
316
+ } sigar_proc_time_t;
317
+
318
+ SIGAR_DECLARE(int) sigar_proc_time_get(sigar_t *sigar, sigar_pid_t pid,
319
+ sigar_proc_time_t *proctime);
320
+
321
+ typedef struct {
322
+ /* must match sigar_proc_time_t fields */
323
+ sigar_uint64_t
324
+ start_time,
325
+ user,
326
+ sys,
327
+ total;
328
+ sigar_uint64_t last_time;
329
+ double percent;
330
+ } sigar_proc_cpu_t;
331
+
332
+ SIGAR_DECLARE(int) sigar_proc_cpu_get(sigar_t *sigar, sigar_pid_t pid,
333
+ sigar_proc_cpu_t *proccpu);
334
+
335
+ #define SIGAR_PROC_STATE_SLEEP 'S'
336
+ #define SIGAR_PROC_STATE_RUN 'R'
337
+ #define SIGAR_PROC_STATE_STOP 'T'
338
+ #define SIGAR_PROC_STATE_ZOMBIE 'Z'
339
+ #define SIGAR_PROC_STATE_IDLE 'D'
340
+
341
+ #define SIGAR_PROC_NAME_LEN 128
342
+
343
+ typedef struct {
344
+ char name[SIGAR_PROC_NAME_LEN];
345
+ char state;
346
+ sigar_pid_t ppid;
347
+ int tty;
348
+ int priority;
349
+ int nice;
350
+ int processor;
351
+ sigar_uint64_t threads;
352
+ } sigar_proc_state_t;
353
+
354
+ SIGAR_DECLARE(int) sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
355
+ sigar_proc_state_t *procstate);
356
+
357
+ typedef struct {
358
+ unsigned long number;
359
+ unsigned long size;
360
+ char **data;
361
+ } sigar_proc_args_t;
362
+
363
+ SIGAR_DECLARE(int) sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
364
+ sigar_proc_args_t *procargs);
365
+
366
+ SIGAR_DECLARE(int) sigar_proc_args_destroy(sigar_t *sigar,
367
+ sigar_proc_args_t *procargs);
368
+
369
+ typedef struct {
370
+ void *data; /* user data */
371
+
372
+ enum {
373
+ SIGAR_PROC_ENV_ALL,
374
+ SIGAR_PROC_ENV_KEY
375
+ } type;
376
+
377
+ /* used for SIGAR_PROC_ENV_KEY */
378
+ const char *key;
379
+ int klen;
380
+
381
+ int (*env_getter)(void *, const char *, int, char *, int);
382
+ } sigar_proc_env_t;
383
+
384
+ SIGAR_DECLARE(int) sigar_proc_env_get(sigar_t *sigar, sigar_pid_t pid,
385
+ sigar_proc_env_t *procenv);
386
+
387
+ typedef struct {
388
+ sigar_uint64_t total;
389
+ /* XXX - which are files, sockets, etc. */
390
+ } sigar_proc_fd_t;
391
+
392
+ SIGAR_DECLARE(int) sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
393
+ sigar_proc_fd_t *procfd);
394
+
395
+ typedef struct {
396
+ char name[SIGAR_PATH_MAX+1];
397
+ char cwd[SIGAR_PATH_MAX+1];
398
+ char root[SIGAR_PATH_MAX+1];
399
+ } sigar_proc_exe_t;
400
+
401
+ SIGAR_DECLARE(int) sigar_proc_exe_get(sigar_t *sigar, sigar_pid_t pid,
402
+ sigar_proc_exe_t *procexe);
403
+
404
+ typedef struct {
405
+ void *data; /* user data */
406
+
407
+ int (*module_getter)(void *, char *, int);
408
+ } sigar_proc_modules_t;
409
+
410
+ SIGAR_DECLARE(int) sigar_proc_modules_get(sigar_t *sigar, sigar_pid_t pid,
411
+ sigar_proc_modules_t *procmods);
412
+
413
+ typedef struct {
414
+ sigar_uint64_t user;
415
+ sigar_uint64_t sys;
416
+ sigar_uint64_t total;
417
+ } sigar_thread_cpu_t;
418
+
419
+ SIGAR_DECLARE(int) sigar_thread_cpu_get(sigar_t *sigar,
420
+ sigar_uint64_t id,
421
+ sigar_thread_cpu_t *cpu);
422
+
423
+ typedef enum {
424
+ SIGAR_FSTYPE_UNKNOWN,
425
+ SIGAR_FSTYPE_NONE,
426
+ SIGAR_FSTYPE_LOCAL_DISK,
427
+ SIGAR_FSTYPE_NETWORK,
428
+ SIGAR_FSTYPE_RAM_DISK,
429
+ SIGAR_FSTYPE_CDROM,
430
+ SIGAR_FSTYPE_SWAP,
431
+ SIGAR_FSTYPE_MAX
432
+ } sigar_file_system_type_e;
433
+
434
+ #define SIGAR_FS_NAME_LEN SIGAR_PATH_MAX
435
+ #define SIGAR_FS_INFO_LEN 256
436
+
437
+ typedef struct {
438
+ char dir_name[SIGAR_FS_NAME_LEN];
439
+ char dev_name[SIGAR_FS_NAME_LEN];
440
+ char type_name[SIGAR_FS_INFO_LEN]; /* e.g. "local" */
441
+ char sys_type_name[SIGAR_FS_INFO_LEN]; /* e.g. "ext3" */
442
+ char options[SIGAR_FS_INFO_LEN];
443
+ sigar_file_system_type_e type;
444
+ unsigned long flags;
445
+ } sigar_file_system_t;
446
+
447
+ typedef struct {
448
+ unsigned long number;
449
+ unsigned long size;
450
+ sigar_file_system_t *data;
451
+ } sigar_file_system_list_t;
452
+
453
+ SIGAR_DECLARE(int)
454
+ sigar_file_system_list_get(sigar_t *sigar,
455
+ sigar_file_system_list_t *fslist);
456
+
457
+ SIGAR_DECLARE(int)
458
+ sigar_file_system_list_destroy(sigar_t *sigar,
459
+ sigar_file_system_list_t *fslist);
460
+
461
+ typedef struct {
462
+ sigar_uint64_t reads;
463
+ sigar_uint64_t writes;
464
+ sigar_uint64_t write_bytes;
465
+ sigar_uint64_t read_bytes;
466
+ sigar_uint64_t rtime;
467
+ sigar_uint64_t wtime;
468
+ sigar_uint64_t qtime;
469
+ sigar_uint64_t time;
470
+ sigar_uint64_t snaptime;
471
+ double service_time;
472
+ double queue;
473
+ } sigar_disk_usage_t;
474
+
475
+ /* XXX for sigar_file_system_usage_t compat */
476
+ #define disk_reads disk.reads
477
+ #define disk_writes disk.writes
478
+ #define disk_write_bytes disk.write_bytes
479
+ #define disk_read_bytes disk.read_bytes
480
+ #define disk_queue disk.queue
481
+ #define disk_service_time disk.service_time
482
+
483
+ typedef struct {
484
+ sigar_disk_usage_t disk;
485
+ double use_percent;
486
+ sigar_uint64_t total;
487
+ sigar_uint64_t free;
488
+ sigar_uint64_t used;
489
+ sigar_uint64_t avail;
490
+ sigar_uint64_t files;
491
+ sigar_uint64_t free_files;
492
+ } sigar_file_system_usage_t;
493
+
494
+ #undef SIGAR_DISK_USAGE_T
495
+
496
+ SIGAR_DECLARE(int)
497
+ sigar_file_system_usage_get(sigar_t *sigar,
498
+ const char *dirname,
499
+ sigar_file_system_usage_t *fsusage);
500
+
501
+ SIGAR_DECLARE(int) sigar_disk_usage_get(sigar_t *sigar,
502
+ const char *name,
503
+ sigar_disk_usage_t *disk);
504
+
505
+ SIGAR_DECLARE(int)
506
+ sigar_file_system_ping(sigar_t *sigar,
507
+ sigar_file_system_t *fs);
508
+
509
+ typedef struct {
510
+ enum {
511
+ SIGAR_AF_UNSPEC,
512
+ SIGAR_AF_INET,
513
+ SIGAR_AF_INET6,
514
+ SIGAR_AF_LINK
515
+ } family;
516
+ union {
517
+ sigar_uint32_t in;
518
+ sigar_uint32_t in6[4];
519
+ unsigned char mac[8];
520
+ } addr;
521
+ } sigar_net_address_t;
522
+
523
+ #define SIGAR_INET6_ADDRSTRLEN 46
524
+
525
+ #define SIGAR_MAXDOMAINNAMELEN 256
526
+ #define SIGAR_MAXHOSTNAMELEN 256
527
+
528
+ typedef struct {
529
+ char default_gateway[SIGAR_INET6_ADDRSTRLEN];
530
+ char host_name[SIGAR_MAXHOSTNAMELEN];
531
+ char domain_name[SIGAR_MAXDOMAINNAMELEN];
532
+ char primary_dns[SIGAR_INET6_ADDRSTRLEN];
533
+ char secondary_dns[SIGAR_INET6_ADDRSTRLEN];
534
+ } sigar_net_info_t;
535
+
536
+ SIGAR_DECLARE(int)
537
+ sigar_net_info_get(sigar_t *sigar,
538
+ sigar_net_info_t *netinfo);
539
+
540
+ #define SIGAR_RTF_UP 0x1
541
+ #define SIGAR_RTF_GATEWAY 0x2
542
+ #define SIGAR_RTF_HOST 0x4
543
+
544
+ typedef struct {
545
+ sigar_net_address_t destination;
546
+ sigar_net_address_t gateway;
547
+ sigar_net_address_t mask;
548
+ sigar_uint64_t
549
+ flags,
550
+ refcnt,
551
+ use,
552
+ metric,
553
+ mtu,
554
+ window,
555
+ irtt;
556
+ char ifname[16];
557
+ } sigar_net_route_t;
558
+
559
+ typedef struct {
560
+ unsigned long number;
561
+ unsigned long size;
562
+ sigar_net_route_t *data;
563
+ } sigar_net_route_list_t;
564
+
565
+ SIGAR_DECLARE(int) sigar_net_route_list_get(sigar_t *sigar,
566
+ sigar_net_route_list_t *routelist);
567
+
568
+ SIGAR_DECLARE(int) sigar_net_route_list_destroy(sigar_t *sigar,
569
+ sigar_net_route_list_t *routelist);
570
+
571
+ /*
572
+ * platforms define most of these "standard" flags,
573
+ * but of course, with different values in some cases.
574
+ */
575
+ #define SIGAR_IFF_UP 0x1
576
+ #define SIGAR_IFF_BROADCAST 0x2
577
+ #define SIGAR_IFF_DEBUG 0x4
578
+ #define SIGAR_IFF_LOOPBACK 0x8
579
+ #define SIGAR_IFF_POINTOPOINT 0x10
580
+ #define SIGAR_IFF_NOTRAILERS 0x20
581
+ #define SIGAR_IFF_RUNNING 0x40
582
+ #define SIGAR_IFF_NOARP 0x80
583
+ #define SIGAR_IFF_PROMISC 0x100
584
+ #define SIGAR_IFF_ALLMULTI 0x200
585
+ #define SIGAR_IFF_MULTICAST 0x800
586
+ #define SIGAR_IFF_SLAVE 0x1000
587
+
588
+ #define SIGAR_NULL_HWADDR "00:00:00:00:00:00"
589
+
590
+ typedef struct {
591
+ char name[16];
592
+ char type[64];
593
+ char description[256];
594
+ sigar_net_address_t hwaddr;
595
+ sigar_net_address_t address;
596
+ sigar_net_address_t destination;
597
+ sigar_net_address_t broadcast;
598
+ sigar_net_address_t netmask;
599
+ sigar_uint64_t
600
+ flags,
601
+ mtu,
602
+ metric;
603
+ } sigar_net_interface_config_t;
604
+
605
+ SIGAR_DECLARE(int)
606
+ sigar_net_interface_config_get(sigar_t *sigar,
607
+ const char *name,
608
+ sigar_net_interface_config_t *ifconfig);
609
+
610
+ SIGAR_DECLARE(int)
611
+ sigar_net_interface_config_primary_get(sigar_t *sigar,
612
+ sigar_net_interface_config_t *ifconfig);
613
+
614
+ typedef struct {
615
+ sigar_uint64_t
616
+ /* received */
617
+ rx_packets,
618
+ rx_bytes,
619
+ rx_errors,
620
+ rx_dropped,
621
+ rx_overruns,
622
+ rx_frame,
623
+ /* transmitted */
624
+ tx_packets,
625
+ tx_bytes,
626
+ tx_errors,
627
+ tx_dropped,
628
+ tx_overruns,
629
+ tx_collisions,
630
+ tx_carrier,
631
+ speed;
632
+ } sigar_net_interface_stat_t;
633
+
634
+ SIGAR_DECLARE(int)
635
+ sigar_net_interface_stat_get(sigar_t *sigar,
636
+ const char *name,
637
+ sigar_net_interface_stat_t *ifstat);
638
+
639
+ typedef struct {
640
+ unsigned long number;
641
+ unsigned long size;
642
+ char **data;
643
+ } sigar_net_interface_list_t;
644
+
645
+ SIGAR_DECLARE(int)
646
+ sigar_net_interface_list_get(sigar_t *sigar,
647
+ sigar_net_interface_list_t *iflist);
648
+
649
+ SIGAR_DECLARE(int)
650
+ sigar_net_interface_list_destroy(sigar_t *sigar,
651
+ sigar_net_interface_list_t *iflist);
652
+
653
+ #define SIGAR_NETCONN_CLIENT 0x01
654
+ #define SIGAR_NETCONN_SERVER 0x02
655
+
656
+ #define SIGAR_NETCONN_TCP 0x10
657
+ #define SIGAR_NETCONN_UDP 0x20
658
+ #define SIGAR_NETCONN_RAW 0x40
659
+ #define SIGAR_NETCONN_UNIX 0x80
660
+
661
+ enum {
662
+ SIGAR_TCP_ESTABLISHED = 1,
663
+ SIGAR_TCP_SYN_SENT,
664
+ SIGAR_TCP_SYN_RECV,
665
+ SIGAR_TCP_FIN_WAIT1,
666
+ SIGAR_TCP_FIN_WAIT2,
667
+ SIGAR_TCP_TIME_WAIT,
668
+ SIGAR_TCP_CLOSE,
669
+ SIGAR_TCP_CLOSE_WAIT,
670
+ SIGAR_TCP_LAST_ACK,
671
+ SIGAR_TCP_LISTEN,
672
+ SIGAR_TCP_CLOSING,
673
+ SIGAR_TCP_IDLE,
674
+ SIGAR_TCP_BOUND,
675
+ SIGAR_TCP_UNKNOWN
676
+ };
677
+
678
+ typedef struct {
679
+ unsigned long local_port;
680
+ sigar_net_address_t local_address;
681
+ unsigned long remote_port;
682
+ sigar_net_address_t remote_address;
683
+ sigar_uid_t uid;
684
+ unsigned long inode;
685
+ int type;
686
+ int state;
687
+ unsigned long send_queue;
688
+ unsigned long receive_queue;
689
+ } sigar_net_connection_t;
690
+
691
+ typedef struct {
692
+ unsigned long number;
693
+ unsigned long size;
694
+ sigar_net_connection_t *data;
695
+ } sigar_net_connection_list_t;
696
+
697
+ SIGAR_DECLARE(int)
698
+ sigar_net_connection_list_get(sigar_t *sigar,
699
+ sigar_net_connection_list_t *connlist,
700
+ int flags);
701
+
702
+ SIGAR_DECLARE(int)
703
+ sigar_net_connection_list_destroy(sigar_t *sigar,
704
+ sigar_net_connection_list_t *connlist);
705
+
706
+ typedef struct sigar_net_connection_walker_t sigar_net_connection_walker_t;
707
+
708
+ /* alternative to sigar_net_connection_list_get */
709
+ struct sigar_net_connection_walker_t {
710
+ sigar_t *sigar;
711
+ int flags;
712
+ void *data; /* user data */
713
+ int (*add_connection)(sigar_net_connection_walker_t *walker,
714
+ sigar_net_connection_t *connection);
715
+ };
716
+
717
+ SIGAR_DECLARE(int)
718
+ sigar_net_connection_walk(sigar_net_connection_walker_t *walker);
719
+
720
+ typedef struct {
721
+ int tcp_states[SIGAR_TCP_UNKNOWN];
722
+ sigar_uint32_t tcp_inbound_total;
723
+ sigar_uint32_t tcp_outbound_total;
724
+ sigar_uint32_t all_inbound_total;
725
+ sigar_uint32_t all_outbound_total;
726
+ } sigar_net_stat_t;
727
+
728
+ SIGAR_DECLARE(int)
729
+ sigar_net_stat_get(sigar_t *sigar,
730
+ sigar_net_stat_t *netstat,
731
+ int flags);
732
+
733
+ SIGAR_DECLARE(int)
734
+ sigar_net_stat_port_get(sigar_t *sigar,
735
+ sigar_net_stat_t *netstat,
736
+ int flags,
737
+ sigar_net_address_t *address,
738
+ unsigned long port);
739
+
740
+ /* TCP-MIB */
741
+ typedef struct {
742
+ sigar_uint64_t active_opens;
743
+ sigar_uint64_t passive_opens;
744
+ sigar_uint64_t attempt_fails;
745
+ sigar_uint64_t estab_resets;
746
+ sigar_uint64_t curr_estab;
747
+ sigar_uint64_t in_segs;
748
+ sigar_uint64_t out_segs;
749
+ sigar_uint64_t retrans_segs;
750
+ sigar_uint64_t in_errs;
751
+ sigar_uint64_t out_rsts;
752
+ } sigar_tcp_t;
753
+
754
+ SIGAR_DECLARE(int)
755
+ sigar_tcp_get(sigar_t *sigar,
756
+ sigar_tcp_t *tcp);
757
+
758
+ typedef struct {
759
+ sigar_uint64_t null;
760
+ sigar_uint64_t getattr;
761
+ sigar_uint64_t setattr;
762
+ sigar_uint64_t root;
763
+ sigar_uint64_t lookup;
764
+ sigar_uint64_t readlink;
765
+ sigar_uint64_t read;
766
+ sigar_uint64_t writecache;
767
+ sigar_uint64_t write;
768
+ sigar_uint64_t create;
769
+ sigar_uint64_t remove;
770
+ sigar_uint64_t rename;
771
+ sigar_uint64_t link;
772
+ sigar_uint64_t symlink;
773
+ sigar_uint64_t mkdir;
774
+ sigar_uint64_t rmdir;
775
+ sigar_uint64_t readdir;
776
+ sigar_uint64_t fsstat;
777
+ } sigar_nfs_v2_t;
778
+
779
+ typedef sigar_nfs_v2_t sigar_nfs_client_v2_t;
780
+ typedef sigar_nfs_v2_t sigar_nfs_server_v2_t;
781
+
782
+ SIGAR_DECLARE(int)
783
+ sigar_nfs_client_v2_get(sigar_t *sigar,
784
+ sigar_nfs_client_v2_t *nfs);
785
+
786
+ SIGAR_DECLARE(int)
787
+ sigar_nfs_server_v2_get(sigar_t *sigar,
788
+ sigar_nfs_server_v2_t *nfs);
789
+
790
+ typedef struct {
791
+ sigar_uint64_t null;
792
+ sigar_uint64_t getattr;
793
+ sigar_uint64_t setattr;
794
+ sigar_uint64_t lookup;
795
+ sigar_uint64_t access;
796
+ sigar_uint64_t readlink;
797
+ sigar_uint64_t read;
798
+ sigar_uint64_t write;
799
+ sigar_uint64_t create;
800
+ sigar_uint64_t mkdir;
801
+ sigar_uint64_t symlink;
802
+ sigar_uint64_t mknod;
803
+ sigar_uint64_t remove;
804
+ sigar_uint64_t rmdir;
805
+ sigar_uint64_t rename;
806
+ sigar_uint64_t link;
807
+ sigar_uint64_t readdir;
808
+ sigar_uint64_t readdirplus;
809
+ sigar_uint64_t fsstat;
810
+ sigar_uint64_t fsinfo;
811
+ sigar_uint64_t pathconf;
812
+ sigar_uint64_t commit;
813
+ } sigar_nfs_v3_t;
814
+
815
+ typedef sigar_nfs_v3_t sigar_nfs_client_v3_t;
816
+ typedef sigar_nfs_v3_t sigar_nfs_server_v3_t;
817
+
818
+ SIGAR_DECLARE(int)
819
+ sigar_nfs_client_v3_get(sigar_t *sigar,
820
+ sigar_nfs_client_v3_t *nfs);
821
+
822
+ SIGAR_DECLARE(int)
823
+ sigar_nfs_server_v3_get(sigar_t *sigar,
824
+ sigar_nfs_server_v3_t *nfs);
825
+
826
+ SIGAR_DECLARE(int)
827
+ sigar_net_listen_address_get(sigar_t *sigar,
828
+ unsigned long port,
829
+ sigar_net_address_t *address);
830
+
831
+ typedef struct {
832
+ char user[32];
833
+ char device[32];
834
+ char host[256];
835
+ sigar_uint64_t time;
836
+ } sigar_who_t;
837
+
838
+ typedef struct {
839
+ unsigned long number;
840
+ unsigned long size;
841
+ sigar_who_t *data;
842
+ } sigar_who_list_t;
843
+
844
+ SIGAR_DECLARE(int) sigar_who_list_get(sigar_t *sigar,
845
+ sigar_who_list_t *wholist);
846
+
847
+ SIGAR_DECLARE(int) sigar_who_list_destroy(sigar_t *sigar,
848
+ sigar_who_list_t *wholist);
849
+
850
+ SIGAR_DECLARE(int) sigar_proc_port_get(sigar_t *sigar,
851
+ int protocol, unsigned long port,
852
+ sigar_pid_t *pid);
853
+
854
+ typedef struct {
855
+ const char *build_date;
856
+ const char *scm_revision;
857
+ const char *version;
858
+ const char *archname;
859
+ const char *archlib;
860
+ const char *binname;
861
+ const char *description;
862
+ int major, minor, maint, build;
863
+ } sigar_version_t;
864
+
865
+ SIGAR_DECLARE(sigar_version_t *) sigar_version_get(void);
866
+
867
+ #define SIGAR_SYS_INFO_LEN SIGAR_MAXHOSTNAMELEN /* more than enough */
868
+
869
+ typedef struct {
870
+ char name[SIGAR_SYS_INFO_LEN]; /* canonicalized sysname */
871
+ char version[SIGAR_SYS_INFO_LEN]; /* utsname.release */
872
+ char arch[SIGAR_SYS_INFO_LEN];
873
+ char machine[SIGAR_SYS_INFO_LEN];
874
+ char description[SIGAR_SYS_INFO_LEN];
875
+ char patch_level[SIGAR_SYS_INFO_LEN];
876
+ char vendor[SIGAR_SYS_INFO_LEN];
877
+ char vendor_version[SIGAR_SYS_INFO_LEN];
878
+ char vendor_name[SIGAR_SYS_INFO_LEN]; /* utsname.sysname */
879
+ char vendor_code_name[SIGAR_SYS_INFO_LEN];
880
+ } sigar_sys_info_t;
881
+
882
+ SIGAR_DECLARE(int) sigar_sys_info_get(sigar_t *sigar, sigar_sys_info_t *sysinfo);
883
+
884
+ #define SIGAR_FQDN_LEN 512
885
+
886
+ SIGAR_DECLARE(int) sigar_fqdn_get(sigar_t *sigar, char *name, int namelen);
887
+
888
+ SIGAR_DECLARE(int) sigar_rpc_ping(char *hostname,
889
+ int protocol,
890
+ unsigned long program,
891
+ unsigned long version);
892
+
893
+ SIGAR_DECLARE(char *) sigar_rpc_strerror(int err);
894
+
895
+ SIGAR_DECLARE(char *) sigar_password_get(const char *prompt);
896
+
897
+ #ifdef __cplusplus
898
+ }
899
+ #endif
900
+
901
+ #endif