$NetBSD: patch-ab,v 1.2 2004/02/24 23:34:11 cube Exp $ --- gkrellm_snmp.c.orig 2003-09-21 14:49:36.000000000 +0200 +++ gkrellm_snmp.c @@ -59,7 +59,7 @@ #include -/* #define STREAM /* test for Lou Cephyr */ +/* #define STREAM -- test for Lou Cephyr */ #define SNMP_PLUGIN_MAJOR_VERSION 0 @@ -67,6 +67,7 @@ #define PLUGIN_CONFIG_NAME "SNMP" #define PLUGIN_CONFIG_KEYWORD "snmp_monitor" +#define PLUGIN_MONITOR_KEYWORD "monitor" typedef struct Reader Reader; @@ -967,13 +968,16 @@ save_plugin_config(FILE *f) unit = g_strdelimit(g_strdup(reader->unit), STR_DELIMITERS, '_'); if (label[0] == '\0') label = strdup("_"); if (unit[0] == '\0') unit = strdup("_"); - fprintf(f, "%s %s snmp://%s@%s:%d/%s %s %d %d %d %d\n", + fprintf(f, "%s %s %s snmp://%s@%s:%d/%s %s %d %d %d %d\n", PLUGIN_CONFIG_KEYWORD, + PLUGIN_MONITOR_KEYWORD, label, reader->community, reader->peer, reader->port, reader->oid_str, unit, reader->delay, reader->delta, reader->divisor, reader->scale); + gkrellm_save_chartconfig(f, reader->chart_config, PLUGIN_CONFIG_KEYWORD, + label); g_free(label); g_free(unit); } @@ -984,19 +988,43 @@ load_plugin_config(gchar *arg) { Reader *reader, *nreader; + gchar config[32], item[CFG_BUFSIZE]; gchar proto[CFG_BUFSIZE], bufl[CFG_BUFSIZE]; gchar bufc[CFG_BUFSIZE], bufp[CFG_BUFSIZE]; gchar bufo[CFG_BUFSIZE], bufu[CFG_BUFSIZE]; + gchar bufpr[CFG_BUFSIZE], bufpeer[CFG_BUFSIZE]; gint n; + n = sscanf(arg, "%31s %s %[^\n]", config, bufl, item); + if (n != 3) + return; + + if (!strcmp(config, GKRELLM_CHARTCONFIG_KEYWORD)) + { + for (nreader = readers; nreader; nreader = nreader->next) + { + if (!strcmp(bufl, nreader->label)) + { + gkrellm_load_chartconfig(&nreader->chart_config, item, 1); + break; + } + } + return; + } + + if (strcmp(config, PLUGIN_MONITOR_KEYWORD)) + return; + reader = g_new0(Reader, 1); - n = sscanf(arg, "%s %[^:]://%[^@]@%[^:]:%d/%s %s %d %d %d %d", - bufl, proto, bufc, bufp, &reader->port, bufo, bufu, + n = sscanf(item, "%[^:]://%[^@]@%[^:]:%[^:]:%d/%s %s %d %d %d %d", + proto, bufc, bufpr, bufpeer, &reader->port, bufo, bufu, &reader->delay, &reader->delta, &reader->divisor, &reader->scale); if (n >= 6) { + g_snprintf(bufp, CFG_BUFSIZE, "%s:%s", bufpr, bufpeer); + bufp[CFG_BUFSIZE-1] = '\0'; if (g_strcasecmp(proto, "snmp") == 0) { gkrellm_dup_string(&reader->label, bufl); gkrellm_dup_string(&reader->community, bufc); @@ -1055,6 +1083,7 @@ apply_plugin_config() for (row = 0; row < GTK_CLIST(reader_clist)->rows; ++row) { gint i; + gchar peername[MAXHOSTNAMELEN+1]; i = 0; reader = g_new0(Reader, 1); @@ -1062,6 +1091,11 @@ apply_plugin_config() gkrellm_dup_string(&reader->label, name); gtk_clist_get_text(GTK_CLIST(reader_clist), row, i++, &name); + if (strncasecmp(name, "tcp:", 4) && strncasecmp(name, "udp:", 4)) + { + g_snprintf(peername, MAXHOSTNAMELEN, "udp:%s", name); + name = peername; + } gkrellm_dup_string(&reader->peer, name); gtk_clist_get_text(GTK_CLIST(reader_clist), row, i++, &name);