Reading and parsing IP address from config file should be changed as well. If an existing code base entirely relied on BSD socket interface such as inet_aton or inet_addr, it would be easier. However, if the code has proprietary parsing/converting functions, every incident should be found and changed.
 
+Zach mentioned that security and authentication code mangled with IPv4.
+
 IPv6 address string is far longer than IPv4 address. IPv6 address [0001:0002:0003:0004:0005:0006:0007:0008], length is 41. IPv4 address 101.202.103.203, length is 15. About 3 times longer.
 
 Printing IP address to log file should be considered since existing layout may not work well.
@@ -54,7 +56,7 @@
 
 Having some network abstraction classes, single IP address class that deals both IPv4 and IPv6. So, nobody uses sockaddr, sockaddr_in, or plain int to represent IP address.
 
-Here is {link: http://www.boost.org/doc/libs/1_41_0/boost/asio/ip/address.hpp Boost IP address class}. In that class, they hold both IPv4 address and IPv6 address. But I think we only need one 16 byte array instead of having both. Also, we may not need to have ipv4/v6 flag because there is IPv4 address mapping in IPv6.
+Here is {link: http://www.boost.org/doc/libs/1_41_0/boost/asio/ip/address.hpp Boost IP address class}. In that class, they hold both IPv4 address and IPv6 address. But I think we only need one 16 byte array instead of having both. Also, we may not need to have ipv4/v6 flag because there is IPv4 address mapping in IPv6. [Zach commented that although we do not need separate storage for each IPv4 and IPv6 address, we still need a type because when we tries to connect to other machines, we do not know whether it should be done through IPv4 network or IPv6 network]
 
 Change every IP address storage to that IP address class.
 
@@ -65,17 +67,30 @@
 {section: Todo}
 Manageable daily work-list.
 
+1:investigate security and authentication code that deals IPv4 address directly. IP verifier?
 1:investigate every source code where calls obsolete BSD socket interface.
 1:make a git branch
 1:remove every obsolete interface.
 1:find places where use 'int' as IP address storage. mark and count them.
-1:investigate ipv6 address handling in C++ Boost library - done
 1:make unified address class
 1:change every incidents where use sockaddr,sockaddr_in, and int.
 
+{section: Done}
+
+*:investigate ipv6 address handling in C++ Boost library
+
 {section: Note}
+*:In a server, there are two choices with dealing IPv4 and IPv6 co-existence.
+1::We may create only one IPv6 socket. Then, OS will fake a server program with IPv6-IPv4 mapped region. ffff::1.2.3.4 is really IPv4 host and came through IPv4 router and everything.
+1::We may create two sockets, IPv4 and IPv6. Call non-blocking accept to both of them. And poll() or select() or kqueue() on both sockets. In current Linux implementation, I think we do not need this kind of complexity. Linux kernels deal smoothly with faked IPv6 address.
+
 *:internet.h seems to have a lot of IPv6 incompatible functions.
 *:why do you call <a.b.c.d:pppp> as sinful string? what does it mean 'sinful'?
+
+This is Condor specific term. We need to extend definition to include IPv6 address. For example, <[a:b:c:d:e:f:g:h]:pppp> would work.
+
 *:do we really need unified ip address class? IPv6 address space contains IPv4 and there is 1-to-1 mapping.
 
+Current answer is no. But, we may need a 'type' flag.
+
 {subsection: *** currently, this is just temporary page}