+static void prep_session_peer TAC_ARGS((const struct sockaddr_in *from));
+
+static void
+prep_session_peer(from)
+const struct sockaddr_in *from;
+{
+ struct hostent *hp;
+
+ if (session.peer_addr && session.peer_addr != session.peer)
+ free(session.peer_addr);
+ if (session.peer)
+ free(session.peer);
+
+ session.peer_addr = tac_strdup( (char *) inet_ntoa(from->sin_addr) );
+
+ hp = gethostbyaddr((char *) &from->sin_addr.s_addr, sizeof(from->sin_addr.s_addr), AF_INET);
+
+ if (hp)
+ session.peer = tac_strdup(hp->h_name);
+ else
+ session.peer = session.peer_addr;
+}
+