{section: currently working on}
 
-{subsection: KeyCache}
-KeyCache, uses sockaddr_in for storing ip addr. before modify, be sure to look at the overall picture. only used in condor_secman and daemon core.
+{subsection: Link error}
 
-KeyCacheEntry stores sockaddr_in. KeyCache converts sockaddr_in into sinful string and use the string as a key.
+{code}
+../condor_c++_util/cplus_lib.a(my_hostname.o): In function `init_full_hostname':
+/u/m/_/m/ron_ws/src/condor_c++_util/my_hostname.cpp:140: undefined reference to `get_full_hostname_ipv6(char const*, ipaddr&)'
+../condor_c++_util/cplus_lib.a(my_hostname.o): In function `init_ipaddr':
+/u/m/_/m/ron_ws/src/condor_c++_util/my_hostname.cpp:176: undefined reference to `ipv6_is_ipaddr(char const*, ipaddr&)'
+/u/m/_/m/ron_ws/src/condor_c++_util/my_hostname.cpp:209: undefined reference to `get_full_hostname_ipv6(char const*, ipaddr&)'
+../condor_c++_util/cplus_lib.a(my_hostname.o): In function `my_ip_string':
+/u/m/_/m/ron_ws/src/condor_c++_util/my_hostname.cpp:121: undefined reference to `ipaddr::to_ip_string(char*, int) const'
+../condor_c++_util/cplus_lib.a(my_hostname.o): In function `my_ip_addr_compat':
+/u/m/_/m/ron_ws/src/condor_c++_util/my_hostname.cpp:94: undefined reference to `ipaddr::to_sockaddr()'
+../condor_util_lib/util_lib.a(internet.o): In function `sin_to_hostname':
+/u/m/_/m/ron_ws/src/condor_util_lib/internet.c:253: undefined reference to `my_ip_addr'
+../condor_util_lib/util_lib.a(internet.o): In function `display_from':
+/u/m/_/m/ron_ws/src/condor_util_lib/internet.c:287: undefined reference to `my_ip_addr'
+../condor_util_lib/util_lib.a(internet.o): In function `calc_subnet_name':
+/u/m/_/m/ron_ws/src/condor_util_lib/internet.c:311: undefined reference to `my_ip_addr'
+../condor_util_lib/util_lib.a(internet.o): In function `getSockAddr':
+/u/m/_/m/ron_ws/src/condor_util_lib/internet.c:1021: undefined reference to `my_ip_addr'
+../condor_io/libcedar.a(sock.o): In function `Sock::get_port()':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:1946: undefined reference to `condor_getsockname(int, ipaddr&)'
+../condor_io/libcedar.a(sock.o): In function `Sock::my_ip_str()':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:1881: undefined reference to `ipaddr::to_ip_string(char*, int) const'
+../condor_io/libcedar.a(sock.o): In function `Sock::peer_ip_str()':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:1840: undefined reference to `ipaddr::to_ip_string(char*, int) const'
+../condor_io/libcedar.a(sock.o): In function `Sock::bindWithin(int, int, bool)':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:447: undefined reference to `ipv6_my_ip_addr()'
+../condor_io/libcedar.a(sock.o): In function `Sock::bind(bool, int, bool)':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:579: undefined reference to `ipv6_my_ip_addr()'
+../condor_io/libcedar.a(sock.o): In function `Sock::do_connect(char const*, int, bool)':
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:730: undefined reference to `ipaddr::from_sinful(char const*)'
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:734: undefined reference to `ipv6_is_ipaddr(char const*, ipaddr&)'
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:745: undefined reference to `condor_getaddrinfo(char const*, char const*, addrinfo const*, addrinfo**)'
+/u/m/_/m/ron_ws/src/condor_io/sock.cpp:752: undefined reference to `ipaddr::ipaddr(sockaddr*)'
+../condor_io/libcedar.a(condor_secman.o): In function `SecManStartCommand::receivePostAuthInfo_inner()':
+/u/m/_/m/ron_ws/src/condor_io/condor_secman.cpp:1939: undefined reference to `Sock::peer_addr()'
+../condor_io/libcedar.a(condor_secman.o): In function `SecManStartCommand::doCallback(StartCommandResult)':
+/u/m/_/m/ron_ws/src/condor_io/condor_secman.cpp:1015: undefined reference to `Sock::peer_addr()'
+../condor_io/libcedar.a(condor_secman.o): In function `SecMan::CreateNonNegotiatedSecuritySession(DCpermission, char const*, char const*, char const*, char const*, char const*, int)':
+/u/m/_/m/ron_ws/src/condor_io/condor_secman.cpp:2772: undefined reference to `ipaddr::from_sinful(char const*)'
+../condor_io/libcedar.a(reli_sock.o): In function `ReliSock::serialize(char*)':
+/u/m/_/m/ron_ws/src/condor_io/reli_sock.cpp:897: undefined reference to `ipaddr::from_sinful(char const*)'
+../condor_io/libcedar.a(condor_auth.o): In function `Condor_Auth_Base':
+/u/m/_/m/ron_ws/src/condor_io/condor_auth.cpp:68: undefined reference to `Sock::peer_addr()'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth.cpp:68: undefined reference to `ipaddr::to_ip_string() const'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth.cpp:68: undefined reference to `Sock::peer_addr()'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth.cpp:68: undefined reference to `ipaddr::to_ip_string() const'
+../condor_io/libcedar.a(condor_auth_x509.o): In function `getDaemonList(ReliSock*)':
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_x509.cpp:478: undefined reference to `Sock::peer_addr()'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_x509.cpp:478: undefined reference to `ipv6_to_hostname(ipaddr const&, char*, int)'
+../condor_io/libcedar.a(condor_auth_kerberos.o): In function `Condor_Auth_Kerberos::forward_tgt_creds(_krb5_creds*, _krb5_ccache*)':
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_kerberos.cpp:1178: undefined reference to `Sock::peer_addr()'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_kerberos.cpp:1178: undefined reference to `condor_gethostbyaddr_ipv6(ipaddr const&)'
+../condor_io/libcedar.a(condor_auth_kerberos.o): In function `Condor_Auth_Kerberos::init_server_info()':
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_kerberos.cpp:1135: undefined reference to `Sock::peer_addr()'
+/u/m/_/m/ron_ws/src/condor_io/condor_auth_kerberos.cpp:1135: undefined reference to `condor_gethostbyaddr_ipv6(ipaddr const&)'
+../condor_io/libcedar.a(safe_sock.o): In function `SafeSock::serialize(char*)':
+/u/m/_/m/ron_ws/src/condor_io/safe_sock.cpp:800: undefined reference to `ipaddr::to_sinful(char*) const'
+../condor_io/libcedar.a(safe_sock.o): In function `SafeSock::handle_incoming_packet()':
+/u/m/_/m/ron_ws/src/condor_io/safe_sock.cpp:593: undefined reference to `condor_recvfrom(int, void*, unsigned int, int, ipaddr&)'
+../condor_io/libcedar.a(safe_sock.o): In function `SafeSock::connect(char const*, int, bool)':
+/u/m/_/m/ron_ws/src/condor_io/safe_sock.cpp:272: undefined reference to `ipaddr::from_sinful(char const*)'
+/u/m/_/m/ron_ws/src/condor_io/safe_sock.cpp:277: undefined reference to `ipv6_is_ipaddr(char const*, ipaddr&)'
+/u/m/_/m/ron_ws/src/condor_io/safe_sock.cpp:298: undefined reference to `condor_getaddrinfo(char const*, char const*, addrinfo const*, addrinfo**)'
+collect2: ld returned 1 exit status
 
-{subsection: Sock::my_addr() can fail?}
-One of asymmetry in Sock class is that peer_addr() does not fail and always return a value but my_addr() can fail. ( peer_addr tells you the address of peer, my_addr() tells you the address of local socket)
-
-The possible case for a failure of my_addr() is that when Sock class did not assign a socket descriptor.
-
-In this case, peer_addr() can also fail.
+{endcode}
 
 {section: Note for constants}
 Don't forget constants that should be adjusted!
@@ -103,3 +160,16 @@
 
 {section: What is it?}
 TCP_FORWARDING_HOST ?
+
+{section: solved}
+{subsection: KeyCache}
+KeyCache, uses sockaddr_in for storing ip addr. before modify, be sure to look at the overall picture. only used in condor_secman and daemon core.
+
+KeyCacheEntry stores sockaddr_in. KeyCache converts sockaddr_in into sinful string and use the string as a key.
+
+{subsection: Sock::my_addr() can fail?}
+One of asymmetry in Sock class is that peer_addr() does not fail and always return a value but my_addr() can fail. ( peer_addr tells you the address of peer, my_addr() tells you the address of local socket)
+
+The possible case for a failure of my_addr() is that when Sock class did not assign a socket descriptor.
+
+In this case, peer_addr() can also fail.