/*
** SellaNMS
** $Id: TODO,v 2.60 2005/08/04 05:20:30 sella Exp $
** Copyright (c) 2001-2005 Digital Genesis Software. All Rights Reserved.
** Released under the GPL Version 2 License.
** http://www.digitalgenesis.com
*/

ToDo List
---------

To see updated information visit http://bugzilla.digitalgenesis.com.

Fix topo merging. If a or b >90% match, it merges.. it should be if a *and* b > 90% match.
Build a complete manual. Include a section on distributed installs.
Write a complete MODULE document.
Look into using libcwd for debugging. Looks pretty good. (http://libcwd.sourceforge.net/)
Enhance 'make install'. Have it ask questions??
Add backup SQL server support to PHP GUI. (ie: First is not avail, fail over to a backup)
Should add a "bounce" feature to notify. So you can disable recovery notifications for interfaces that bounced, or indicate that it did bounce.
Make sure that snmptrap's relay support is working 100% proper for v2 traps. The source address becomes the proxy (RFC 2576 Sec 3.1 talks about how to handle v1->v2 trap proxy, but I can't find a source covering straight v2 proxy)
Example GUI Report
Add support for "#define _GLIBCPP_CONCEPT_CHECKS" as displayed on http://gcc.gnu.org/onlinedocs/libstdc++/19_diagnostics/howto.html#3
Add SMTP auth support to email module.

Rewrite history duplicate suppression to be an in memory algo instead of polling the database for each incoming alarm. Its way too slow currently when the database grows.

Look into a knob to enable auto-generating CPE devices which connect to edge interfaces. Assign the other end of a /30 to the CPE interface allowing the NMS to monitor the CPE device.

SNMP module capable of doing on-demand polls of BGP neighbors, interface up to clear traps.
SNMP module capable of generating alarms based on interface drops or over X% util on a link.
SNMP module that examines interface drops and generates a trap. Could be correlated to packet loss events.
Give users ability to view previous discoveries. Would require changes to the db structure.
Allow trace-options to use a policy to filter/limit output. Its source would be "trace-options".

Auto-discovery via incoming SNMPTrap, Syslog, etc. If a host sends a trap with the correct incoming community, add that IP as a location to poll during the next discovery. This would work out very well for companies that do managed routers.

Syslog policies for the following:

Feb  6 15:46:16 XXXX-FOOB-02 /kernel: RT_PFE: RT msg op 1 (PREFIX ADD) failed, err 1 (Unknown)
Feb  6 15:46:16 XXXX-FOOB-02 /kernel: RT_PFE: RT msg op 1 (PREFIX ADD) failed, err 1 (Unknown)

JUNOS:
Jan 28 18:39:52  BLAH-CORE-01 inetd[2585]: ssh from 211.139.107.226 exceeded counts/min (limit 5/min)

M20:
Aug 23 07:18:40  MILW-DIST-01 ssb REFCLK: Connor-Winfield clock indicates error

M160:
Add errors message about SFM failures.

7200 output.
*Apr 25 07:46:46.004: %ENVM-4-ENVWARN: chassis outlet 1 measured at 48C/118F

Controller Daemon Sample Config (SellaNMS v2.0.0)

NOTES:

Daemons should be written to stay running 

scheduler {
	/* Any args at this level are passed to lower daemons?? */
	directory "/usr/local/sella_nms"; /* cd to here. All 'daemon' args are relative to here. */
	monitor { /* Grouping label.. just descriptive */
		icmp { /* Daemon label.. just descriptive. */
			daemon "bin/monitor/icmp"
			description "ICMP Monitoring Module"; // Displayed on gui
			disable;
			restart; //Restart if it stops

			schedule { /* Same as before. Start at time, if its not running already. */
				startup;
				hour 3;
			}

			trace-options [ debug config ];

			arguments "--this --that"; /* Pass raw arguments (not preferred) */

			/* Following arguments are passed via command line to daemon using a standard format */
			config   "etc/sella_nms.conf";
			nice 		5;
			pidfile	@resolved_localstatedir@/sella_nms.pid;
			statfile @resolved_localstatedir@/sella_nms.stat;
			umask		022;
			user 		nobody;
			group		nobody;
			facility	local0;
			severity	info;
		}
		snmptrap {
			daemon "monitor/snmptrap"
			restart; /* Restart, if it stops. */
		}
		syslog {
			daemon "monitor/snmptrap"
			restart;
			disable;
		}
	}
	discovery {
		start {
			query "SELECT COUNT(id) AS condition FROM network_element";
			condition true;
		icmp {
			order 10;
		}
		snmp {
			order 20;

		}
		topology {
			order 100;

		}
	}
}
