config BR2_PACKAGE_BANDWIDTHD
	bool "bandwidthd"
	depends on BR2_USE_MMU # fork()
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_LIBPCAP
	select BR2_PACKAGE_GD
	help
	  BandwidthD - Bandwidth monitoring

	  Provides a method to measure the bandwidth that travels
	  through the machine, grouped by subnet and IP. This
	  information can be stored locally in /var/lib/bandwidthd and
	  can be configured to generate static HTML pages which can be
	  hosted by a web server.

	  It is highly recommended that the target has some way of
	  retaining the time between reboots. (e.g. NTP on boot or an
	  RTC)

	  It is suggested to use sqlite for logfile storage but works
	  fine without, and can be completely ignored if the
	  postgresql portion is used.

	  As upstream is no longer actively maintained, a fork is
	  available on github that works on making BandwidthD's build
	  process more compatible with buildroot's.

	  Upstream:
	  http://bandwidthd.sourceforge.net/
	  Github fork:
	  http://github.com/nroach44/bandwidthd

if BR2_PACKAGE_BANDWIDTHD

config BR2_PACKAGE_BANDWIDTHD_POSTGRESQL
	bool "enable postgresql log target support"
	depends on !BR2_STATIC_LIBS
	depends on BR2_USE_WCHAR # postgresql
	select BR2_PACKAGE_POSTGRESQL
	help
	  Enable support for logging the bandwidthd data to a remote
	  (or local) postgresql server. This data can then be viewed
	  through a php site. See README in the source code
	  (github.com/nroach44/bandwidthd) for more information.

comment "postgresql support needs a toolchain w/ dynamic library, wchar"
	depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR

config BR2_PACKAGE_BANDWIDTHD_SQLITE3
	bool "enable sqlite3 log storage"
	select BR2_PACKAGE_SQLITE
	help
	  Enable support for storing the aggregated data in an sqlite
	  db instead of a plain text file.

endif
