Fix typos in various comments.
[ircu2.10.12-pk.git] / ircd / numnicks.c
index fe9a5fa43282dea1a3678a59ccf3fa0f83d4aa77..b54e20ed20dae4e59383bcdea3685e5d60757177 100644 (file)
@@ -16,7 +16,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* @file
+/** @file
  * @brief Implementation of numeric nickname operations.
  * @version $Id$
  */
@@ -26,6 +26,7 @@
 #include "client.h"
 #include "ircd.h"
 #include "ircd_alloc.h"
+#include "ircd_log.h"
 #include "ircd_string.h"
 #include "match.h"
 #include "s_bsd.h"
 #include "s_misc.h"
 #include "struct.h"
 
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 
-/** @page numnicks %Numeric Nicks
+/** @page numnicks Numeric Nicks
  * %Numeric nicks (numnicks) are new as of version ircu2.10.00beta1.
  *
  * The idea is as follows:
@@ -87,7 +88,7 @@ static struct Client* server_list[NN_MAX_SERVER];
  *
  * '\\0' : Because we use '\\0' as end of line.
  *
- * ' '  : Because parse_*() uses this as parameter seperator.
+ * ' '  : Because parse_*() uses this as parameter separator.
  *
  * ':'  : Because parse_server() uses this to detect if a prefix is a
  *        numeric or a name.
@@ -439,11 +440,17 @@ struct Client* find_match_server(char *mask)
  * @param[in] addr IP address to encode.
  * @param[in] count Number of bytes writable to \a buf.
  */
-const char* iptobase64(char* buf, const struct irc_in_addr* addr, unsigned int count)
+const char* iptobase64(char* buf, const struct irc_in_addr* addr, unsigned int count, int v6_ok)
 {
   if (irc_in_addr_is_ipv4(addr)) {
     assert(count >= 6);
-    inttobase64(buf, (htons(addr->in6_16[6]) << 16) | htons(addr->in6_16[7]), 6);
+    inttobase64(buf, (ntohs(addr->in6_16[6]) << 16) | ntohs(addr->in6_16[7]), 6);
+  } else if (!v6_ok) {
+    assert(count >= 6);
+    if (addr->in6_16[0] == htons(0x2002))
+        inttobase64(buf, (ntohs(addr->in6_16[1]) << 16) | ntohs(addr->in6_16[2]), 6);
+    else
+        strcpy(buf, "AAAAAA");
   } else {
     unsigned int max_start, max_zeros, curr_zeros, zero, ii;
     char *output = buf;