# $NetBSD: TODO,v 1.3 2025/02/05 20:22:26 christos Exp $

- don't poll periodically, find the next timeout
- use the socket also for commands? Or separate socket?
- add functionality to the control program. Should it change the database
  directly, or talk to the daemon to have it do it?
- perhaps handle interfaces too instead of addresses for dynamic ip?
  <bge0/4>? What to do with multiple addresses?
- perhaps rate limit against DoS
- perhaps instead of scanning the list have a sparse map by port?
- do we want to use libnpf directly for efficiency?
- add more daemons ftpd?
- do we care about the db state becoming too large? 
- instead of a yes = bump one, no = return to 0 interface, do we want
  to have something more flexible like?
	+n
	-n
	block
	unblock
- do we need an api in blocklistctl to perform maintenance
- fix the blocklistctl output to be more user friendly

- figure out some way to do distributed operation securely (perhaps with
  a helper daemon that authenticates local sockets and then communicates
  local DB changes to the central server over a secure channel --
  perhaps blocklistd-helper can have a back-end that can send updates to
  a central server)

- add "blocklistd -l" to enable filter logging on all rules by default

- add some new options in the config file

	"/all"	- block both TCP and UDP (on the proto field?)

	"/log"	- enable filter logging (if not the default) (on the name field?)
	"/nolog"- disable filter logging (if not the default) (on the name field?)

  The latter two probably require a new parameter for blocklistd-helper.

- "blocklistd -f" should (also?) be a blocklistctl function!?!?!

- if blocklistd was started with '-r' then a SIGHUP should also do a
  "control flush $rulename" and then re-add all the filter rules?

- should/could /etc/rc.conf.d/ipfilter be created with the following?

	reload_postcmd=blocklistd_reload
	start_postcmd=blocklistd_start
	stop_precmd=blocklistd_stop
	blocklistd_reload ()
	{
		/etc/rc.d/blocklistd reload	# IFF SIGHUP does flush/re-add
		# /etc/rc.d/blocklistd restart
	}
	blocklistd_stop ()
	{
		/etc/rc.d/blocklistd stop
	}
	blocklistd_start ()
	{
		/etc/rc.d/blocklistd start
	}

  or is there a better way?
