
$Id: TODO,v 1.43 2007-07-13 00:34:51 thomson Exp $

New tasks should be done to the TODO list. After task is implemented, it should be moved to the
'DONE/Not Validated' list. After confirmation that it is working properly, it can be removed completely.

- CLI: link-change detection: part of the log file.
 kernel: ADDRCONF(NETDEV_UP): eth1: link is not ready                                                              
 kernel: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready                

  Internal/code TODO
 --------------------
- CLI: PD: this should be possible "iface eth0 { pd { prefix 2000::/64 } }"
- CLI: PD: this should be possible "iface eth0 { pd { prefix prefix } }"
- SRV: PD: prefixes are not removed from db if valid goes to 0.
- CLI: PD: radvd.conf is invalid if there were more than one prefix added to the same interface
- CLI: Implement client side prefix delegation hints. It must be possible to define, what prefix(es) client
       will send as hints.
- SRV: Prefixes stored in server's AddrMgr for too long (i.e. after its valid lifetime has expired) should be
       removed from the server's database (see SrvAddrMgr::doDuties())
- CLI: When server is not configured to support PD and client requests PD, server sends PD with status code
  set to NOADDRSAVAIL (that is ok). However, client should complain about it (and maybe try to do something with it). 
  Right now it prints information that "PD set successfully."
- SRV/REL: Support InterfaceID option with length other than 4
- ALL: Migrate SmartPtr -> SPtr, TIPv6Addr -> TAddr
- ALL: Make TAddrAddr a derived class from TAddr
- CLI: Remember last assigned address.
- DOC: Add "Static reservation" section to User's Guide (describe white-list and cache-function)
- CLI/BUG: when FQDN is assigned, client performs update first, then verifies tentative status.
       It should be done in reverse order.
- SRV: When client does not send RELEASE (crash, went out of range), server does not perform FQDN delete.
- When server shuts down, it does not perform FQDN delete.
- SRV/CLI: TransMgr->dump() should be implemented.
- CLI: Clnt requests for Address and options (receives both and lifetime option). It should send renew only if T1<lifetime
  and renew and inf-request if T1>lifetime.
- REL: 20. RFC3315: If the relay agent has not been explicitly configured, it MUST use the All_DHCP_Servers multicast address as the default.
- CLI: setting up a domain: echo homenetwork > /etc/dnsdomainname
- check server's behavior: there isn't any addrs left, and srv receives SOLICIT.
  Does PREFERENCE have normal value (e.g. not faulty 255, check
   tex/test09/10th packet)
- When client receives NO-ADDR AVAILABLE, it simultaneusly: starts SOLICIT transaction, sends REQUEST to 
  next server on backup list.
- test11: reply contains empty IA with 2 STATUS CODE options: 1. unspecfail (1) + description "no such IA"
  2. ok (!!!) [This entry is so old and lots of the code has  been rewritten since. Is it still valid bug?]
- CLI: client's answers are generated by answer(...) method, whereas server's answers 
   are generated in the relayMsg method by differents constructors of the same message.
   Shouldn't it be better to make it homogeneous ? I don't have any preference :)
- CLI: ClntIfaceMgr: remove ugly sleep(3) instruction.
- CLI: Server ADVERTISE evaluations. There should be some kind of ranking
   system, which checks that IAs, TAs and PDs were provided. And
   options too.
- SRV/CLI: Suboptions parsing. It's done in lots of places, but should be done
   in one. e.g. TSrvOptIA_NA, TClntOptIA_NA, TClntOptTA, TSrvOptTA constructors.
- SRV: {Server|Client}Identifier is added in numerous places in SrvOpt*.cpp. It should be added
   in TSrvMsg::appendRequestedOptions()
- SRV: How many addrs can be assigned to the client? Implement counter in the TAddrClient class.
- TEST: Implement test environment [Megatask]

  DONE/Not validated
 --------------------
- CLI: Elapsed time is not recalculated when SOLICIT is resent
- CLI: Win32: prefix delegation low-level support is not implemented.
- CLI: PD: prefixes are not removed if valid goes to 0.
- CLI: PD: Rebind attempt segfaults
- CLI: PD: this cfg: "iface eth0 { pd }" does not work
- CLI: PD: this should be possible "iface eth0 { pd pd }"
- CLI: PD: RENEW does not work
- ALL: Fix linux low-level interface (don't use PKTINFO anymore).
- SRV: Prefix hint analysis. (client support for hints is required)
- SRV: Perform DNS Update delete, when RELEASE is sent (SrvMsgReply.cpp:387)
- CLI: Perform DNS Update delete, when RELEASE is sent (ClntMsgRelease.cpp:102)
- CLI/BUG: domain format in /etc/resolv.conf must be fixed

  DONE
 ------
- CLI: Linux: prefixes should be moved to Port-linux.
- DOC: Describe dumping XML files, option files
- SRV: Crashes when not configured to support prefix-delegation, but client sends pd option.
- DOC: Describe strict-rfc-no-routing on the client side
- CLI/BUG: option fqdn - does not work, option fqdn some.name.com must be used in client.conf file
- SRV: Add cache. SrvAddrMgr - cachedLst. 
- SRV: Add to SrvParser options: cache-size
- SRV: Store cache on disk. Read cache during startup.
- SRV/CLI: Implement vendor-class support.
- CLI: Add address with /64 prefix, add option to ClntParser strict-rfc-no-routing
  to disable this.

  BUGS
 ------
 See http://klub.com.pl/bugzilla/

  INFO
 ------
- Linux kernel does not support finite lifetimes: kernel sources: 
   addrconf.c:  inet6_rtm_newaddr() :1579, functions ipv6_add_addr and in ndisc.c:ndisc_router_discovery
