diff options
Diffstat (limited to 'plugins/check_snmp.c')
-rw-r--r-- | plugins/check_snmp.c | 211 |
1 files changed, 106 insertions, 105 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index 56a586a..90a0402 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
@@ -55,8 +55,6 @@ const char *email = "devel@monitoring-plugins.org"; | |||
55 | #define CRIT_STRING 2 | 55 | #define CRIT_STRING 2 |
56 | #define CRIT_REGEX 4 | 56 | #define CRIT_REGEX 4 |
57 | #define WARN_PRESENT 8 | 57 | #define WARN_PRESENT 8 |
58 | #define WARN_STRING 16 | ||
59 | #define WARN_REGEX 32 | ||
60 | 58 | ||
61 | #define OID_COUNT_STEP 8 | 59 | #define OID_COUNT_STEP 8 |
62 | 60 | ||
@@ -86,82 +84,82 @@ const char *email = "devel@monitoring-plugins.org"; | |||
86 | 84 | ||
87 | 85 | ||
88 | 86 | ||
89 | int process_arguments (int, char **); | 87 | static int process_arguments (int, char **); |
90 | int validate_arguments (void); | 88 | static int validate_arguments (void); |
91 | char *thisarg (char *str); | 89 | static char *thisarg (char *str); |
92 | char *nextarg (char *str); | 90 | static char *nextarg (char *str); |
93 | void print_usage (void); | 91 | void print_usage (void); |
94 | void print_help (void); | 92 | static void print_help (void); |
95 | char *multiply (char *str); | 93 | static char *multiply (char *str); |
96 | 94 | ||
97 | #include "regex.h" | 95 | #include "regex.h" |
98 | char regex_expect[MAX_INPUT_BUFFER] = ""; | 96 | static char regex_expect[MAX_INPUT_BUFFER] = ""; |
99 | regex_t preg; | 97 | static regex_t preg; |
100 | regmatch_t pmatch[10]; | 98 | static regmatch_t pmatch[10]; |
101 | char errbuf[MAX_INPUT_BUFFER] = ""; | 99 | static char errbuf[MAX_INPUT_BUFFER] = ""; |
102 | char perfstr[MAX_INPUT_BUFFER] = "| "; | 100 | static char perfstr[MAX_INPUT_BUFFER] = "| "; |
103 | int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; | 101 | static int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; |
104 | int eflags = 0; | 102 | static int eflags = 0; |
105 | int errcode, excode; | 103 | static int errcode, excode; |
106 | 104 | ||
107 | char *server_address = NULL; | 105 | static char *server_address = NULL; |
108 | char *community = NULL; | 106 | static char *community = NULL; |
109 | char **contextargs = NULL; | 107 | static char **contextargs = NULL; |
110 | char *context = NULL; | 108 | static char *context = NULL; |
111 | char **authpriv = NULL; | 109 | static char **authpriv = NULL; |
112 | char *proto = NULL; | 110 | static char *proto = NULL; |
113 | char *seclevel = NULL; | 111 | static char *seclevel = NULL; |
114 | char *secname = NULL; | 112 | static char *secname = NULL; |
115 | char *authproto = NULL; | 113 | static char *authproto = NULL; |
116 | char *privproto = NULL; | 114 | static char *privproto = NULL; |
117 | char *authpasswd = NULL; | 115 | static char *authpasswd = NULL; |
118 | char *privpasswd = NULL; | 116 | static char *privpasswd = NULL; |
119 | int nulloid = STATE_UNKNOWN; | 117 | static int nulloid = STATE_UNKNOWN; |
120 | char **oids = NULL; | 118 | static char **oids = NULL; |
121 | size_t oids_size = 0; | 119 | static size_t oids_size = 0; |
122 | char *label; | 120 | static char *label; |
123 | char *units; | 121 | static char *units; |
124 | char *port; | 122 | static char *port; |
125 | char *snmpcmd; | 123 | static char *snmpcmd; |
126 | char string_value[MAX_INPUT_BUFFER] = ""; | 124 | static char string_value[MAX_INPUT_BUFFER] = ""; |
127 | int invert_search=0; | 125 | static int invert_search=0; |
128 | char **labels = NULL; | 126 | static char **labels = NULL; |
129 | char **unitv = NULL; | 127 | static char **unitv = NULL; |
130 | size_t nlabels = 0; | 128 | static size_t nlabels = 0; |
131 | size_t labels_size = OID_COUNT_STEP; | 129 | static size_t labels_size = OID_COUNT_STEP; |
132 | size_t nunits = 0; | 130 | static size_t nunits = 0; |
133 | size_t unitv_size = OID_COUNT_STEP; | 131 | static size_t unitv_size = OID_COUNT_STEP; |
134 | int numoids = 0; | 132 | static size_t numoids = 0; |
135 | int numauthpriv = 0; | 133 | static int numauthpriv = 0; |
136 | int numcontext = 0; | 134 | static int numcontext = 0; |
137 | int verbose = 0; | 135 | static int verbose = 0; |
138 | int usesnmpgetnext = FALSE; | 136 | static bool usesnmpgetnext = false; |
139 | char *warning_thresholds = NULL; | 137 | static char *warning_thresholds = NULL; |
140 | char *critical_thresholds = NULL; | 138 | static char *critical_thresholds = NULL; |
141 | thresholds **thlds; | 139 | static thresholds **thlds; |
142 | size_t thlds_size = OID_COUNT_STEP; | 140 | static size_t thlds_size = OID_COUNT_STEP; |
143 | double *response_value; | 141 | static double *response_value; |
144 | size_t response_size = OID_COUNT_STEP; | 142 | static size_t response_size = OID_COUNT_STEP; |
145 | int retries = 0; | 143 | static int retries = 0; |
146 | int *eval_method; | 144 | static int *eval_method; |
147 | size_t eval_size = OID_COUNT_STEP; | 145 | static size_t eval_size = OID_COUNT_STEP; |
148 | char *delimiter; | 146 | static char *delimiter; |
149 | char *output_delim; | 147 | static char *output_delim; |
150 | char *miblist = NULL; | 148 | static char *miblist = NULL; |
151 | int needmibs = FALSE; | 149 | static bool needmibs = false; |
152 | int calculate_rate = 0; | 150 | static int calculate_rate = 0; |
153 | double offset = 0.0; | 151 | static double offset = 0.0; |
154 | int rate_multiplier = 1; | 152 | static int rate_multiplier = 1; |
155 | state_data *previous_state; | 153 | static state_data *previous_state; |
156 | double *previous_value; | 154 | static double *previous_value; |
157 | size_t previous_size = OID_COUNT_STEP; | 155 | static size_t previous_size = OID_COUNT_STEP; |
158 | int perf_labels = 1; | 156 | static int perf_labels = 1; |
159 | char* ip_version = ""; | 157 | static char* ip_version = ""; |
160 | double multiplier = 1.0; | 158 | static double multiplier = 1.0; |
161 | char *fmtstr = ""; | 159 | static char *fmtstr = ""; |
162 | bool fmtstr_set = false; | 160 | static bool fmtstr_set = false; |
163 | char buffer[DEFAULT_BUFFER_SIZE]; | 161 | static char buffer[DEFAULT_BUFFER_SIZE]; |
164 | bool ignore_mib_parsing_errors = false; | 162 | static bool ignore_mib_parsing_errors = false; |
165 | 163 | ||
166 | static char *fix_snmp_range(char *th) | 164 | static char *fix_snmp_range(char *th) |
167 | { | 165 | { |
@@ -187,7 +185,8 @@ static char *fix_snmp_range(char *th) | |||
187 | int | 185 | int |
188 | main (int argc, char **argv) | 186 | main (int argc, char **argv) |
189 | { | 187 | { |
190 | int i, len, line, total_oids; | 188 | int len, total_oids; |
189 | size_t line; | ||
191 | unsigned int bk_count = 0, dq_count = 0; | 190 | unsigned int bk_count = 0, dq_count = 0; |
192 | int iresult = STATE_UNKNOWN; | 191 | int iresult = STATE_UNKNOWN; |
193 | int result = STATE_UNKNOWN; | 192 | int result = STATE_UNKNOWN; |
@@ -253,14 +252,16 @@ main (int argc, char **argv) | |||
253 | if(calculate_rate) { | 252 | if(calculate_rate) { |
254 | if (!strcmp(label, "SNMP")) | 253 | if (!strcmp(label, "SNMP")) |
255 | label = strdup("SNMP RATE"); | 254 | label = strdup("SNMP RATE"); |
256 | i=0; | 255 | |
256 | size_t i = 0; | ||
257 | |||
257 | previous_state = np_state_read(); | 258 | previous_state = np_state_read(); |
258 | if(previous_state!=NULL) { | 259 | if(previous_state!=NULL) { |
259 | /* Split colon separated values */ | 260 | /* Split colon separated values */ |
260 | previous_string = strdup((char *) previous_state->data); | 261 | previous_string = strdup((char *) previous_state->data); |
261 | while((ap = strsep(&previous_string, ":")) != NULL) { | 262 | while((ap = strsep(&previous_string, ":")) != NULL) { |
262 | if(verbose>2) | 263 | if(verbose>2) |
263 | printf("State for %d=%s\n", i, ap); | 264 | printf("State for %zd=%s\n", i, ap); |
264 | while (i >= previous_size) { | 265 | while (i >= previous_size) { |
265 | previous_size += OID_COUNT_STEP; | 266 | previous_size += OID_COUNT_STEP; |
266 | previous_value = realloc(previous_value, previous_size * sizeof(*previous_value)); | 267 | previous_value = realloc(previous_value, previous_size * sizeof(*previous_value)); |
@@ -273,7 +274,7 @@ main (int argc, char **argv) | |||
273 | /* Populate the thresholds */ | 274 | /* Populate the thresholds */ |
274 | th_warn=warning_thresholds; | 275 | th_warn=warning_thresholds; |
275 | th_crit=critical_thresholds; | 276 | th_crit=critical_thresholds; |
276 | for (i=0; i<numoids; i++) { | 277 | for (size_t i = 0; i < numoids; i++) { |
277 | char *w = th_warn ? strndup(th_warn, strcspn(th_warn, ",")) : NULL; | 278 | char *w = th_warn ? strndup(th_warn, strcspn(th_warn, ",")) : NULL; |
278 | char *c = th_crit ? strndup(th_crit, strcspn(th_crit, ",")) : NULL; | 279 | char *c = th_crit ? strndup(th_crit, strcspn(th_crit, ",")) : NULL; |
279 | /* translate "2:1" to "@1:2" for backwards compatibility */ | 280 | /* translate "2:1" to "@1:2" for backwards compatibility */ |
@@ -302,7 +303,7 @@ main (int argc, char **argv) | |||
302 | } | 303 | } |
303 | 304 | ||
304 | /* Create the command array to execute */ | 305 | /* Create the command array to execute */ |
305 | if(usesnmpgetnext == TRUE) { | 306 | if(usesnmpgetnext) { |
306 | snmpcmd = strdup (PATH_TO_SNMPGETNEXT); | 307 | snmpcmd = strdup (PATH_TO_SNMPGETNEXT); |
307 | }else{ | 308 | }else{ |
308 | snmpcmd = strdup (PATH_TO_SNMPGET); | 309 | snmpcmd = strdup (PATH_TO_SNMPGET); |
@@ -333,11 +334,11 @@ main (int argc, char **argv) | |||
333 | } | 334 | } |
334 | 335 | ||
335 | 336 | ||
336 | for (i = 0; i < numcontext; i++) { | 337 | for (int i = 0; i < numcontext; i++) { |
337 | command_line[index++] = contextargs[i]; | 338 | command_line[index++] = contextargs[i]; |
338 | } | 339 | } |
339 | 340 | ||
340 | for (i = 0; i < numauthpriv; i++) { | 341 | for (int i = 0; i < numauthpriv; i++) { |
341 | command_line[index++] = authpriv[i]; | 342 | command_line[index++] = authpriv[i]; |
342 | } | 343 | } |
343 | 344 | ||
@@ -348,7 +349,7 @@ main (int argc, char **argv) | |||
348 | server_address, | 349 | server_address, |
349 | port); | 350 | port); |
350 | 351 | ||
351 | for (i = 0; i < numoids; i++) { | 352 | for (size_t i = 0; i < numoids; i++) { |
352 | command_line[index++] = oids[i]; | 353 | command_line[index++] = oids[i]; |
353 | xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]); | 354 | xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]); |
354 | } | 355 | } |
@@ -382,7 +383,7 @@ main (int argc, char **argv) | |||
382 | if (external_error) { | 383 | if (external_error) { |
383 | if (chld_err.lines > 0) { | 384 | if (chld_err.lines > 0) { |
384 | printf (_("External command error: %s\n"), chld_err.line[0]); | 385 | printf (_("External command error: %s\n"), chld_err.line[0]); |
385 | for (i = 1; i < chld_err.lines; i++) { | 386 | for (size_t i = 1; i < chld_err.lines; i++) { |
386 | printf ("%s\n", chld_err.line[i]); | 387 | printf ("%s\n", chld_err.line[i]); |
387 | } | 388 | } |
388 | } else { | 389 | } else { |
@@ -392,12 +393,14 @@ main (int argc, char **argv) | |||
392 | } | 393 | } |
393 | 394 | ||
394 | if (verbose) { | 395 | if (verbose) { |
395 | for (i = 0; i < chld_out.lines; i++) { | 396 | for (size_t i = 0; i < chld_out.lines; i++) { |
396 | printf ("%s\n", chld_out.line[i]); | 397 | printf ("%s\n", chld_out.line[i]); |
397 | } | 398 | } |
398 | } | 399 | } |
399 | 400 | ||
400 | for (line=0, i=0; line < chld_out.lines && i < numoids ; line++, i++) { | 401 | line = 0; |
402 | total_oids = 0; | ||
403 | for (size_t i = 0; line < chld_out.lines && i < numoids ; line++, i++, total_oids++) { | ||
401 | if(calculate_rate) | 404 | if(calculate_rate) |
402 | conv = "%.10g"; | 405 | conv = "%.10g"; |
403 | else | 406 | else |
@@ -410,7 +413,7 @@ main (int argc, char **argv) | |||
410 | break; | 413 | break; |
411 | 414 | ||
412 | if (verbose > 2) { | 415 | if (verbose > 2) { |
413 | printf("Processing oid %i (line %i)\n oidname: %s\n response: %s\n", i+1, line+1, oidname, response); | 416 | printf("Processing oid %zi (line %zi)\n oidname: %s\n response: %s\n", i+1, line+1, oidname, response); |
414 | } | 417 | } |
415 | 418 | ||
416 | /* Clean up type array - Sol10 does not necessarily zero it out */ | 419 | /* Clean up type array - Sol10 does not necessarily zero it out */ |
@@ -634,7 +637,6 @@ main (int argc, char **argv) | |||
634 | strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1); | 637 | strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1); |
635 | } | 638 | } |
636 | } | 639 | } |
637 | total_oids=i; | ||
638 | 640 | ||
639 | /* Save state data, as all data collected now */ | 641 | /* Save state data, as all data collected now */ |
640 | if(calculate_rate) { | 642 | if(calculate_rate) { |
@@ -644,7 +646,7 @@ main (int argc, char **argv) | |||
644 | die(STATE_UNKNOWN, _("Cannot malloc")); | 646 | die(STATE_UNKNOWN, _("Cannot malloc")); |
645 | 647 | ||
646 | current_length=0; | 648 | current_length=0; |
647 | for(i=0; i<total_oids; i++) { | 649 | for(int i = 0; i < total_oids; i++) { |
648 | xasprintf(&temp_string,"%.0f",response_value[i]); | 650 | xasprintf(&temp_string,"%.0f",response_value[i]); |
649 | if(temp_string==NULL) | 651 | if(temp_string==NULL) |
650 | die(STATE_UNKNOWN,_("Cannot asprintf()")); | 652 | die(STATE_UNKNOWN,_("Cannot asprintf()")); |
@@ -687,7 +689,7 @@ process_arguments (int argc, char **argv) | |||
687 | { | 689 | { |
688 | char *ptr; | 690 | char *ptr; |
689 | int c = 1; | 691 | int c = 1; |
690 | int j = 0, jj = 0, ii = 0; | 692 | size_t j = 0, jj = 0; |
691 | 693 | ||
692 | int option = 0; | 694 | int option = 0; |
693 | static struct option longopts[] = { | 695 | static struct option longopts[] = { |
@@ -777,7 +779,7 @@ process_arguments (int argc, char **argv) | |||
777 | miblist = optarg; | 779 | miblist = optarg; |
778 | break; | 780 | break; |
779 | case 'n': /* usesnmpgetnext */ | 781 | case 'n': /* usesnmpgetnext */ |
780 | usesnmpgetnext = TRUE; | 782 | usesnmpgetnext = true; |
781 | break; | 783 | break; |
782 | case 'P': /* SNMP protocol version */ | 784 | case 'P': /* SNMP protocol version */ |
783 | proto = optarg; | 785 | proto = optarg; |
@@ -831,7 +833,7 @@ process_arguments (int argc, char **argv) | |||
831 | * so we have a mib variable, rather than just an SNMP OID, | 833 | * so we have a mib variable, rather than just an SNMP OID, |
832 | * so we have to actually read the mib files | 834 | * so we have to actually read the mib files |
833 | */ | 835 | */ |
834 | needmibs = TRUE; | 836 | needmibs = true; |
835 | } | 837 | } |
836 | for (ptr = strtok(optarg, ", "); ptr != NULL; ptr = strtok(NULL, ", "), j++) { | 838 | for (ptr = strtok(optarg, ", "); ptr != NULL; ptr = strtok(NULL, ", "), j++) { |
837 | while (j >= oids_size) { | 839 | while (j >= oids_size) { |
@@ -843,7 +845,6 @@ process_arguments (int argc, char **argv) | |||
843 | numoids = j; | 845 | numoids = j; |
844 | if (c == 'E' || c == 'e') { | 846 | if (c == 'E' || c == 'e') { |
845 | jj++; | 847 | jj++; |
846 | ii++; | ||
847 | while (j+1 >= eval_size) { | 848 | while (j+1 >= eval_size) { |
848 | eval_size += OID_COUNT_STEP; | 849 | eval_size += OID_COUNT_STEP; |
849 | eval_method = realloc(eval_method, eval_size * sizeof(*eval_method)); | 850 | eval_method = realloc(eval_method, eval_size * sizeof(*eval_method)); |
@@ -870,7 +871,6 @@ process_arguments (int argc, char **argv) | |||
870 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); | 871 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); |
871 | } | 872 | } |
872 | eval_method[jj++] = CRIT_STRING; | 873 | eval_method[jj++] = CRIT_STRING; |
873 | ii++; | ||
874 | break; | 874 | break; |
875 | case 'R': /* regex */ | 875 | case 'R': /* regex */ |
876 | cflags = REG_ICASE; | 876 | cflags = REG_ICASE; |
@@ -891,7 +891,6 @@ process_arguments (int argc, char **argv) | |||
891 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); | 891 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); |
892 | } | 892 | } |
893 | eval_method[jj++] = CRIT_REGEX; | 893 | eval_method[jj++] = CRIT_REGEX; |
894 | ii++; | ||
895 | break; | 894 | break; |
896 | 895 | ||
897 | /* Format */ | 896 | /* Format */ |
@@ -1029,12 +1028,12 @@ selected.</para> | |||
1029 | 1028 | ||
1030 | 1029 | ||
1031 | 1030 | ||
1032 | int | 1031 | static int |
1033 | validate_arguments () | 1032 | validate_arguments () |
1034 | { | 1033 | { |
1035 | /* check whether to load locally installed MIBS (CPU/disk intensive) */ | 1034 | /* check whether to load locally installed MIBS (CPU/disk intensive) */ |
1036 | if (miblist == NULL) { | 1035 | if (miblist == NULL) { |
1037 | if ( needmibs == TRUE ) { | 1036 | if (needmibs) { |
1038 | miblist = strdup (DEFAULT_MIBLIST); | 1037 | miblist = strdup (DEFAULT_MIBLIST); |
1039 | }else{ | 1038 | }else{ |
1040 | miblist = ""; /* don't read any mib files for numeric oids */ | 1039 | miblist = ""; /* don't read any mib files for numeric oids */ |
@@ -1138,7 +1137,7 @@ validate_arguments () | |||
1138 | /* trim leading whitespace | 1137 | /* trim leading whitespace |
1139 | if there is a leading quote, make sure it balances */ | 1138 | if there is a leading quote, make sure it balances */ |
1140 | 1139 | ||
1141 | char * | 1140 | static char * |
1142 | thisarg (char *str) | 1141 | thisarg (char *str) |
1143 | { | 1142 | { |
1144 | str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ | 1143 | str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ |
@@ -1155,7 +1154,7 @@ thisarg (char *str) | |||
1155 | set the trailing quote to '\x0' | 1154 | set the trailing quote to '\x0' |
1156 | if the string continues, advance beyond the comma */ | 1155 | if the string continues, advance beyond the comma */ |
1157 | 1156 | ||
1158 | char * | 1157 | static char * |
1159 | nextarg (char *str) | 1158 | nextarg (char *str) |
1160 | { | 1159 | { |
1161 | if (str[0] == '\'') { | 1160 | if (str[0] == '\'') { |
@@ -1187,7 +1186,7 @@ nextarg (char *str) | |||
1187 | 1186 | ||
1188 | 1187 | ||
1189 | /* multiply result (values 0 < n < 1 work as divider) */ | 1188 | /* multiply result (values 0 < n < 1 work as divider) */ |
1190 | char * | 1189 | static char * |
1191 | multiply (char *str) | 1190 | multiply (char *str) |
1192 | { | 1191 | { |
1193 | char *endptr; | 1192 | char *endptr; |
@@ -1224,7 +1223,7 @@ multiply (char *str) | |||
1224 | } | 1223 | } |
1225 | 1224 | ||
1226 | 1225 | ||
1227 | void | 1226 | static void |
1228 | print_help (void) | 1227 | print_help (void) |
1229 | { | 1228 | { |
1230 | print_revision (progname, NP_VERSION); | 1229 | print_revision (progname, NP_VERSION); |
@@ -1252,10 +1251,12 @@ print_help (void) | |||
1252 | printf (" %s\n", _("SNMPv3 context")); | 1251 | printf (" %s\n", _("SNMPv3 context")); |
1253 | printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]"); | 1252 | printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]"); |
1254 | printf (" %s\n", _("SNMPv3 securityLevel")); | 1253 | printf (" %s\n", _("SNMPv3 securityLevel")); |
1255 | printf (" %s\n", "-a, --authproto=[MD5|SHA]"); | 1254 | printf (" %s\n", "-a, --authproto=AUTHENTICATION_PROTOCOL"); |
1256 | printf (" %s\n", _("SNMPv3 auth proto")); | 1255 | printf (" %s\n", _("SNMPv3 authentication protocol (default MD5), available options depend on the specific version of the net-snmp tools")); |
1257 | printf (" %s\n", "-x, --privproto=[DES|AES]"); | 1256 | printf (" %s\n", _("if < 5.8 SHA (1) and MD5 should be available, if >= 5.8 additionally SHA-224, SHA-256, SHA-384 and SHA-512")); |
1258 | printf (" %s\n", _("SNMPv3 priv proto (default DES)")); | 1257 | printf (" %s\n", "-x, --privproto=PRIVACY_PROTOCOL"); |
1258 | printf (" %s\n", _("SNMPv3 privacy protocol (default DES), available options depend on the specific version of the net-snmp tools")); | ||
1259 | printf (" %s\n", _("if < 5.8 DES and AES should be available, if >= 5.8 additionally AES-192 and AES-256")); | ||
1259 | 1260 | ||
1260 | /* Authentication Tokens*/ | 1261 | /* Authentication Tokens*/ |
1261 | printf (" %s\n", "-C, --community=STRING"); | 1262 | printf (" %s\n", "-C, --community=STRING"); |