Blame TODO

Packit c22fc9
Whatever you want !
Packit c22fc9
Packit c22fc9
Real servers
Packit c22fc9
Add quorum_weight, defaults to weight. May want to set different between quorum and IPVS weight
Packit c22fc9
Packit c22fc9
Rationalise use of timer_now()/gettimeofday()/set_time_now()
Packit c22fc9
Packit c22fc9
Packit c22fc9
virtual route:
Packit c22fc9
1. How do we handle
Packit c22fc9
     virtual_routes {
Packit c22fc9
            192.168.210.0/24 via 10.1.0.1
Packit c22fc9
     }
Packit c22fc9
     if there is no route to 10.1.0.1? If we go to fault state if it cannot
Packit c22fc9
     be installed when attempt to transition to master, how do we know to transiton
Packit c22fc9
     out of fault state.
Packit c22fc9
Packit c22fc9
Packit c22fc9
IPVS
Packit c22fc9
1. Can we have an IPv4 fwmark and specify tunnel to IPv6, and vice versa etc.
Packit c22fc9
   What does ipvsadm do?
Packit c22fc9
2. Sort out IP_VS_SO vs LVS_CMD...
Packit c22fc9
3. Make sure log/email messages contain relevant info re VS -> RS. See FMT_CHK
Packit c22fc9
Packit c22fc9
The following are still outstanding from the ideas for what became v2.0.0:
Packit c22fc9
Packit c22fc9
	* Sort out termination in vrrp and checker - stop_vrrp/check, and phase2
Packit c22fc9
	    are inconsistent between vrrp and checker. What about bfd?
Packit c22fc9
	* A route with multiple nexthops will only be deleted if all interfaces
Packit c22fc9
	    are down. Each nexthop needs to record the interface, and only remove
Packit c22fc9
	    once all down
Packit c22fc9
	* Don't add RTNMGRP_IPV4_ADDR/IPV6_ADDR if not monitoring one of those
Packit c22fc9
	    families
Packit c22fc9
	* May want to stop VS down at start for alpha mode RSs (except SNMP)
Packit c22fc9
	* Rate limit respawning if a child process dies
Packit c22fc9
	* Have a socket to connect to for receiving notifications. A process
Packit c22fc9
	    can register for what notifications it wants to receive.
Packit c22fc9
	* Allow variable parameters to be passed to scripts - see issue #837
Packit c22fc9
	* Make tarball include git version if not a tag
Packit c22fc9
	* If an address owner recovers from fault, transition directly to
Packit c22fc9
	  master
Packit c22fc9
	* If configuration_state=MASTER && !OWNER, transition to master after
Packit c22fc9
	  1 * advert_int + skew. Sort out all initialisation around states
Packit c22fc9
	* Split vrrp_snmp.c into vrrp_snmp_keepalived.c vrrp_snmp_rfcv2.c and
Packit c22fc9
	  vrrp_snmp_rfcv3.c
Packit c22fc9
	* Only send correct type of trap, and respond to correct SNMP version,
Packit c22fc9
	  controlled by config, defaults to type of instance. Flags snmp_v2 and
Packit c22fc9
	  snmp_v3 to force other, or both.
Packit c22fc9
	* Ensure unicast peers groups check source address of received advert
Packit c22fc9
	  so that the same VRID can be used between different peer groups on the
Packit c22fc9
	  same interface.
Packit c22fc9
	* Add process checking:
Packit c22fc9
	    Add track_process for vrrp instances
Packit c22fc9
	    Add PROCESS_CHECK for checkers
Packit c22fc9
	    - Find PID and remember it. If PID has gone, try and find new pid
Packit c22fc9
	    Look at how pidof/killall find processes
Packit c22fc9
	* Allow dynamic definitions, e.g. $_VI_NAME
Packit c22fc9
	    Also $*_INSTANCE net_namspace $_INSTANCE
Packit c22fc9
	    so $* means only do if $_INSTANCE not blank. */
Packit c22fc9
	* ng-scheduler
Packit c22fc9
Packit c22fc9
Packit c22fc9
Other issues awaiting resolution:
Packit c22fc9
Packit c22fc9
ipvs_group_range_cmd() appears nonsense, and inet_stor returning a uint8_t
Packit c22fc9
doesn't work for IPv6. The virtual_service_entry_t thing needs range to be
Packit c22fc9
uint32_t. Why would mask be 0xffffffff for IPv6?
Packit c22fc9
Packit c22fc9
ip_vs_daemon_kern vs /usr/include/linux/ip_vs.h ip_vs_daemon_user
Packit c22fc9
Packit c22fc9
vrrp_timer_fd should return 0 if an fd's timer is in the past?
Packit c22fc9
Packit c22fc9
Make vrrp->send_buffer a single buffer for all
Packit c22fc9
Packit c22fc9
Check timers passto to thread_... functions are reasonable, and stacktrace if not.
Packit c22fc9
Packit c22fc9
In function socket_state, should thread_add_write use timer_long() or -timer_long()
Packit c22fc9
Packit c22fc9
vrrp_timer_fd() - see comment
Packit c22fc9
Packit c22fc9
In thread functions with a timer, ensure not > LONG_MAX (or even some lower value);
Packit c22fc9
Packit c22fc9
Change tcp_socket_state etc to socket_state etc
Packit c22fc9
Packit c22fc9
Add noreturn function attribute on stop_vrrp/check
Packit c22fc9
Packit c22fc9
bin/genhash -s 2001:470:69dd:35::188 --port 80 -u /Harriet/     # works, but
Packit c22fc9
bin/genhash -s 2001:470:69dd:35::188 --port 80 -u /Harriet/     # -S doesn't
Packit c22fc9
								# but -S is OK with IPv4 address
Packit c22fc9
Packit c22fc9
in ipvswrapper.c, get rid of static srule etc and make them procedure local and pass as parameters
Packit c22fc9
Packit c22fc9
Stop passing base_ifp to netlink3_set_interface_parameters() etc
Packit c22fc9
Packit c22fc9
ipsecah issues
Packit c22fc9
==============
Packit c22fc9
1. sync and vmac ignore counter
Packit c22fc9
Packit c22fc9
2. Start up just after master dies, but have lowest priority so become master with counter == 1
Packit c22fc9
Packit c22fc9
3. cycle won't happen
Packit c22fc9
Packit c22fc9
4. In vrrp_backup, don't check auth type matches
Packit c22fc9
Packit c22fc9
5. ? if cycle becomes set, we must become backup. How do we get out of state?
Packit c22fc9
Packit c22fc9
epoll
Packit c22fc9
=====
Packit c22fc9
Use timerfd (see timerfd_create(2)) for microsecond timing with epoll, and do not bother with its timeout.
Packit c22fc9
If not available, then simply use the epoll timer.
Packit c22fc9
Packit c22fc9
Optimise calls to timer_now() and see set_time_now()
Packit c22fc9
====================================================
Packit c22fc9
After select completes, get time. Before calculating next
Packit c22fc9
select expire time, get time again.
Packit c22fc9
To test time processing, save time after select and log time taken
Packit c22fc9
before next select. Also initialise timer at startup.
Packit c22fc9
Packit c22fc9
Add api
Packit c22fc9
=======
Packit c22fc9
Packit c22fc9
Add pipe for updates
Packit c22fc9
====================
Packit c22fc9
track_script like for absolute or relative priority
Packit c22fc9
Packit c22fc9
Upstream issues
Packit c22fc9
===============
Packit c22fc9
Packit c22fc9
1. Kernel. Socket receive buffers growing to fill memory
Packit c22fc9
   See issue #839. If the following setting are in place:
Packit c22fc9
net.core.rmem_default = 37748736
Packit c22fc9
net.core.rmem_max = 37748736
Packit c22fc9
   and vrrp_tx_bufs_policy NO_SEND_RX is configured, then
Packit c22fc9
   all system memory can be consumed. Why is it not limited
Packit c22fc9
   to 37748736 bytes?
Packit c22fc9
Packit c22fc9
2. Kernel. Corruption when netlink sends status of large number
Packit c22fc9
   of links - see issues #392/#803.
Packit c22fc9
   When using default socket receive buffer size, and have 500
Packit c22fc9
   vmac interfaces configured on a physical interface and the
Packit c22fc9
   physical interface is downed, lots of netlink messages are
Packit c22fc9
   received, and we get an ENOBUFS. However, after that we then
Packit c22fc9
   see a repeat of some of the earlier messages, so it looks like
Packit c22fc9
   a circular buffer corruption. Running ip -ts monitor link addr route
Packit c22fc9
   we see precisely the same problem at exactly the same message,
Packit c22fc9
   although which message it is varies each time.
Packit c22fc9
Packit c22fc9
3. net-snmp. Display-hint only works on indices.
Packit c22fc9
   See issue #866.
Packit c22fc9
   # snmpwalk -v2c -c public localhost KEEPALIVED-MIB::virtualServerAddress
Packit c22fc9
   KEEPALIVED-MIB::virtualServerAddress.1 = STRING: "
Packit c22fc9
0,"
Packit c22fc9
   The address is attempted to be output as text, rather than using
Packit c22fc9
   the display hint