summaryrefslogtreecommitdiffstats
path: root/plugins/check_snmp.c
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2024-10-06 17:28:08 +0200
committerGitHub <noreply@github.com>2024-10-06 17:28:08 +0200
commitbc6dda5286cb23a6845d9e4fb492c6bd5212f04c (patch)
tree725119acfb75ca7c37906fc41b7a3870f531546c /plugins/check_snmp.c
parentaf097aa3642174a2111f0bbcbc8236fff0901e17 (diff)
parent78b591d52ac05bdea98e86974411f22c55f43796 (diff)
downloadmonitoring-plugins-bc6dda5.tar.gz
Merge branch 'master' into check_curl_regex_state
Diffstat (limited to 'plugins/check_snmp.c')
-rw-r--r--plugins/check_snmp.c168
1 files changed, 84 insertions, 84 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index 295aa9b5..90a04027 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
89int process_arguments (int, char **); 87static int process_arguments (int, char **);
90int validate_arguments (void); 88static int validate_arguments (void);
91char *thisarg (char *str); 89static char *thisarg (char *str);
92char *nextarg (char *str); 90static char *nextarg (char *str);
93void print_usage (void); 91void print_usage (void);
94void print_help (void); 92static void print_help (void);
95char *multiply (char *str); 93static char *multiply (char *str);
96 94
97#include "regex.h" 95#include "regex.h"
98char regex_expect[MAX_INPUT_BUFFER] = ""; 96static char regex_expect[MAX_INPUT_BUFFER] = "";
99regex_t preg; 97static regex_t preg;
100regmatch_t pmatch[10]; 98static regmatch_t pmatch[10];
101char errbuf[MAX_INPUT_BUFFER] = ""; 99static char errbuf[MAX_INPUT_BUFFER] = "";
102char perfstr[MAX_INPUT_BUFFER] = "| "; 100static char perfstr[MAX_INPUT_BUFFER] = "| ";
103int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; 101static int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE;
104int eflags = 0; 102static int eflags = 0;
105int errcode, excode; 103static int errcode, excode;
106 104
107char *server_address = NULL; 105static char *server_address = NULL;
108char *community = NULL; 106static char *community = NULL;
109char **contextargs = NULL; 107static char **contextargs = NULL;
110char *context = NULL; 108static char *context = NULL;
111char **authpriv = NULL; 109static char **authpriv = NULL;
112char *proto = NULL; 110static char *proto = NULL;
113char *seclevel = NULL; 111static char *seclevel = NULL;
114char *secname = NULL; 112static char *secname = NULL;
115char *authproto = NULL; 113static char *authproto = NULL;
116char *privproto = NULL; 114static char *privproto = NULL;
117char *authpasswd = NULL; 115static char *authpasswd = NULL;
118char *privpasswd = NULL; 116static char *privpasswd = NULL;
119int nulloid = STATE_UNKNOWN; 117static int nulloid = STATE_UNKNOWN;
120char **oids = NULL; 118static char **oids = NULL;
121size_t oids_size = 0; 119static size_t oids_size = 0;
122char *label; 120static char *label;
123char *units; 121static char *units;
124char *port; 122static char *port;
125char *snmpcmd; 123static char *snmpcmd;
126char string_value[MAX_INPUT_BUFFER] = ""; 124static char string_value[MAX_INPUT_BUFFER] = "";
127int invert_search=0; 125static int invert_search=0;
128char **labels = NULL; 126static char **labels = NULL;
129char **unitv = NULL; 127static char **unitv = NULL;
130size_t nlabels = 0; 128static size_t nlabels = 0;
131size_t labels_size = OID_COUNT_STEP; 129static size_t labels_size = OID_COUNT_STEP;
132size_t nunits = 0; 130static size_t nunits = 0;
133size_t unitv_size = OID_COUNT_STEP; 131static size_t unitv_size = OID_COUNT_STEP;
134size_t numoids = 0; 132static size_t numoids = 0;
135int numauthpriv = 0; 133static int numauthpriv = 0;
136int numcontext = 0; 134static int numcontext = 0;
137int verbose = 0; 135static int verbose = 0;
138bool usesnmpgetnext = false; 136static bool usesnmpgetnext = false;
139char *warning_thresholds = NULL; 137static char *warning_thresholds = NULL;
140char *critical_thresholds = NULL; 138static char *critical_thresholds = NULL;
141thresholds **thlds; 139static thresholds **thlds;
142size_t thlds_size = OID_COUNT_STEP; 140static size_t thlds_size = OID_COUNT_STEP;
143double *response_value; 141static double *response_value;
144size_t response_size = OID_COUNT_STEP; 142static size_t response_size = OID_COUNT_STEP;
145int retries = 0; 143static int retries = 0;
146int *eval_method; 144static int *eval_method;
147size_t eval_size = OID_COUNT_STEP; 145static size_t eval_size = OID_COUNT_STEP;
148char *delimiter; 146static char *delimiter;
149char *output_delim; 147static char *output_delim;
150char *miblist = NULL; 148static char *miblist = NULL;
151bool needmibs = false; 149static bool needmibs = false;
152int calculate_rate = 0; 150static int calculate_rate = 0;
153double offset = 0.0; 151static double offset = 0.0;
154int rate_multiplier = 1; 152static int rate_multiplier = 1;
155state_data *previous_state; 153static state_data *previous_state;
156double *previous_value; 154static double *previous_value;
157size_t previous_size = OID_COUNT_STEP; 155static size_t previous_size = OID_COUNT_STEP;
158int perf_labels = 1; 156static int perf_labels = 1;
159char* ip_version = ""; 157static char* ip_version = "";
160double multiplier = 1.0; 158static double multiplier = 1.0;
161char *fmtstr = ""; 159static char *fmtstr = "";
162bool fmtstr_set = false; 160static bool fmtstr_set = false;
163char buffer[DEFAULT_BUFFER_SIZE]; 161static char buffer[DEFAULT_BUFFER_SIZE];
164bool ignore_mib_parsing_errors = false; 162static bool ignore_mib_parsing_errors = false;
165 163
166static char *fix_snmp_range(char *th) 164static char *fix_snmp_range(char *th)
167{ 165{
@@ -1030,7 +1028,7 @@ selected.</para>
1030 1028
1031 1029
1032 1030
1033int 1031static int
1034validate_arguments () 1032validate_arguments ()
1035{ 1033{
1036 /* check whether to load locally installed MIBS (CPU/disk intensive) */ 1034 /* check whether to load locally installed MIBS (CPU/disk intensive) */
@@ -1139,7 +1137,7 @@ validate_arguments ()
1139/* trim leading whitespace 1137/* trim leading whitespace
1140 if there is a leading quote, make sure it balances */ 1138 if there is a leading quote, make sure it balances */
1141 1139
1142char * 1140static char *
1143thisarg (char *str) 1141thisarg (char *str)
1144{ 1142{
1145 str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ 1143 str += strspn (str, " \t\r\n"); /* trim any leading whitespace */
@@ -1156,7 +1154,7 @@ thisarg (char *str)
1156 set the trailing quote to '\x0' 1154 set the trailing quote to '\x0'
1157 if the string continues, advance beyond the comma */ 1155 if the string continues, advance beyond the comma */
1158 1156
1159char * 1157static char *
1160nextarg (char *str) 1158nextarg (char *str)
1161{ 1159{
1162 if (str[0] == '\'') { 1160 if (str[0] == '\'') {
@@ -1188,7 +1186,7 @@ nextarg (char *str)
1188 1186
1189 1187
1190/* multiply result (values 0 < n < 1 work as divider) */ 1188/* multiply result (values 0 < n < 1 work as divider) */
1191char * 1189static char *
1192multiply (char *str) 1190multiply (char *str)
1193{ 1191{
1194 char *endptr; 1192 char *endptr;
@@ -1225,7 +1223,7 @@ multiply (char *str)
1225} 1223}
1226 1224
1227 1225
1228void 1226static void
1229print_help (void) 1227print_help (void)
1230{ 1228{
1231 print_revision (progname, NP_VERSION); 1229 print_revision (progname, NP_VERSION);
@@ -1253,10 +1251,12 @@ print_help (void)
1253 printf (" %s\n", _("SNMPv3 context")); 1251 printf (" %s\n", _("SNMPv3 context"));
1254 printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]"); 1252 printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]");
1255 printf (" %s\n", _("SNMPv3 securityLevel")); 1253 printf (" %s\n", _("SNMPv3 securityLevel"));
1256 printf (" %s\n", "-a, --authproto=[MD5|SHA]"); 1254 printf (" %s\n", "-a, --authproto=AUTHENTICATION_PROTOCOL");
1257 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"));
1258 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"));
1259 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"));
1260 1260
1261 /* Authentication Tokens*/ 1261 /* Authentication Tokens*/
1262 printf (" %s\n", "-C, --community=STRING"); 1262 printf (" %s\n", "-C, --community=STRING");