irc-dev-ipv6 Mailing List for IRC-Dev ircd development
                
                Brought to you by:
                
                    zolty
                    
                
            
            
        
        
        
    You can subscribe to this list here.
| 2002 | 
          Jan
           | 
        
        
        
        
          Feb
           | 
        
        
        
        
          Mar
           | 
        
        
        
        
          Apr
           | 
        
        
        
        
          May
           | 
        
        
        
        
          Jun
           | 
        
        
        
        
          Jul
           | 
        
        
        
        
          Aug
           | 
        
        
        
        
          Sep
           (49)  | 
        
        
        
        
          Oct
           (6)  | 
        
        
        
        
          Nov
           (5)  | 
        
        
        
        
          Dec
           (2)  | 
        
      
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 | 
          Jan
           (8)  | 
        
        
        
        
          Feb
           (11)  | 
        
        
        
        
          Mar
           | 
        
        
        
        
          Apr
           | 
        
        
        
        
          May
           | 
        
        
        
        
          Jun
           | 
        
        
        
        
          Jul
           (2)  | 
        
        
        
        
          Aug
           | 
        
        
        
        
          Sep
           | 
        
        
        
        
          Oct
           | 
        
        
        
        
          Nov
           | 
        
        
        
        
          Dec
           | 
        
      
| 2004 | 
          Jan
           (1)  | 
        
        
        
        
          Feb
           | 
        
        
        
        
          Mar
           | 
        
        
        
        
          Apr
           | 
        
        
        
        
          May
           | 
        
        
        
        
          Jun
           | 
        
        
        
        
          Jul
           | 
        
        
        
        
          Aug
           | 
        
        
        
        
          Sep
           | 
        
        
        
        
          Oct
           | 
        
        
        
        
          Nov
           | 
        
        
        
        
          Dec
           | 
        
      
| 
     
      
      
      From: ZOLTAN <ZO...@te...> - 2004-01-23 08:54:27
      
     
   | 
Saludos  | 
| 
     
      
      
      From:  <zo...@te...> - 2003-07-30 10:57:27
      
     
   | 
Nas http://www.microsoft.com/downloads/details.aspx?displaylang=3Des&FamilyID= =3D e88cc382-8ce6-4739-97c0-1a52a6f005e4 Advanced Networking Pack para Windows XP es una actualizaci=F3n recomendada para Windows XP SP1. Incluye una nueva versi=F3n de la pila IPv6, un servidor de seguridad IPv6 y una infraestructura de igual a igual. Saludos zoltan  | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-07-08 15:08:19
      
     
   | 
CVSROOT : /cvsroot/irc-dev Module : ipv6 Commit time: 2003-07-08 15:08:18 UTC Log message: IRCD Hispano 07-02 Status: Vendor Tag: vendor Release Tags: release U ipv6/.cvsignore U ipv6/.indent.pro C ipv6/.patches U ipv6/BUGS U ipv6/CAMBIOS2_10_06 U ipv6/CAMBIOS2_10_07 U ipv6/CAMBIOS2_10_H_01 U ipv6/CAMBIOS2_10_H_02 U ipv6/CAMBIOS2_10_H_03 U ipv6/CAMBIOS2_10_H_04 C ipv6/CAMBIOS2_10_H_05 C ipv6/CAMBIOS2_10_H_06 N ipv6/CAMBIOS2_10_H_07 U ipv6/ChangeLog U ipv6/ChangeLog.07 U ipv6/ChangeLog.10 U ipv6/INSTALL U ipv6/LICENCE U ipv6/Makefile.in U ipv6/RELEASE.NOTES U ipv6/configure U ipv6/lazyserver.jcea U ipv6/tener_en_cuenta.jcea C ipv6/todo.jcea U ipv6/config/.cvsignore U ipv6/config/Configure.in U ipv6/config/Makefile.in U ipv6/config/README U ipv6/config/acconfig.h U ipv6/config/acinclude.m4 U ipv6/config/aclocal.m4 C ipv6/config/config-sh.in U ipv6/config/configure U ipv6/config/configure.in U ipv6/config/gen.doc.Makefile U ipv6/config/gen.ircd.Makefile U ipv6/config/install-sh U ipv6/config/parse.none U ipv6/config/setup.h.in U ipv6/config/setup.h.top U ipv6/config/stamp-h.in U ipv6/doc/.cvsignore U ipv6/doc/Authors C ipv6/doc/Configure.help U ipv6/doc/Makefile.in U ipv6/doc/ejemplo.conf U ipv6/doc/irc.1 U ipv6/doc/ircd.8 U ipv6/doc/readme.crules U ipv6/doc/readme.indent U ipv6/doc/readme.who U ipv6/doc/readme.www U ipv6/doc/history/2.4.notes U ipv6/doc/history/2.7-New U ipv6/doc/history/Manual U ipv6/doc/history/README-2.6 U ipv6/doc/history/README.patches U ipv6/doc/history/history.pre24 U ipv6/doc/history/overview.u2.9 U ipv6/include/IPcheck.h U ipv6/include/bsd.h C ipv6/include/channel.h U ipv6/include/class.h U ipv6/include/common.h U ipv6/include/crule.h U ipv6/include/dbuf.h U ipv6/include/fileio.h U ipv6/include/h.h U ipv6/include/hash.h U ipv6/include/ircd.h U ipv6/include/list.h U ipv6/include/m_config.h C ipv6/include/m_watch.h U ipv6/include/map.h U ipv6/include/match.h U ipv6/include/msg.h C ipv6/include/numeric.h U ipv6/include/numnicks.h U ipv6/include/opercmds.h U ipv6/include/packet.h U ipv6/include/parse.h U ipv6/include/patchlevel.h N ipv6/include/persistent_malloc.h C ipv6/include/querycmds.h U ipv6/include/random.h U ipv6/include/res.h U ipv6/include/runmalloc.h U ipv6/include/s_auth.h C ipv6/include/s_bdd.h C ipv6/include/s_bsd.h U ipv6/include/s_conf.h U ipv6/include/s_debug.h U ipv6/include/s_err.h U ipv6/include/s_misc.h U ipv6/include/s_numeric.h U ipv6/include/s_ping.h U ipv6/include/s_serv.h U ipv6/include/s_socks.h C ipv6/include/s_user.h U ipv6/include/send.h U ipv6/include/sprintf_irc.h C ipv6/include/struct.h C ipv6/include/support.h U ipv6/include/sys.h U ipv6/include/userload.h U ipv6/include/version.h U ipv6/include/whocmds.h U ipv6/include/whowas.h U ipv6/ircd/.cvsignore C ipv6/ircd/IPcheck.c C ipv6/ircd/Makefile.in C ipv6/ircd/bsd.c C ipv6/ircd/channel.c U ipv6/ircd/chkconf.c U ipv6/ircd/class.c C ipv6/ircd/common.c U ipv6/ircd/crule.c C ipv6/ircd/dbuf.c U ipv6/ircd/fileio.c U ipv6/ircd/hash.c C ipv6/ircd/ircd.c U ipv6/ircd/list.c C ipv6/ircd/m_config.c C ipv6/ircd/m_watch.c U ipv6/ircd/map.c U ipv6/ircd/match.c U ipv6/ircd/numnicks.c C ipv6/ircd/opercmds.c U ipv6/ircd/packet.c U ipv6/ircd/parse.c N ipv6/ircd/persistent_malloc.c C ipv6/ircd/querycmds.c U ipv6/ircd/random.c C ipv6/ircd/res.c U ipv6/ircd/runmalloc.c C ipv6/ircd/s_auth.c C ipv6/ircd/s_bdd.c C ipv6/ircd/s_bsd.c C ipv6/ircd/s_conf.c C ipv6/ircd/s_debug.c C ipv6/ircd/s_err.c C ipv6/ircd/s_misc.c U ipv6/ircd/s_numeric.c U ipv6/ircd/s_ping.c C ipv6/ircd/s_serv.c C ipv6/ircd/s_socks.c C ipv6/ircd/s_user.c U ipv6/ircd/send.c U ipv6/ircd/sprintf_irc.c C ipv6/ircd/support.c U ipv6/ircd/userload.c U ipv6/ircd/version.c.SH C ipv6/ircd/whocmds.c U ipv6/ircd/whowas.c U ipv6/ircd/crypt/Makefile U ipv6/ircd/crypt/README U ipv6/ircd/crypt/crypter U ipv6/ircd/crypt/mkpasswd.c U ipv6/ircd/crypt/sums U ipv6/ircd/crypt/tea/Makefile U ipv6/ircd/crypt/tea/README U ipv6/ircd/crypt/tea/cifranick.c U ipv6/zlib/.cvsignore U ipv6/zlib/ChangeLog U ipv6/zlib/FAQ U ipv6/zlib/INDEX U ipv6/zlib/Make_vms.com U ipv6/zlib/Makefile U ipv6/zlib/Makefile.in U ipv6/zlib/Makefile.riscos U ipv6/zlib/README U ipv6/zlib/adler32.c U ipv6/zlib/algorithm.txt U ipv6/zlib/compress.c U ipv6/zlib/configure U ipv6/zlib/crc32.c U ipv6/zlib/deflate.c U ipv6/zlib/deflate.h U ipv6/zlib/descrip.mms U ipv6/zlib/example.c U ipv6/zlib/gzio.c U ipv6/zlib/infblock.c U ipv6/zlib/infblock.h U ipv6/zlib/infcodes.c U ipv6/zlib/infcodes.h U ipv6/zlib/inffast.c U ipv6/zlib/inffast.h U ipv6/zlib/inffixed.h U ipv6/zlib/inflate.c U ipv6/zlib/inftrees.c U ipv6/zlib/inftrees.h U ipv6/zlib/infutil.c U ipv6/zlib/infutil.h U ipv6/zlib/maketree.c U ipv6/zlib/minigzip.c U ipv6/zlib/trees.c U ipv6/zlib/trees.h U ipv6/zlib/uncompr.c U ipv6/zlib/zconf.h U ipv6/zlib/zlib.3 U ipv6/zlib/zlib.h U ipv6/zlib/zutil.c U ipv6/zlib/zutil.h U ipv6/zlib/amiga/Makefile.pup U ipv6/zlib/amiga/Makefile.sas U ipv6/zlib/contrib/README.contrib U ipv6/zlib/contrib/visual-basic.txt U ipv6/zlib/contrib/asm386/gvmat32.asm U ipv6/zlib/contrib/asm386/gvmat32c.c U ipv6/zlib/contrib/asm386/mkgvmt32.bat U ipv6/zlib/contrib/asm386/zlibvc.def U ipv6/zlib/contrib/asm386/zlibvc.dsp U ipv6/zlib/contrib/asm386/zlibvc.dsw U ipv6/zlib/contrib/asm586/README.586 U ipv6/zlib/contrib/asm586/match.S U ipv6/zlib/contrib/asm686/README.686 U ipv6/zlib/contrib/asm686/match.S U ipv6/zlib/contrib/delphi/zlib.mak U ipv6/zlib/contrib/delphi/zlibdef.pas U ipv6/zlib/contrib/delphi2/d_zlib.bpr U ipv6/zlib/contrib/delphi2/d_zlib.cpp U ipv6/zlib/contrib/delphi2/readme.txt U ipv6/zlib/contrib/delphi2/zlib.bpg U ipv6/zlib/contrib/delphi2/zlib.bpr U ipv6/zlib/contrib/delphi2/zlib.cpp U ipv6/zlib/contrib/delphi2/zlib.pas U ipv6/zlib/contrib/delphi2/zlib32.bpr U ipv6/zlib/contrib/delphi2/zlib32.cpp U ipv6/zlib/contrib/iostream/test.cpp U ipv6/zlib/contrib/iostream/zfstream.cpp U ipv6/zlib/contrib/iostream/zfstream.h U ipv6/zlib/contrib/iostream2/zstream.h U ipv6/zlib/contrib/iostream2/zstream_test.cpp U ipv6/zlib/contrib/minizip/ChangeLogUnzip U ipv6/zlib/contrib/minizip/Makefile U ipv6/zlib/contrib/minizip/miniunz.c U ipv6/zlib/contrib/minizip/minizip.c U ipv6/zlib/contrib/minizip/readme.txt U ipv6/zlib/contrib/minizip/unzip.c U ipv6/zlib/contrib/minizip/unzip.def U ipv6/zlib/contrib/minizip/unzip.h U ipv6/zlib/contrib/minizip/zip.c U ipv6/zlib/contrib/minizip/zip.def U ipv6/zlib/contrib/minizip/zip.h U ipv6/zlib/contrib/minizip/zlibvc.def U ipv6/zlib/contrib/minizip/zlibvc.dsp U ipv6/zlib/contrib/minizip/zlibvc.dsw U ipv6/zlib/contrib/untgz/Makefile U ipv6/zlib/contrib/untgz/makefile.w32 U ipv6/zlib/contrib/untgz/untgz.c U ipv6/zlib/msdos/Makefile.b32 U ipv6/zlib/msdos/Makefile.bor U ipv6/zlib/msdos/Makefile.dj2 U ipv6/zlib/msdos/Makefile.emx U ipv6/zlib/msdos/Makefile.msc U ipv6/zlib/msdos/Makefile.tc U ipv6/zlib/msdos/Makefile.w32 U ipv6/zlib/msdos/Makefile.wat U ipv6/zlib/msdos/zlib.def U ipv6/zlib/msdos/zlib.rc U ipv6/zlib/nt/Makefile.emx U ipv6/zlib/nt/Makefile.gcc U ipv6/zlib/nt/Makefile.nt U ipv6/zlib/nt/zlib.dnt U ipv6/zlib/os2/Makefile.os2 U ipv6/zlib/os2/zlib.def 39 conflicts created by this import. Use the following command to help the merge: cvs checkout -jvendor:yesterday -jvendor ipv6  | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-02-16 17:43:44
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-02-16 17:43:42 UTC
Modified files:
     CAMBIOS.Ipv6 Ipv6.zoltan include/inet.h include/match.h
     include/patchlevel.h include/support.h ircd/IPcheck.c ircd/ircd.c
     ircd/match.c ircd/numnicks.c ircd/res.c ircd/s_bsd.c
     ircd/s_conf.c ircd/s_misc.c ircd/s_serv.c ircd/s_user.c
Log message:
INET6.22
---------------------- diff included ----------------------
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.21 ipv6/CAMBIOS.Ipv6:1.22
--- ipv6/CAMBIOS.Ipv6:1.21	Sat Feb  8 13:02:53 2003
+++ ipv6/CAMBIOS.Ipv6	Sun Feb 16 09:43:31 2003
@@ -1,3 +1,10 @@
+* 2003/02/16 zo...@ir...          INET6.22
+-----------------------------------------------------------------------
+Adaptacion de CALCULATE_HASH al IPv6, y por lo tanto los clones, throttle,
+son 100% operativos.
+En getsockopt() el IP_OPTIONS esta incompleto con el IPv6, parche facilitado
+por the_butche.
+
 * 2003/02/08 zo...@ir...          INET6.21
 -----------------------------------------------------------------------
 Nueva funcion inetntoa_cptr() para imprimir la ip de tanto users locales
Index: ipv6/Ipv6.zoltan
diff -u ipv6/Ipv6.zoltan:1.17 ipv6/Ipv6.zoltan:1.18
--- ipv6/Ipv6.zoltan:1.17	Sat Feb  8 13:02:53 2003
+++ ipv6/Ipv6.zoltan	Sun Feb 16 09:43:31 2003
@@ -3,16 +3,16 @@
 
 Pasos para el desarrollo del soporte IPv6 para el ircd de ESNET-Hispano:
 
-	A) Adaptar el CALCULATE_HASH de IPcheck.c a IPv6 y activar todos los IP*().
-
-	B) Revisar la resolucion DNS, en principio usaremos el RFC antiguo, es decir
+	A) Revisar la resolucion DNS, en principio usaremos el RFC antiguo, es decir
 	   ip6.int para la inversa y registro AAAA para la directa.
 	   Mas tarde migrar a ip6.arpa para inversa y registro A6 para directa.
+	   Ya estamos usando ip6.arpa, y al parecer solo resuelve a los usuarios con IPv6
+	   y al ipv4 se pone tonto.
 
-	C) Comprobar el bind() de los sockets teniendo activado y desactivado la opcion
+	B) Comprobar el bind() de los sockets teniendo activado y desactivado la opcion
 	   VIRTUALHOST del config.
 
-	D) Comprobar todo lo que afecta al fichero match.c (Comparacion de ip's) y el correcto
+	C) Comprobar todo lo que afecta al fichero match.c (Comparacion de ip's) y el correcto
 	   funcionamiento de las cosas que utilizan match*(). Ejemplos:
 	     1) Hostmask O lines.
 	     2) Hostmask C y N lines.
@@ -21,11 +21,14 @@
 	     5) Hostmask G lines.
 	     6) Bans, Silences, etc..
 
-	E) Para las IP's Virtuales, preguntar a jcea para elegir opcion adecuada. Opciones:
+	D) Para las IP's Virtuales, preguntar a jcea para elegir opcion adecuada. Opciones:
 	     1) Ip virtual corta para ipv4 y larga para ipv6
 	     2) Igual tamanio para ipv4 y ipv6.
 	   Teniendo en cuenta que en IPv4 se usan 6 caracteres mas 6 caracteres de entropia,
 	   para ipv6 serian 22 caracteres mas ¿6? ¿11? caracteres de entropia (Hacer calculos).
+
+	E) Comprobar el /CONNECT manual y el connect automatico, al parecer no chuta bien, que
+	   se hace un lio (Segun el debug.log).
 
 	F) Compilar en SunOs, Solaris, HP-UX, etc..
 
Index: ipv6/include/inet.h
diff -u ipv6/include/inet.h:1.10 ipv6/include/inet.h:1.11
--- ipv6/include/inet.h:1.10	Sat Feb  8 13:02:53 2003
+++ ipv6/include/inet.h	Sun Feb 16 09:43:32 2003
@@ -65,6 +65,10 @@
 
 #if defined(__FreeBSD__)
 #undef  IN6_IS_ADDR_V4MAPPED
+#endif
+
+/* ::ffff:a.b.c.d */
+#ifndef IN6_IS_ADDR_V4MAPPED
 #define IN6_IS_ADDR_V4MAPPED(a) \
         (((const unsigned int *) (a))[0] == 0              \
          && ((const unsigned int *) (a))[1] == 0          \
@@ -119,7 +123,7 @@
 
 #define WHOSTENTP(x) (x)
 
-/* Localhost loopback */
+/* Localhost loopback 127.0.0.1 */
 #ifndef IN_LOOPBACKNET
 #define IN_LOOPBACKNET  0x7f	/* 127 */
 #endif
@@ -129,7 +133,7 @@
 #define INADDR_ANY 0x00000000
 #endif
 
-/* Indica un error 255.255.255.255 */
+/* 255.255.255.255 */
 #ifndef INADDR_NONE
 #define INADDR_NONE 0xffffffff
 #endif
@@ -163,7 +167,7 @@
 /*
  * IP mas larga posible
  */
-#define IPLEN 46
+#define IPLEN IP6LEN
 
 
 #endif /* INET_H */
Index: ipv6/include/match.h
diff -u ipv6/include/match.h:1.5 ipv6/include/match.h:1.6
--- ipv6/include/match.h:1.5	Wed Jan 29 12:14:55 2003
+++ ipv6/include/match.h	Sun Feb 16 09:43:32 2003
@@ -15,12 +15,12 @@
 
 struct in_mask {
 #ifdef INET6
-  /* still IPv4 */
+  /* No hay estructuras IPv6 */
   struct in_addr bits;
   struct in_addr mask;
 #else
-  struct IN_ADDR bits;
-  struct IN_ADDR mask;
+  struct in_addr bits;
+  struct in_addr mask;
 #endif
   int fall;
 };
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.22 ipv6/include/patchlevel.h:1.23
--- ipv6/include/patchlevel.h:1.22	Sat Feb  8 13:02:53 2003
+++ ipv6/include/patchlevel.h	Sun Feb 16 09:43:32 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.21"
+		"+INET6.22"
 
 /*
  * Deliberate empty lines
Index: ipv6/include/support.h
diff -u ipv6/include/support.h:1.7 ipv6/include/support.h:1.8
--- ipv6/include/support.h:1.7	Sat Feb  8 13:02:54 2003
+++ ipv6/include/support.h	Sun Feb 16 09:43:32 2003
@@ -16,7 +16,7 @@
 #endif
 extern void dumpcore(const char *pattern, ...)
     __attribute__ ((format(printf, 1, 2)));
-extern char *inetntoa(struct IN_ADDR);
+extern char *inetntoa(struct IN_ADDR in);
 extern char *inetntoa_cptr(aClient *cptr);
 #ifdef INET6
 extern int inetpton(int af, const char *src, void *dst);
Index: ipv6/ircd/IPcheck.c
diff -u ipv6/ircd/IPcheck.c:1.7 ipv6/ircd/IPcheck.c:1.8
--- ipv6/ircd/IPcheck.c:1.7	Wed Jan 29 12:14:56 2003
+++ ipv6/ircd/IPcheck.c	Sun Feb 16 09:43:32 2003
@@ -39,7 +39,7 @@
 #include "support.h"
 #endif
 
-RCSTAG_CC("$Id: IPcheck.c,v 1.7 2003/01/29 20:14:56 zolty Exp $");
+RCSTAG_CC("$Id: IPcheck.c,v 1.8 2003/02/16 17:43:32 zolty Exp $");
 
 extern aClient me;
 extern time_t now;
@@ -98,23 +98,38 @@
  * Calculate a `hash' value between 0 and HASHTABSIZE, from the internet address `IN_ADDR'.
  * Apply it immedeately to the table, effectively hiding the table itself.
  */
-#ifdef INET61
+#ifdef INET6
 /*
  * CALCULATE_HASH for IPv6 address
  */
-/* FIXME-ZOLTAN: Adaptar el hash al ipv6 */
-#define CALCULATE_HASH(IN_ADDR) \
+#define CALCULATE_HASH(in6_addr) \
   struct IPregistry_vector *hash; \
-  do { register char *ip; \
-       memcpy(&ip, (IN_ADDR).S_ADDR, sizeof(struct IN_ADDR)); \
-       hash = &IPregistry_hashtable[ip]; } while(0)
-#else
+  if (IN6_IS_ADDR_V4MAPPED(&in6_addr)) \
+  { \
+    unsigned int ip = (in6_addr).s6_addr32[3]; \
+    hash = &IPregistry_hashtable[((ip >> 14) + (ip >> 7) + ip) & (HASHTABSIZE - 1)]; \
+  } \
+  else \
+  { \
+    unsigned int ip; \
+    unsigned int res; \
+    ip = (in6_addr).s6_addr32[0]; \
+    res = ((ip >> 14) + (ip >> 7) + ip); \
+    ip = (in6_addr).s6_addr32[1]; \
+    res = (res | ((ip >> 14) + (ip >> 7) + ip)); \
+    ip = (in6_addr).s6_addr32[2]; \
+    res = (res | ((ip >> 14) + (ip >> 7) + ip)); \
+    ip = (in6_addr).s6_addr32[3]; \
+    res = (res | ((ip >> 14) + (ip >> 7) + ip)); \
+    hash = &IPregistry_hashtable[res & (HASHTABSIZE - 1)]; \
+  }
+#else /* !INET6 */
 /*
  * CALCULATE_HASH for IPv4 address
  */
-#define CALCULATE_HASH(IN_ADDR) \
+#define CALCULATE_HASH(in_addr) \
   struct IPregistry_vector *hash; \
-  do { register unsigned int ip = (IN_ADDR).S_ADDR; \
+  do { register unsigned int ip = (in_addr).s_addr; \
        hash = &IPregistry_hashtable[((ip >> 14) + (ip >> 7) + ip) & (HASHTABSIZE - 1)]; } while(0)
 #endif /* INET6 */
 
Index: ipv6/ircd/ircd.c
diff -u ipv6/ircd/ircd.c:1.6 ipv6/ircd/ircd.c:1.7
--- ipv6/ircd/ircd.c:1.6	Wed Jan 29 12:14:56 2003
+++ ipv6/ircd/ircd.c	Sun Feb 16 09:43:32 2003
@@ -51,6 +51,7 @@
 #ifdef VIRTUAL_HOST
 #include <sys/socket.h>		/* Needed for AF_INET on some OS */
 #endif
+
 #include <assert.h>
 
 #include "h.h"
@@ -77,7 +78,7 @@
 #include "IPcheck.h"
 #include "s_bdd.h"
 
-RCSTAG_CC("$Id: ircd.c,v 1.6 2003/01/29 20:14:56 zolty Exp $");
+RCSTAG_CC("$Id: ircd.c,v 1.7 2003/02/16 17:43:32 zolty Exp $");
 
 extern void init_counters(void);
 
Index: ipv6/ircd/match.c
diff -u ipv6/ircd/match.c:1.3 ipv6/ircd/match.c:1.4
--- ipv6/ircd/match.c:1.3	Sat Sep 14 15:44:51 2002
+++ ipv6/ircd/match.c	Sun Feb 16 09:43:32 2003
@@ -24,7 +24,7 @@
 #include "match.h"
 #include "ircd.h"
 
-RCSTAG_CC("$Id: match.c,v 1.3 2002/09/14 22:44:51 zolty Exp $");
+RCSTAG_CC("$Id: match.c,v 1.4 2003/02/16 17:43:32 zolty Exp $");
 
 /*
  * mmatch()
@@ -1007,12 +1007,12 @@
   while (*m++);
 
 #ifdef INET6
-  /* still IPv4 */
+  /* No hay estructuras IPv6 */
   imask->bits.s_addr = htonl(bits);
   imask->mask.s_addr = htonl(filt);
 #else
-  imask->bits.S_ADDR = htonl(bits);
-  imask->mask.S_ADDR = htonl(filt);
+  imask->bits.s_addr = htonl(bits);
+  imask->mask.s_addr = htonl(filt);
 #endif
   imask->fall = unco;
   return ((bits & ~filt) ? -1 : 0);
Index: ipv6/ircd/numnicks.c
diff -u ipv6/ircd/numnicks.c:1.3 ipv6/ircd/numnicks.c:1.4
--- ipv6/ircd/numnicks.c:1.3	Sat Feb  8 13:02:54 2003
+++ ipv6/ircd/numnicks.c	Sun Feb 16 09:43:32 2003
@@ -16,8 +16,9 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: numnicks.c,v 1.3 2003/02/08 21:02:54 zolty Exp $
+ * $Id: numnicks.c,v 1.4 2003/02/16 17:43:32 zolty Exp $
  */
+
 #include "sys.h"
 #include "numnicks.h"
 #include "inet.h"
@@ -34,7 +35,7 @@
 
 #include <assert.h>
 
-RCSTAG_CC("$Id: numnicks.c,v 1.3 2003/02/08 21:02:54 zolty Exp $");
+RCSTAG_CC("$Id: numnicks.c,v 1.4 2003/02/16 17:43:32 zolty Exp $");
 
 /*
  * Numeric nicks are new as of version ircu2.10.00beta1.
Index: ipv6/ircd/res.c
diff -u ipv6/ircd/res.c:1.9 ipv6/ircd/res.c:1.10
--- ipv6/ircd/res.c:1.9	Fri Feb  7 11:36:38 2003
+++ ipv6/ircd/res.c	Sun Feb 16 09:43:32 2003
@@ -42,7 +42,7 @@
 #include "common.h"
 #include "sprintf_irc.h"
 
-RCSTAG_CC("$Id: res.c,v 1.9 2003/02/07 19:36:38 zolty Exp $");
+RCSTAG_CC("$Id: res.c,v 1.10 2003/02/16 17:43:32 zolty Exp $");
 
 #define MAXPACKET	1024
 
@@ -227,11 +227,14 @@
   {
     _res.nscount = 1;
 #ifdef INET6
-    /* still IPv4 */
+    /* No hay estructuras IPv6 */
+/* FIXME-ZOLTAN
+    _res.nsaddr_list[0].sin_addr.s_addr = inet_addr("127.0.0.1");
+*/
     _res.nsaddr_list[0].sin_addr.s_addr =
 	inet_pton(AF_INET, "127.0.0.1", &_res.nsaddr_list[0].sin_addr.s_addr);
 #else
-    _res.nsaddr_list[0].SIN_ADDR.S_ADDR = inet_addr("127.0.0.1");
+    _res.nsaddr_list[0].sin_addr.s_addr = inet_addr("127.0.0.1");
 #endif
   }
 #ifdef DEBUGMODE
@@ -240,10 +243,10 @@
 
   alarm(2);
 #ifdef INET6
-  /* still IPv4 */
+  /* No hay estructuras IPv6 */
   fd = socket(AF_INET, SOCK_DGRAM, 0);
 #else
-  fd = socket(AFINET, SOCK_DGRAM, 0);
+  fd = socket(AF_INET, SOCK_DGRAM, 0);
 #endif
   alarm(0);
   if (fd < 0)
@@ -256,10 +259,10 @@
        */
       alarm(2);
 #ifdef INET6
-      /* still IPv4 */
+      /* No hay estructuras IPv6 */
       if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
 #else
-      if ((fd = socket(AFINET, SOCK_DGRAM, 0)) < 0)
+      if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
 #endif
       {
 	alarm(0);
@@ -467,10 +470,10 @@
   for (i = 0; i < max; ++i)
   {
 #ifdef INET6
-    /* still IPv4 */
+    /* No hay estructuras IPv6 */
     _res.nsaddr_list[i].sin_family = AF_INET;
 #else
-    _res.nsaddr_list[i].SIN_FAMILY = AFINET;
+    _res.nsaddr_list[i].sin_family = AF_INET;
 #endif
     if (sendto(resfd, msg, len, 0, (struct SOCKADDR *)&(_res.nsaddr_list[i]),
 	sizeof(struct SOCKADDR)) == len)
@@ -526,6 +529,7 @@
 {
   aCache *cp;
 
+  Debug((DEBUG_DNS, "Resolver: gethost_byname_type %s", name));
   reinfo.re_na_look++;
   if ((cp = find_cache_name(name)))
     return (struct hostent *)&(cp->he);
@@ -549,6 +553,7 @@
 {
   aCache *cp;
 
+  Debug((DEBUG_DNS, "Resolver: gethost_byaddr %s", inetntoa(*addr)));
   reinfo.re_nu_look++;
   if ((cp = find_cache_number(NULL, addr)))
     return &cp->he.h;
@@ -965,10 +970,10 @@
   Reg2 ResRQ *rptr = NULL;
   aCache *cp = NULL;
 #ifdef INET6
-  /* still IPv4 */
+  /* No hay estructuras IPv6 */
   struct sockaddr_in sin;
 #else
-  struct SOCKADDR_IN sin;
+  struct sockaddr_in sin;
 #endif
   int a, max;
   size_t rc, len = sizeof(sin);
@@ -1012,14 +1017,15 @@
   for (a = 0; a < max; a++)
   {
 #ifdef INET6
-    /* still IPv4 */
+    /* No hay estructuras IPv6 */
     if (!_res.nsaddr_list[a].sin_addr.s_addr ||
 	!memcmp((char *)&sin.sin_addr, (char *)&_res.nsaddr_list[a].sin_addr,
 	sizeof(struct in_addr)))
 #else
-    if (!_res.nsaddr_list[a].SIN_ADDR.S_ADDR ||
-	!memcmp((char *)&sin.SIN_ADDR, (char *)&_res.nsaddr_list[a].SIN_ADDR,
-	sizeof(struct IN_ADDR)))
+    /* No hay estructuras IPv6 */
+    if (!_res.nsaddr_list[a].sin_addr.s_addr ||
+	!memcmp((char *)&sin.sin_addr, (char *)&_res.nsaddr_list[a].sin_addr,
+	sizeof(struct in_addr)))
 #endif
       break;
   }
Index: ipv6/ircd/s_bsd.c
diff -u ipv6/ircd/s_bsd.c:1.10 ipv6/ircd/s_bsd.c:1.11
--- ipv6/ircd/s_bsd.c:1.10	Fri Feb  7 11:36:38 2003
+++ ipv6/ircd/s_bsd.c	Sun Feb 16 09:43:32 2003
@@ -105,7 +105,7 @@
 #include "msg.h"
 #endif
 
-RCSTAG_CC("$Id: s_bsd.c,v 1.10 2003/02/07 19:36:38 zolty Exp $");
+RCSTAG_CC("$Id: s_bsd.c,v 1.11 2003/02/16 17:43:32 zolty Exp $");
 
 #define IP_LOOKUP_START ":%s NOTICE IP_LOOKUP :*** Looking up your hostname...\r\n"
 #define IP_LOOKUP_OK ":%s NOTICE IP_LOOKUP :*** Found your hostname.\r\n"
@@ -767,7 +767,7 @@
 ** Gestion Distribuida de Clones
 */
 
-#if defined(BDD) && defined(BDD_CLONES) && !defined(INET6)
+#if defined(BDD) && defined(BDD_CLONES)
 
   if (hp)
   {
@@ -1331,6 +1331,10 @@
   if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (OPT_TYPE *)&opt, sizeof(opt)) < 0)
     report_error("setsockopt(SO_SNDBUF) %s: %s", cptr);
 #endif
+#ifndef INET6
+/* 
+ * En getsockopt() el IP_OPTIONS esta incompleto con el IPv6 
+ */
 #if defined(IP_OPTIONS) && defined(IPPROTO_IP)
   {
     char *s = readbuf, *t = readbuf + sizeof(readbuf) / 2;
@@ -1348,6 +1352,7 @@
       report_error("setsockopt(IP_OPTIONS) %s: %s", cptr);
   }
 #endif
+#endif /* !INET6 */
 }
 
 int get_sockerr(aClient *cptr)
@@ -1536,7 +1541,6 @@
    * If it is a connection to a user port and if the site has been throttled,
    * reject the user.
    */
-#ifndef INET6
   if (IPcheck_local_connect(acptr) == -1 && IsUserPort(acptr))
   {
     ircstp->is_ref++;
@@ -1544,7 +1548,7 @@
 	"Your host is trying to (re)connect too fast -- throttled");
     return NULL;
   }
-#endif /* INET6 */
+
 #ifdef PROXY_PROTECTION
   if (IsUserPort(acptr))
   {
Index: ipv6/ircd/s_conf.c
diff -u ipv6/ircd/s_conf.c:1.7 ipv6/ircd/s_conf.c:1.8
--- ipv6/ircd/s_conf.c:1.7	Wed Jan 29 12:14:56 2003
+++ ipv6/ircd/s_conf.c	Sun Feb 16 09:43:32 2003
@@ -74,7 +74,7 @@
 #include "hash.h"
 #include "fileio.h"
 
-RCSTAG_CC("$Id: s_conf.c,v 1.7 2003/01/29 20:14:56 zolty Exp $");
+RCSTAG_CC("$Id: s_conf.c,v 1.8 2003/02/16 17:43:32 zolty Exp $");
 
 static int check_time_interval(char *, char *);
 static int lookup_confhost(aConfItem *);
@@ -288,10 +288,8 @@
       {
 	/* Refuse connections when there are already <digit> clients connected with the same IP number */
 	unsigned short nr = *aconf->passwd - '0';
-#ifndef INET6
 	if (IPcheck_nr(cptr) > nr)
 	  return ACR_TOO_MANY_FROM_IP;	/* Already got nr with that ip# */
-#endif
       }
 #ifdef USEONE
       else if (!strcmp(aconf->passwd, "ONE"))
Index: ipv6/ircd/s_misc.c
diff -u ipv6/ircd/s_misc.c:1.8 ipv6/ircd/s_misc.c:1.9
--- ipv6/ircd/s_misc.c:1.8	Sat Feb  8 13:02:55 2003
+++ ipv6/ircd/s_misc.c	Sun Feb 16 09:43:32 2003
@@ -65,7 +65,7 @@
 
 #include <assert.h>
 
-RCSTAG_CC("$Id: s_misc.c,v 1.8 2003/02/08 21:02:55 zolty Exp $");
+RCSTAG_CC("$Id: s_misc.c,v 1.9 2003/02/16 17:43:32 zolty Exp $");
 
 static void exit_one_client(aClient *, char *);
 
@@ -634,10 +634,8 @@
     Count_unknowndisconnects(nrof);
 
   /* Update IPregistry */
-#ifndef INET6
   if (IsIPChecked(bcptr))
     IPcheck_disconnect(bcptr);
-#endif
 
   /* 
    * Remove from serv->client_list
Index: ipv6/ircd/s_serv.c
diff -u ipv6/ircd/s_serv.c:1.7 ipv6/ircd/s_serv.c:1.8
--- ipv6/ircd/s_serv.c:1.7	Sat Feb  8 13:02:55 2003
+++ ipv6/ircd/s_serv.c	Sun Feb 16 09:43:32 2003
@@ -57,7 +57,7 @@
 #include "IPcheck.h"
 
 
-RCSTAG_CC("$Id: s_serv.c,v 1.7 2003/02/08 21:02:55 zolty Exp $");
+RCSTAG_CC("$Id: s_serv.c,v 1.8 2003/02/16 17:43:32 zolty Exp $");
 
 static int exit_new_server(aClient *cptr, aClient *sptr,
     char *host, time_t timestamp, char *fmt, ...)
@@ -861,9 +861,7 @@
     tx_num_serie_dbs(cptr);
 #endif
 
-#ifndef INET6
     IPcheck_connect_fail(cptr);	/* Don't charge this IP# for connecting */
-#endif
   }
 
   det_confs_butmask(cptr,
Index: ipv6/ircd/s_user.c
diff -u ipv6/ircd/s_user.c:1.13 ipv6/ircd/s_user.c:1.14
--- ipv6/ircd/s_user.c:1.13	Sat Feb  8 13:02:55 2003
+++ ipv6/ircd/s_user.c	Sun Feb 16 09:43:32 2003
@@ -69,7 +69,7 @@
 #include "IPcheck.h"
 #include "class.h"
 
-RCSTAG_CC("$Id: s_user.c,v 1.13 2003/02/08 21:02:55 zolty Exp $");
+RCSTAG_CC("$Id: s_user.c,v 1.14 2003/02/16 17:43:32 zolty Exp $");
 
 /* *INDENT-OFF* */
 
@@ -423,9 +423,7 @@
 	  sendto_op_mask(SNO_TOOMANY, "Too many connections in class for %s.",
 	      sptr->sockhost);
 	}
-#ifndef INET6
 	IPcheck_connect_fail(sptr);
-#endif
 	ircstp->is_ref++;
 	{
 	  char *msg =
@@ -454,9 +452,7 @@
       case ACR_ALREADY_AUTHORIZED:
 	/* Can this ever happen? */
       case ACR_BAD_SOCKET:
-#ifndef INET6
 	IPcheck_connect_fail(sptr);
-#endif
 	return exit_client(cptr, sptr, &me, "Unknown error -- Try again");
     }
     if (IsUnixSocket(sptr))
@@ -486,9 +482,7 @@
     {
       ircstp->is_ref++;
       sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
-#ifndef INET6
       IPcheck_connect_fail(sptr);
-#endif
       return exit_client(cptr, sptr, &me, "Bad Password");
     }
 
@@ -659,9 +653,7 @@
     sendbufto_op_mask(SNO_CONNEXIT);
 #endif /* SNO_CONNEXIT_IP */
 #endif /* ALLOW_SNO_CONNEXIT */
-#ifndef INET6
     IPcheck_connect_succeeded(sptr);
-#endif
   }
   else
     /* if (IsServer(cptr)) */
@@ -694,12 +686,10 @@
     for (acptr = user->server; acptr != &me; acptr = acptr->serv->up)
       if (IsBurst(acptr) || Protocol(acptr) < 10)
 	break;
-#ifndef INET6
     if (IPcheck_remote_connect(sptr, user->host, (acptr != &me)) == -1)
       /* We ran out of bits to count this */
       return exit_client(cptr, sptr, &me,
 	  "More then 255 connections from this IP number");
-#endif
   }
 #ifdef NO_PROTOCOL9		/* Use this when all servers are 2.10 (but test it first) --Run */
 
@@ -1188,9 +1178,7 @@
    */
   if (IsUnknown(acptr) && MyConnect(acptr))
   {
-#ifndef INET6
     IPcheck_connect_fail(acptr);
-#endif
     exit_client(cptr, acptr, &me, "Overridden by other sign on");
     goto nickkilldone;
   }
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From:  <zo...@te...> - 2003-02-15 22:16:10
      
     
   | 
Al parecer el DNS reverso funciona correctamente s=F3lo si est=E1 con la opci=F3n de no chequear proxys/socks4, lo posteo aqu=ED para tener constancia del problema. Un saludo zoltan  | 
| 
     
      
      
      From:  <zo...@te...> - 2003-02-05 12:30:34
      
     
   | 
>=20
> struct in6_addr {
>         union {
>                 u_int8_t   __u6_addr8[16];
>                 u_int16_t  __u6_addr16[8];
>                 u_int32_t  __u6_addr32[4];
>         } __u6_addr;                    /* 128-bit IP6 address */
> };
>=20
Al final har=E9 lo siguiente...
En la estructura del Client, hay un campo para almacenar la ip de los
usuarios locales y remotos:
 struct in_addr ip;
Y lo cambiar=E9 a...
 struct irc_inaddr ip;
Cuya estructura ser=E1 lo siguiente:
Struct irc_inaddr
{
  union
  {
    struct in_addr sin;   =20
#ifdef INET6
    struct in6_addr sin6;=20
#else
    u_int32_t irc6_addr[4];  /* 4 partes de 32 bits cada una =3D> 128 =
bits
:) */
#endif
  } sins;
};
De esta forma, los nodos IPv4 (que muchas m=E1quinas no tienen ni las
librerias IPv6) puedan almacenar la ip en formato binario que reciba de
los usuarios remotos partiendo de la ip en formato base64 del comando
NICK de servidor.
Todos los nodos, tengan IPv6 activado o no, han de mandar 6 caracteres
si son ip's de IPv4 o ip's mapeadas IPv6-to-IPv4 (ejemplo
::ffff:80.59.255.83, que el ircd la trunca y muestra 80.59.255.83). Y 24
(6+6+6+6, 6 por cada 32 bits) si son ip's de IPv6.
He encontrado un parche para el ircu de undernet que lo hacian de esta
forma, de esta manera el comando /USERIP funcionar=E1 correctamente, asi
como las ip's virtuales y otros comandos que hagan uso de la ip en
formato num=E9rico (hexadecimal).
Este fin de semanaa los pondr=E9 en el CVS. Tambien meter=E9 parches =
para la
resoluci=F3n DNS, que meter=E9 ya de entrada el dominio "ip6.arpa" para =
las
inversas ya que me han delegado una.
Un saludo
zoltan
 | 
| 
     
      
      
      From: Daniel  <fre...@un...> - 2003-02-03 09:55:20
      
     
   | 
El s=E1b, 01-02-2003 a las 09:35, Toni Garc=EDa escribi=F3:
> El "if def" esta pensado para que los nodos que no compilan con INET6,
> que habr=E1 nodos con sistema operativo tan viejo que no tendr=E1 ni
> librer=EDas de IPv6 como el sunos de gaia, puedan tener algo para
> almacenar el valor. Dudo en un "unsigned long" o un "char *". =BFCual
> seria la mejor soluci=F3n?
>=20
Pues habria que crear un tipo de datos nuevo que almacene los 128 bits,
por ejemplo, haciendo una union como hacen en las propias librerias de
IPv6, el problema esta en que no todos los compiladores de C usan el
mismo rango para los int, ya que algunos usan 32 bits, y otros usan 16
bits.
La creacion de un entero de 128 bits se podria hacer bien con un array
de enteros que posteriormente serian usados como un tipo de 128 mediante
casts (para no complicarse la existencia) o haciendo como hacen las
propias librerias IPv6 (para hacerlo mas correcto):
(Sacado de las propias librerias de IPv6)
struct in6_addr {
        union {
                u_int8_t   __u6_addr8[16];
                u_int16_t  __u6_addr16[8];
                u_int32_t  __u6_addr32[4];
        } __u6_addr;                    /* 128-bit IP6 address */
};
Por cierto, creo que en el configure se detectan los tama=F1os de los
tipos de datos del compilador, hay que verlo.
S2
--=20
Daniel Fern=E1ndez <fre...@un...>
 | 
| 
     
      
      
      From: Ruben C. <ru...@ar...> - 2003-02-01 11:12:29
      
     
   | 
Toni Garc=EDa wrote: >> Como luego la manipulacion de los hosts se hace a base de=20 >>examinar la cadena (todo el tema de match.c, por ejemplo), >>para mi que se deja un char * y asi ya luego no hay que >>hacer conversiones. >> >=20 >=20 > Cuando se tiene que imprimir en formato humano una ip se hace un > "inetntoa(sptr->ip);" Hablo de manipularla, no de imprimirla :P Saludos, NiKoLaS  | 
| 
     
      
      
      From:  <zo...@te...> - 2003-02-01 11:07:56
      
     
   | 
> > Como luego la manipulacion de los hosts se hace a base de > examinar la cadena (todo el tema de match.c, por ejemplo), > para mi que se deja un char * y asi ya luego no hay que > hacer conversiones. > Cuando se tiene que imprimir en formato humano una ip se hace un "inetntoa(sptr->ip);" Un saludo zoltan  | 
| 
     
      
      
      From: Ruben C. <ni...@te...> - 2003-02-01 10:27:49
      
     
   | 
Hola, > El "if def" esta pensado para que los nodos que no compilan con INET6, > que habrá nodos con sistema operativo tan viejo que no tendrá ni > librerías de IPv6 como el sunos de gaia, puedan tener algo para > almacenar el valor. Dudo en un "unsigned long" o un "char *". ¿Cual > seria la mejor solución? Como luego la manipulacion de los hosts se hace a base de examinar la cadena (todo el tema de match.c, por ejemplo), para mi que se deja un char * y asi ya luego no hay que hacer conversiones. Saludos, NiKoLaS  | 
| 
     
      
      
      From:  <zo...@te...> - 2003-02-01 08:43:54
      
     
   | 
> struct in_addr sin; =20 > #ifdef INET6 > struct in6_addr sin6;=20 > #else > unsigned long ip6; > =F3 > char *ip6; =20 Quiero decir unsigned long ip6[0]; unsigned long ip6[1]; unsigned long ip6[2]; unsigned long ip6[3]; Porque un int o un long en una maquina de 32 bits, es de 32 bits y como la ipv6 tiene 128.... :)  | 
| 
     
      
      
      From:  <zo...@te...> - 2003-02-01 08:35:40
      
     
   | 
Como todos sabemos, en el comando NICK de servidor en protocolo P10 se
incluye la IP en formato base64, bien, hay un problema que es lo
siguiente y habr=EDa que pensar en como resolverlo ya que de todas las
implementaciones existentes de IPv6 no hay ninguna en el ircu de
undernet o en cualquiera de sus variantes como el ircd universal de
Carlo Wood.
La IP en formato base64 es un valor de 6 caracteres si se trata de una
ip IPv4 (32 bits), pero para IPv6 (128 bits) hace falta 22 caracteres
para garantizar la reversibilidad. Esto es muy necesario para las IPS
virtuales que se calculan a partir de la ip num=E9rica, clones a la IP,
glines a la IP, respuesta del USERIP, etc.. (OJO no es lo mismo el
hostname que la IP).
Se podr=EDa hacer que un nodo mande 22 caracteres si el usuario est=E1 =
por
una conexi=F3n de IPv6 y 6 en el resto. Y un nodo, aunque sea solo IPv4,
ha de poderse parsear y guardar.
Actualmente, el ircd manda con lo siguiente...=20
  inttobase64(ip_base64, ntohl(sptr->ip.s_addr), 6)
El nthol es para pasar a formato base2, o sea si mi ip es 80.59.255.83,
seria 1010011111111111110111010000 y el inttobase64 es para pasar a
base64 para hacerlo mas corto, en solo 6 caracteres en vez de 32.
Y cuando recibe, hace lo siguiente=20
  sptr->ip.s_addr =3D htonl(base64toint(parv[parc - 3]));
El parv[parc - 3] se refiere a capturar el 3 par=E1metro a partir de la
derecha, que en P10 es la ip en formato base64.
Hab=E9is visto que la info esta en sptr->ip, siendo sptr un struct =
Client,
ahora mismo lo tengo en...
#ifdef INET6
  struct in6_addr ip;
#else
  struct in_addr ip;
#endif
Para resolver el problema del IP-Base64, la soluci=F3n que meti no es la
m=E1s adecuada, porque un nodo IPv4 ha de poder almacenar IPv6 de =
usuarios
remotos e viceversa. La mas adecuada seria lo siguiente...
Definir un nuevo struct, llamado "irc_inaddr" (se usa en el hybrid de
EFNet) para sustituir a struct "in_addr" y que estar=EDa definido de la
siguiente forma:
struct irc_inaddr =20
{
  union
  {
    struct in_addr sin;   =20
#ifdef INET6
    struct in6_addr sin6;=20
#else
    unsigned long ip6;
    =F3
    char *ip6;  =20
#endif
  } sins;
};
El "if def" esta pensado para que los nodos que no compilan con INET6,
que habr=E1 nodos con sistema operativo tan viejo que no tendr=E1 ni
librer=EDas de IPv6 como el sunos de gaia, puedan tener algo para
almacenar el valor. Dudo en un "unsigned long" o un "char *". =BFCual
seria la mejor soluci=F3n?
=BFComentarios? =BFOpiniones?
Un saludo
zoltan
=20
 | 
| 
     
      
      
      From: ZOLTAN <ZO...@te...> - 2003-01-31 14:27:36
      
     
   | 
> CVSROOT : /cvsroot/irc-dev > Module : ipv6 > Commit time: 2003-01-31 14:10:05 UTC He creado un branch, el "INET6_19", que se quedara lo que hay ahora mismo, porque en el branch development (el main) voy a hacer numerosos cambios en el codigo :) Para bajar la version funcional hay que usar cvs co -r INET6_19 Un saludo zoltan  | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-31 14:10:06
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-31 14:10:05 UTC
Modified files:
     CAMBIOS.Ipv6 include/inet.h include/patchlevel.h ircd/common.c
     ircd/support.c
Log message:
INET6.19
---------------------- diff included ----------------------
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.18 ipv6/CAMBIOS.Ipv6:1.19
--- ipv6/CAMBIOS.Ipv6:1.18	Fri Jan 31 04:02:44 2003
+++ ipv6/CAMBIOS.Ipv6	Fri Jan 31 06:09:54 2003
@@ -1,3 +1,9 @@
+* 2003/01/31 zoltan y thebutche          INET6.19
+-----------------------------------------------------------------------
+Common.c: Se añade el : en el macro de NTL_IRCIP. (zoltan)
+Solucionado un warning de compilacion en FREEBSD. (thebutche)
+
+
 * 2003/01/31 the...@in...       INET6.18
 -----------------------------------------------------------------------
 Compila en FREEBSD sin problemas :)
Index: ipv6/include/inet.h
diff -u ipv6/include/inet.h:1.7 ipv6/include/inet.h:1.8
--- ipv6/include/inet.h:1.7	Mon Sep 16 07:07:32 2002
+++ ipv6/include/inet.h	Fri Jan 31 06:09:54 2003
@@ -24,6 +24,9 @@
 #include <arpa/nameser.h>
 #include <netdb.h>
 #include <netinet/in.h>
+#if defined(__FreeBSD__)
+#include <netinet6/in6.h>
+#endif
 #include <sys/socket.h>
 
 
@@ -48,6 +51,14 @@
 
 /* Delimitador de campos de las lineas del ircd.conf */
 #define IRCDCONF_DELIMITER '%'
+
+#if defined(__FreeBSD__)
+#undef  IN6_IS_ADDR_V4MAPPED
+#define IN6_IS_ADDR_V4MAPPED(a) \
+        (((const unsigned int *) (a))[0] == 0              \
+         && ((const unsigned int *) (a))[1] == 0          \
+         && ((const unsigned int *) (a))[2] == htonl (0xffff))
+#endif
 
 /* Localhost loopback */
 #ifndef IN6_IS_ADDR_LOOPBACK
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.19 ipv6/include/patchlevel.h:1.20
--- ipv6/include/patchlevel.h:1.19	Fri Jan 31 04:02:45 2003
+++ ipv6/include/patchlevel.h	Fri Jan 31 06:09:54 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.18"
+		"+INET6.19"
 
 /*
  * Deliberate empty lines
Index: ipv6/ircd/common.c
diff -u ipv6/ircd/common.c:1.2 ipv6/ircd/common.c:1.3
--- ipv6/ircd/common.c:1.2	Mon Sep 30 08:02:00 2002
+++ ipv6/ircd/common.c	Fri Jan 31 06:09:54 2003
@@ -369,7 +369,7 @@
   markString(NTL_IRCHN, "-_.");	/* Some DNS might allow '_' per RFC 1033 ! */
 
   moveMacro(NTL_DIGIT, NTL_IRCIP);
-  markString(NTL_IRCIP, ".");
+  markString(NTL_IRCIP, ".:");
 
   moveMacro(NTL_DIGIT | NTL_ALPHA, NTL_IRCNK);
   markString(NTL_IRCNK, "-_`");
Index: ipv6/ircd/support.c
diff -u ipv6/ircd/support.c:1.6 ipv6/ircd/support.c:1.7
--- ipv6/ircd/support.c:1.6	Mon Sep 16 08:47:29 2002
+++ ipv6/ircd/support.c	Fri Jan 31 06:09:55 2003
@@ -27,6 +27,7 @@
 #endif
 #include <stdarg.h>
 #include <signal.h>
+#include "inet.h"
 #include "h.h"
 #include "send.h"
 #include "ircd.h"
@@ -36,7 +37,7 @@
 #include "common.h"
 #include "fileio.h"
 
-RCSTAG_CC("$Id: support.c,v 1.6 2002/09/16 15:47:29 zolty Exp $");
+RCSTAG_CC("$Id: support.c,v 1.7 2003/01/31 14:09:55 zolty Exp $");
 
 #ifndef HAVE_STRTOKEN
 /*
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-31 12:02:58
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-31 12:02:56 UTC
Modified files:
     CAMBIOS.Ipv6 include/patchlevel.h ircd/res.c
Log message:
INET6.18
---------------------- diff included ----------------------
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.17 ipv6/CAMBIOS.Ipv6:1.18
--- ipv6/CAMBIOS.Ipv6:1.17	Wed Jan 29 12:14:55 2003
+++ ipv6/CAMBIOS.Ipv6	Fri Jan 31 04:02:44 2003
@@ -1,3 +1,7 @@
+* 2003/01/31 the...@in...       INET6.18
+-----------------------------------------------------------------------
+Compila en FREEBSD sin problemas :)
+
 * 2003/01/29 zo...@ir...          INET6.17
 -----------------------------------------------------------------------
 Make depend.
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.18 ipv6/include/patchlevel.h:1.19
--- ipv6/include/patchlevel.h:1.18	Wed Jan 29 12:14:55 2003
+++ ipv6/include/patchlevel.h	Fri Jan 31 04:02:45 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.17"
+		"+INET6.18"
 
 /*
  * Deliberate empty lines
Index: ipv6/ircd/res.c
diff -u ipv6/ircd/res.c:1.7 ipv6/ircd/res.c:1.8
--- ipv6/ircd/res.c:1.7	Wed Jan 29 12:14:56 2003
+++ ipv6/ircd/res.c	Fri Jan 31 04:02:45 2003
@@ -16,6 +16,9 @@
 #include <arpa/inet.h>
 #include <arpa/nameser.h>
 #include <resolv.h>
+#if defined(__FreeBSD__)
+typedef struct __res_state *res_state;
+#endif
 /* dn_skipname is really an internal function,
    we shouldn't be using it in res.c */
 #if !defined(dn_skipname) && !defined(__dn_skipname)
@@ -39,7 +42,7 @@
 #include "common.h"
 #include "sprintf_irc.h"
 
-RCSTAG_CC("$Id: res.c,v 1.7 2003/01/29 20:14:56 zolty Exp $");
+RCSTAG_CC("$Id: res.c,v 1.8 2003/01/31 12:02:45 zolty Exp $");
 
 #define MAXPACKET	1024
 
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-31 11:39:25
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-31 11:39:24 UTC
Modified files:
     Ipv6.zoltan
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ipv6/Ipv6.zoltan
diff -u ipv6/Ipv6.zoltan:1.15 ipv6/Ipv6.zoltan:1.16
--- ipv6/Ipv6.zoltan:1.15	Wed Jan 29 10:55:23 2003
+++ ipv6/Ipv6.zoltan	Fri Jan 31 03:39:14 2003
@@ -1,9 +1,10 @@
-11 Septiembre 2002 (Actualizacion 29 de Enero 2003)
+11 Septiembre 2002 (Actualizacion 31 de Enero 2003)
 ---------------------------------------------------
 
 Pasos para el desarrollo del soporte IPv6 para el ircd de ESNET-Hispano:
 
-	A) Mirar si se cambia o no al sistema de hybrid.
+	A) Mirar si se cambia o no al sistema de hybrid. Se refiere a un irc_inaddr y
+	   dentro un "union { in_addr; in6_addr };"
 
 	B) Adaptar el CALCULATE_HASH de IPcheck.c a IPv6 y activar todos los IP*().
 
@@ -35,6 +36,8 @@
 	   Teniendo en cuenta que en IPv4 se usan 6 caracteres mas 6 caracteres de entropia,
 	   para ipv6 serian 22 caracteres mas ¿6? ¿11? caracteres de entropia (Hacer calculos).
 
+	H) No se compila en FREEBSD, tanto IPv6 activado como desactivado. Bug reportado
+	   por Lord y Thebutche.
 
 
 2002-2003 IRC-DEV TEAM
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-29 20:15:19
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-29 20:15:07 UTC
Modified files:
     .patches CAMBIOS.Ipv6 CAMBIOS2_10_H_06 todo.jcea
     include/channel.h include/match.h include/numeric.h
     include/patchlevel.h include/res.h include/s_bdd.h
     include/s_bsd.h include/s_conf.h include/struct.h
     include/support.h ircd/IPcheck.c ircd/Makefile.in ircd/bsd.c
     ircd/channel.c ircd/chkconf.c ircd/ircd.c ircd/opercmds.c
     ircd/querycmds.c ircd/res.c ircd/s_auth.c ircd/s_bdd.c
     ircd/s_bsd.c ircd/s_conf.c ircd/s_debug.c ircd/s_err.c
     ircd/s_misc.c ircd/s_ping.c ircd/s_socks.c ircd/whocmds.c
Log message:
INET 6.17
---------------------- diff included ----------------------
Index: ipv6/.patches
diff -u ipv6/.patches:1.5 ipv6/.patches:1.6
--- ipv6/.patches:1.5	Fri Jan  3 16:27:31 2003
+++ ipv6/.patches	Wed Jan 29 12:14:55 2003
@@ -1 +1 @@
-u2.10.H.06.35
+u2.10.H.06.44
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.16 ipv6/CAMBIOS.Ipv6:1.17
--- ipv6/CAMBIOS.Ipv6:1.16	Fri Jan  3 16:48:42 2003
+++ ipv6/CAMBIOS.Ipv6	Wed Jan 29 12:14:55 2003
@@ -1,3 +1,9 @@
+* 2003/01/29 zo...@ir...          INET6.17
+-----------------------------------------------------------------------
+Make depend.
+Restauro includes que habia quitado.
+Actualizacion IRCD hasta el u2.10.H.06.44.
+
 * 2003/01/04 zo...@ir...          INET6.16
 -----------------------------------------------------------------------
 Se corrigen unos bugs introducidos en INET6.14.
Index: ipv6/CAMBIOS2_10_H_06
diff -u ipv6/CAMBIOS2_10_H_06:1.3 ipv6/CAMBIOS2_10_H_06:1.4
--- ipv6/CAMBIOS2_10_H_06:1.3	Fri Jan  3 16:27:31 2003
+++ ipv6/CAMBIOS2_10_H_06	Wed Jan 29 12:14:55 2003
@@ -1,4 +1,77 @@
-$Id: CAMBIOS2_10_H_06,v 1.3 2003/01/04 00:27:31 zolty Exp $
+$Id: CAMBIOS2_10_H_06,v 1.4 2003/01/29 20:14:55 zolty Exp $
+
+* 2003/01/21 ni...@ir...     (u2.10.H.06.44)              FEATURE
+  -----------------------------------------------------------------------
+  En el numeric 252 (ircops, helpers y bots online) cambiamos el orden
+  en que se envian los contadores de manera que el primero en aparecer
+  sea el de helpers, por ser mas significativo que el de ircops.
+
+* 2003/01/16 ni...@ir...     (u2.10.H.06.43)              FEATURE
+  -----------------------------------------------------------------------
+  En el tiempo de expiracion de las g-lines se incluye informacion con
+  la zona horaria.
+
+* 2003/01/09 ni...@ir...     (u2.10.H.06.42)                  FIX
+  -----------------------------------------------------------------------
+  Compilando *SIN* soporte BDD se muestra el resumen de modos del numeric
+  379.
+
+* 2003/01/09 jc...@ar...            (u2.10.H.06.41)                  FIX
+  -----------------------------------------------------------------------
+  Corrige algunos problemas para permitir compilar el servidor sin
+  soporte de BDD.
+
+* 2003/01/08 jc...@ar...            (CH2 - u2.10.H.06.40)        FEATURE
+  -----------------------------------------------------------------------
+  Si llega un modo '+r' para un canal a traves de la red (burst o cambio
+  de modo normal), lo ignoramos.
+
+  Cuando un canal pierde '+r', pierde tambien '+S' y '+A'.
+
+* 2003/01/08 jc...@ar...            (CH1 - u2.10.H.06.39)        FEATURE
+  -----------------------------------------------------------------------
+  Define el modo "+r" de canal.
+
+  Cuando se elimina un registro de canal registrado, y dicho canal
+  esta vacio, lo eliminamos de memoria. Si no esta vacio, enviamos
+  el "-r".
+
+  Cuando se recibe un registro de un canal registrado, que no lo estaba:
+
+  - Si el canal no existe, lo crea y lo deja vacio.
+
+  - Si el canal existe, propaga "+r" del canal a los usuarios locales.
+
+  Si un canal se queda vacio pero es "+r", no lo elimina.
+
+* 2003/01/08 jc...@ar...            (DB100 - u2.10.H.06.38)      FEATURE
+  -----------------------------------------------------------------------
+  A la hora de normalizar las claves de la BDD, permite lógica distinta
+  segun la tabla de que se trate.
+
+  Incluyo logica de normalizacion de nombres de canales.
+
+  Soporte del canal 'c', de registro de canales.
+
+  Ya hay cierto soporte antiguo para el canal 'c', que tengo que evaluar
+  si sigue siendo correcto o no. Muevo esa logica a la tabla 'z' hasta
+  poder revisarla despacito y con buena letra.
+
+* 2003/01/08 jc...@ar...            (DB99 - u2.10.H.06.37)       FEATURE
+  -----------------------------------------------------------------------
+  Se incluye logica que permite la ejecucion de codigo arbitrario cuando
+  se da de alta o se elimina un registro en la BDD. Esto permite que
+  cualquier cambio en la BDD tenga efecto de forma inmediata, no cuando
+  se use dicho registro.
+
+  Cuando se modifica la BDD, se indica la fuente de la modificacion, que
+  puede ser un nodo externo o el propio server (tomando los datos del
+  disco duro).
+
+* 2003/01/07 ni...@ir...     (u2.10.H.06.36)                  FIX
+  -----------------------------------------------------------------------
+  Ajuste en el contador de helpers. En exit_client eliminamos el flag de
+  helper para no volverlo a restar en exit_one_client.
 
 * 2003/01/02 jc...@ar...            (u2.10.H.06.35)              CLEANUP
   -----------------------------------------------------------------------
Index: ipv6/include/channel.h
diff -u ipv6/include/channel.h:1.4 ipv6/include/channel.h:1.5
--- ipv6/include/channel.h:1.4	Sat Nov  9 06:52:54 2002
+++ ipv6/include/channel.h	Wed Jan 29 12:14:55 2003
@@ -92,7 +92,7 @@
 #define RestrictedChannel(x)    ((x) && ((x)->mode.mode & MODE_REGNICKS))
 #define AutoOpChannel(x)        ((x) && ((x)->mode.mode & MODE_AUTOOP))
 #define SecureOpChannel(x)      ((x) && ((x)->mode.mode & MODE_SECUREOP))
-#define MsgOnlyRegChannel(x)	((x) && ((x)->mode.mode & MODE_MSGNONREG))
+#define MsgOnlyRegChannel(x)    ((x) && ((x)->mode.mode & MODE_MSGNONREG))
 
 extern int m_botmode(aClient *cptr, aClient *sptr, int parc, char *parv[]);
 
@@ -196,6 +196,8 @@
 extern char *pretty_mask(char *mask);
 extern void del_invite(aClient *cptr, aChannel *chptr);
 extern void list_next_channels(aClient *cptr, int nr);
+extern void sub1_from_channel(aChannel *chptr);
+extern aChannel *get_channel(aClient *sptr, char *chname, int flag);
 extern int m_join(aClient *cptr, aClient *sptr, int parc, char *parv[]);
 extern int m_create(aClient *cptr, aClient *sptr, int parc, char *parv[]);
 extern int m_destruct(aClient *cptr, aClient *sptr, int parc, char *parv[]);
Index: ipv6/include/match.h
diff -u ipv6/include/match.h:1.4 ipv6/include/match.h:1.5
--- ipv6/include/match.h:1.4	Sat Sep 14 15:44:51 2002
+++ ipv6/include/match.h	Wed Jan 29 12:14:55 2003
@@ -4,6 +4,10 @@
 /*=============================================================================
  * System headers used by this header file
  */
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include "inet.h"
 
 /*=============================================================================
  * Structures
Index: ipv6/include/numeric.h
diff -u ipv6/include/numeric.h:1.4 ipv6/include/numeric.h:1.5
--- ipv6/include/numeric.h:1.4	Tue Dec 17 08:16:50 2002
+++ ipv6/include/numeric.h	Wed Jan 29 12:14:55 2003
@@ -16,7 +16,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: numeric.h,v 1.4 2002/12/17 16:16:50 zolty Exp $
+ * $Id: numeric.h,v 1.5 2003/01/29 20:14:55 zolty Exp $
  */
 
 #ifndef NUMERIC_H
@@ -309,9 +309,9 @@
 #if defined(BDD)
 #define RPL_WHOISHOST	     378	/* Hispano extension */
 /*      RPL_BANEXPIRED       378          Aircd */
-#define RPL_WHOISMODES	     379	/* Hispano extension */
 /*      RPL_KICKLINKED       379          Aircd */
 #endif
+#define RPL_WHOISMODES       379	/* Hispano extension */
 /*      RPL_BANLINKED        380          Aircd */
 #define RPL_YOUREOPER	     381
 #define RPL_REHASHING	     382
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.17 ipv6/include/patchlevel.h:1.18
--- ipv6/include/patchlevel.h:1.17	Fri Jan  3 16:48:42 2003
+++ ipv6/include/patchlevel.h	Wed Jan 29 12:14:55 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.16"
+		"+INET6.17"
 
 /*
  * Deliberate empty lines
Index: ipv6/include/res.h
diff -u ipv6/include/res.h:1.3 ipv6/include/res.h:1.4
--- ipv6/include/res.h:1.3	Thu Sep 12 12:02:14 2002
+++ ipv6/include/res.h	Wed Jan 29 12:14:55 2003
@@ -1,6 +1,8 @@
 #ifndef RES_H
 #define RES_H
 
+#include <netinet/in.h>
+#include <netdb.h>
 #ifdef HPUX
 #ifndef h_errno
 extern int h_errno;
Index: ipv6/include/s_bdd.h
diff -u ipv6/include/s_bdd.h:1.1.1.1 ipv6/include/s_bdd.h:1.2
--- ipv6/include/s_bdd.h:1.1.1.1	Wed Sep 11 03:09:08 2002
+++ ipv6/include/s_bdd.h	Wed Jan 29 12:14:55 2003
@@ -33,6 +33,7 @@
 #define BDD_BOTSDB        'b'
 #define BDD_IPVIRTUALDB   'v'
 #define BDD_IPVIRTUAL2DB  'w'
+#define BDD_CHANDB_OLD    'z'
 
 /* Para las features de los pseudoBOTS */
 #define BDD_CHANSERV      "ChanServ"
Index: ipv6/include/s_bsd.h
diff -u ipv6/include/s_bsd.h:1.6 ipv6/include/s_bsd.h:1.7
--- ipv6/include/s_bsd.h:1.6	Tue Dec 17 08:16:50 2002
+++ ipv6/include/s_bsd.h	Wed Jan 29 12:14:55 2003
@@ -1,6 +1,7 @@
 #ifndef S_BSD_H
 #define S_BSD_H
 
+#include <netdb.h>
 #include "s_conf.h"
 
 /*=============================================================================
Index: ipv6/include/s_conf.h
diff -u ipv6/include/s_conf.h:1.3 ipv6/include/s_conf.h:1.4
--- ipv6/include/s_conf.h:1.3	Thu Sep 12 12:02:14 2002
+++ ipv6/include/s_conf.h	Wed Jan 29 12:14:56 2003
@@ -3,6 +3,8 @@
 
 #include "inet.h"
 #include "list.h"
+#include <netinet/in.h>
+#include <netdb.h>
 
 /*=============================================================================
  * General defines
Index: ipv6/include/struct.h
diff -u ipv6/include/struct.h:1.4 ipv6/include/struct.h:1.5
--- ipv6/include/struct.h:1.4	Tue Dec 17 08:16:50 2002
+++ ipv6/include/struct.h	Wed Jan 29 12:14:56 2003
@@ -22,6 +22,7 @@
 #ifndef STRUCT_H
 #define STRUCT_H
 
+#include <netinet/in.h>
 #include "inet.h"		/* Needed for struct IN_ADDR */
 #include "whowas.h"		/* Needed for whowas struct */
 
Index: ipv6/include/support.h
diff -u ipv6/include/support.h:1.5 ipv6/include/support.h:1.6
--- ipv6/include/support.h:1.5	Mon Sep 16 05:22:13 2002
+++ ipv6/include/support.h	Wed Jan 29 12:14:56 2003
@@ -1,6 +1,8 @@
 #ifndef SUPPORT_H
 #define SUPPORT_H
 
+#include <netinet/in.h>
+#include "inet.h"
 
 /*=============================================================================
  * Proto types
Index: ipv6/ircd/IPcheck.c
diff -u ipv6/ircd/IPcheck.c:1.6 ipv6/ircd/IPcheck.c:1.7
--- ipv6/ircd/IPcheck.c:1.6	Tue Dec 17 02:40:58 2002
+++ ipv6/ircd/IPcheck.c	Wed Jan 29 12:14:56 2003
@@ -20,6 +20,8 @@
 /* This file should be edited in a window with a width of 141 characters */
 
 #include "sys.h"
+#include <netinet/in.h>
+#include "inet.h"
 #include "h.h"
 #include "IPcheck.h"
 #include "querycmds.h"
@@ -37,7 +39,7 @@
 #include "support.h"
 #endif
 
-RCSTAG_CC("$Id: IPcheck.c,v 1.6 2002/12/17 10:40:58 zolty Exp $");
+RCSTAG_CC("$Id: IPcheck.c,v 1.7 2003/01/29 20:14:56 zolty Exp $");
 
 extern aClient me;
 extern time_t now;
Index: ipv6/ircd/Makefile.in
diff -u ipv6/ircd/Makefile.in:1.3 ipv6/ircd/Makefile.in:1.4
--- ipv6/ircd/Makefile.in:1.3	Thu Sep 12 12:18:59 2002
+++ ipv6/ircd/Makefile.in	Wed Jan 29 12:14:56 2003
@@ -137,12 +137,12 @@
 	  ${CHMOD} 700 ${DBPATH} ; \
 	  ${CHOWN} ${IRC_UID} ${DBPATH} ; \
 	  ${CHGRP} ${IRC_GID} ${DBPATH} ; \
-	  for i in b i n o v w; \
+	  for i in b c i n o v w; \
 	  do \
 		${TOUCH} ${DBPATH}/tabla.$$i ; \
 	  done; \
 	  ${TOUCH} ${DBPATH}/hashes ; \
-	  for i in a c d e f g h j k l m p q r s t u x y z ; \
+	  for i in a d e f g h j k l m p q r s t u x y z ; \
 	  do \
 		${RM} -f ${DBPATH}/tabla.$$i ; \
 		${TOUCH} ${DBPATH}/tabla.$$i ; \
@@ -227,328 +227,337 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-IPcheck.o: IPcheck.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/IPcheck.h ../include/querycmds.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_user.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
-  ../include/send.h ../include/s_bdd.h ../include/support.h
-bsd.o: bsd.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/list.h ../include/ircd.h \
-  ../include/bsd.h
-channel.o: channel.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/channel.h ../include/list.h ../include/parse.h \
-  ../include/send.h ../include/s_err.h ../include/numeric.h \
-  ../include/ircd.h ../include/common.h ../include/s_bdd.h \
-  ../include/match.h ../include/hash.h ../include/s_serv.h \
-  ../include/s_misc.h ../include/s_user.h ../include/s_conf.h \
-  ../include/s_bsd.h ../include/msg.h ../include/support.h \
-  ../include/numnicks.h ../include/sprintf_irc.h ../include/querycmds.h
-class.o: class.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/class.h \
-  ../include/s_conf.h ../include/list.h ../include/s_serv.h \
-  ../include/send.h ../include/s_err.h ../include/numeric.h \
-  ../include/ircd.h
+IPcheck.o: IPcheck.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/inet.h \
+ ../include/h.h ../include/s_debug.h ../include/IPcheck.h \
+ ../include/querycmds.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_user.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/send.h ../include/s_bdd.h ../include/support.h
+bsd.o: bsd.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/inet.h \
+ ../include/h.h ../include/s_debug.h ../include/struct.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/ircd.h ../include/bsd.h
+channel.o: channel.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/channel.h ../include/list.h ../include/parse.h \
+ ../include/send.h ../include/s_err.h ../include/numeric.h \
+ ../include/ircd.h ../include/common.h ../include/s_bdd.h \
+ ../include/match.h ../include/hash.h ../include/s_serv.h \
+ ../include/s_misc.h ../include/s_user.h ../include/s_conf.h \
+ ../include/s_bsd.h ../include/msg.h ../include/support.h \
+ ../include/numnicks.h ../include/sprintf_irc.h ../include/querycmds.h
+class.o: class.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/class.h ../include/s_conf.h ../include/list.h \
+ ../include/s_serv.h ../include/send.h ../include/s_err.h \
+ ../include/numeric.h ../include/ircd.h
 common.o: common.c ../include/common.h ../include/sys.h \
-  ../config/config.h ../config/setup.h ../include/runmalloc.h
-crule.o: crule.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
-  ../include/ircd.h ../include/match.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/list.h ../include/common.h \
-  ../include/crule.h
-dbuf.o: dbuf.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/common.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/s_serv.h ../include/list.h ../include/send.h
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h
+crule.o: crule.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_serv.h ../include/ircd.h ../include/match.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/common.h ../include/crule.h
+dbuf.o: dbuf.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/common.h ../include/struct.h \
+ ../include/inet.h ../include/whowas.h ../include/dbuf.h \
+ ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h ../include/list.h \
+ ../include/send.h
 fileio.o: fileio.c ../include/fileio.h ../include/runmalloc.h
-ircd.o: ircd.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/res.h ../include/inet.h ../include/list.h \
-  ../include/struct.h ../include/whowas.h ../include/dbuf.h \
-  ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h ../include/send.h \
-  ../include/ircd.h ../include/s_conf.h ../include/class.h \
-  ../include/s_misc.h ../include/parse.h ../include/match.h \
-  ../include/s_bsd.h ../include/crule.h ../include/userload.h \
-  ../include/numeric.h ../include/hash.h ../include/bsd.h \
-  ../include/version.h ../include/numnicks.h ../include/IPcheck.h \
-  ../include/s_bdd.h
-list.o: list.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/numeric.h \
-  ../include/send.h ../include/s_conf.h ../include/list.h \
-  ../include/class.h ../include/match.h ../include/ircd.h \
-  ../include/s_serv.h ../include/support.h ../include/s_misc.h \
-  ../include/s_bsd.h ../include/res.h ../include/common.h \
-  ../include/s_user.h ../include/opercmds.h ../include/m_watch.h \
-  ../include/hash.h
-map.o: map.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/numeric.h \
-  ../include/send.h ../include/match.h ../include/list.h \
-  ../include/s_err.h ../include/ircd.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/s_misc.h ../include/querycmds.h \
-  ../include/map.h ../include/numnicks.h
-match.o: match.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
-  ../include/match.h ../include/ircd.h
+ircd.o: ircd.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/inet.h ../include/res.h \
+ ../include/list.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
+ ../include/send.h ../include/ircd.h ../include/s_conf.h \
+ ../include/class.h ../include/s_misc.h ../include/parse.h \
+ ../include/match.h ../include/s_bsd.h ../include/crule.h \
+ ../include/userload.h ../include/numeric.h ../include/hash.h \
+ ../include/bsd.h ../include/version.h ../include/numnicks.h \
+ ../include/IPcheck.h ../include/s_bdd.h
+list.o: list.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/numeric.h ../include/send.h ../include/s_conf.h \
+ ../include/list.h ../include/class.h ../include/match.h \
+ ../include/ircd.h ../include/s_serv.h ../include/support.h \
+ ../include/s_misc.h ../include/s_bsd.h ../include/res.h \
+ ../include/common.h ../include/s_user.h ../include/opercmds.h \
+ ../include/m_watch.h ../include/hash.h
+map.o: map.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/numeric.h ../include/send.h ../include/match.h \
+ ../include/list.h ../include/s_err.h ../include/ircd.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/s_misc.h \
+ ../include/querycmds.h ../include/map.h ../include/numnicks.h
+match.o: match.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/common.h ../include/match.h ../include/ircd.h
 numnicks.o: numnicks.c ../include/numnicks.h ../include/sys.h \
-  ../config/config.h ../config/setup.h ../include/runmalloc.h \
-  ../include/h.h ../include/s_debug.h ../include/s_serv.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
-  ../include/ircd.h ../include/s_misc.h ../include/match.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h
-opercmds.o: opercmds.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/opercmds.h ../include/struct.h \
-  ../include/inet.h ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h \
-  ../zlib/zconf.h ../include/ircd.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/list.h ../include/send.h \
-  ../include/s_err.h ../include/numeric.h ../include/match.h \
-  ../include/s_misc.h ../include/class.h ../include/s_bdd.h \
-  ../include/s_user.h ../include/common.h ../include/msg.h \
-  ../include/sprintf_irc.h ../include/userload.h ../include/parse.h \
-  ../include/numnicks.h ../include/crule.h ../include/version.h \
-  ../include/support.h ../include/s_serv.h ../include/hash.h
-packet.o: packet.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_misc.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
-  ../include/ircd.h ../include/msg.h ../include/parse.h ../include/send.h \
-  ../include/packet.h ../include/s_serv.h
-parse.o: parse.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
-  ../include/send.h ../include/parse.h ../include/common.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
-  ../include/msg.h ../include/s_user.h ../include/channel.h \
-  ../include/s_ping.h ../include/res.h ../include/map.h \
-  ../include/m_watch.h ../include/s_bdd.h ../include/m_config.h \
-  ../include/hash.h ../include/numeric.h ../include/ircd.h \
-  ../include/s_misc.h ../include/s_numeric.h ../include/numnicks.h \
-  ../include/opercmds.h ../include/querycmds.h ../include/whocmds.h
-querycmds.o: querycmds.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/parse.h ../include/send.h ../include/s_err.h \
-  ../include/numeric.h ../include/ircd.h ../include/s_user.h \
-  ../include/version.h ../include/s_bsd.h ../include/s_conf.h \
-  ../include/list.h ../include/s_misc.h ../include/match.h \
-  ../include/s_serv.h ../include/msg.h ../include/channel.h \
-  ../include/numnicks.h ../include/userload.h ../include/support.h \
-  ../include/querycmds.h
-random.o: random.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/random.h
-res.o: res.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/res.h ../include/inet.h ../include/list.h \
-  ../include/struct.h ../include/whowas.h ../include/dbuf.h \
-  ../zlib/zlib.h ../zlib/zconf.h ../include/numeric.h ../include/send.h \
-  ../include/s_err.h ../include/s_misc.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/ircd.h ../include/s_ping.h \
-  ../include/support.h ../include/common.h ../include/sprintf_irc.h
-runmalloc.o: runmalloc.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h
-s_auth.o: s_auth.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/res.h ../include/inet.h ../include/list.h \
-  ../include/struct.h ../include/whowas.h ../include/dbuf.h \
-  ../zlib/zlib.h ../zlib/zconf.h ../include/common.h ../include/send.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/s_misc.h \
-  ../include/s_serv.h ../include/support.h ../include/ircd.h \
-  ../include/s_auth.h ../include/sprintf_irc.h
-s_bsd.o: s_bsd.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/res.h ../include/inet.h ../include/list.h \
-  ../include/struct.h ../include/whowas.h ../include/dbuf.h \
-  ../zlib/zlib.h ../zlib/zconf.h ../include/s_bsd.h ../include/s_conf.h \
-  ../include/s_serv.h ../include/numeric.h ../include/send.h \
-  ../include/s_bdd.h ../include/m_config.h ../include/s_misc.h \
-  ../include/hash.h ../include/s_err.h ../include/ircd.h \
-  ../include/support.h ../include/s_auth.h ../include/class.h \
-  ../include/packet.h ../include/s_ping.h ../include/channel.h \
-  ../include/version.h ../include/parse.h ../include/common.h \
-  ../include/bsd.h ../include/numnicks.h ../include/s_user.h \
-  ../include/sprintf_irc.h ../include/querycmds.h ../include/IPcheck.h \
-  ../include/msg.h
-s_conf.o: s_conf.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
-  ../include/opercmds.h ../include/numeric.h ../include/send.h \
-  ../include/s_conf.h ../include/list.h ../include/class.h \
-  ../include/s_misc.h ../include/match.h ../include/common.h \
-  ../include/s_err.h ../include/s_bsd.h ../include/ircd.h \
-  ../include/crule.h ../include/res.h ../include/s_bdd.h \
-  ../include/support.h ../include/parse.h ../include/numnicks.h \
-  ../include/sprintf_irc.h ../include/IPcheck.h ../include/hash.h \
-  ../include/fileio.h
-s_debug.o: s_debug.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/numeric.h ../include/hash.h ../include/s_serv.h \
-  ../include/send.h ../include/s_conf.h ../include/list.h \
-  ../include/class.h ../include/ircd.h ../include/s_bsd.h \
-  ../include/bsd.h ../include/res.h ../include/channel.h \
-  ../include/numnicks.h
-s_err.o: s_err.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/numeric.h ../include/s_err.h ../include/sprintf_irc.h \
-  ../include/m_watch.h
-s_misc.o: s_misc.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
-  ../include/numeric.h ../include/send.h ../include/s_conf.h \
-  ../include/list.h ../include/s_misc.h ../include/common.h \
-  ../include/match.h ../include/hash.h ../include/s_bsd.h \
-  ../include/res.h ../include/ircd.h ../include/s_ping.h \
-  ../include/channel.h ../include/s_err.h ../include/support.h \
-  ../include/userload.h ../include/parse.h ../include/s_user.h \
-  ../include/numnicks.h ../include/sprintf_irc.h ../include/querycmds.h \
-  ../include/IPcheck.h ../include/m_watch.h
-s_numeric.o: s_numeric.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/s_serv.h ../include/s_bsd.h ../include/s_conf.h \
-  ../include/list.h ../include/send.h ../include/support.h \
-  ../include/parse.h ../include/numeric.h ../include/channel.h \
-  ../include/ircd.h ../include/hash.h ../include/numnicks.h \
-  ../include/s_numeric.h
-s_ping.o: s_ping.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/send.h \
-  ../include/s_conf.h ../include/list.h ../include/match.h \
-  ../include/res.h ../include/s_bsd.h ../include/s_serv.h \
-  ../include/ircd.h ../include/s_ping.h ../include/support.h \
-  ../include/numeric.h ../include/s_user.h ../include/s_err.h \
-  ../include/common.h ../include/numnicks.h
-s_serv.o: s_serv.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/ircd.h \
-  ../include/s_serv.h ../include/s_misc.h ../include/sprintf_irc.h \
-  ../include/send.h ../include/s_err.h ../include/numeric.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
-  ../include/hash.h ../include/common.h ../include/s_bdd.h \
-  ../include/msg.h ../include/m_config.h ../include/match.h \
-  ../include/crule.h ../include/parse.h ../include/numnicks.h \
-  ../include/userload.h ../include/s_user.h ../include/channel.h \
-  ../include/querycmds.h ../include/IPcheck.h
-s_user.o: s_user.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
-  ../include/s_serv.h ../include/numeric.h ../include/send.h \
-  ../include/s_conf.h ../include/list.h ../include/s_misc.h \
-  ../include/match.h ../include/hash.h ../include/s_bsd.h \
-  ../include/s_err.h ../include/parse.h ../include/m_watch.h \
-  ../include/s_bdd.h ../include/ircd.h ../include/s_user.h \
-  ../include/support.h ../include/channel.h ../include/random.h \
-  ../include/version.h ../include/msg.h ../include/userload.h \
-  ../include/numnicks.h ../include/sprintf_irc.h ../include/querycmds.h \
-  ../include/IPcheck.h ../include/class.h
-send.o: send.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_bsd.h \
-  ../include/s_conf.h ../include/list.h ../include/s_serv.h \
-  ../include/send.h ../include/s_misc.h ../include/common.h \
-  ../include/match.h ../include/ircd.h ../include/channel.h \
-  ../include/bsd.h ../include/class.h ../include/s_user.h \
-  ../include/sprintf_irc.h
-sprintf_irc.o: sprintf_irc.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/sprintf_irc.h
-support.o: support.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/send.h ../include/ircd.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/inet.h \
-  ../include/list.h ../include/support.h ../include/sprintf_irc.h \
-  ../include/common.h ../include/fileio.h
-userload.o: userload.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/send.h ../include/s_misc.h ../include/userload.h \
-  ../include/ircd.h ../include/numnicks.h ../include/s_serv.h \
-  ../include/querycmds.h
-whocmds.o: whocmds.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/common.h ../include/s_serv.h ../include/numeric.h \
-  ../include/send.h ../include/s_conf.h ../include/list.h \
-  ../include/s_misc.h ../include/match.h ../include/hash.h \
-  ../include/s_bsd.h ../include/s_err.h ../include/parse.h \
-  ../include/ircd.h ../include/s_user.h ../include/support.h \
-  ../include/channel.h ../include/random.h ../include/version.h \
-  ../include/msg.h ../include/userload.h ../include/numnicks.h \
-  ../include/sprintf_irc.h ../include/querycmds.h ../include/IPcheck.h
-whowas.o: whowas.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/common.h ../include/h.h \
-  ../include/s_debug.h ../include/struct.h ../include/inet.h \
-  ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
-  ../include/numeric.h ../include/send.h ../include/s_misc.h \
-  ../include/s_err.h ../include/ircd.h ../include/list.h \
-  ../include/s_user.h ../include/support.h
-s_socks.o: s_socks.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/res.h ../include/inet.h \
-  ../include/list.h ../include/struct.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
-  ../include/send.h ../include/s_bsd.h ../include/s_conf.h \
-  ../include/s_misc.h ../include/support.h ../include/ircd.h \
-  ../include/s_socks.h ../include/sprintf_irc.h ../include/hash.h \
-  ../include/s_serv.h
-s_bdd.o: s_bdd.c ../include/sys.h ../config/config.h ../config/setup.h \
-  ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/ircd.h \
-  ../include/s_serv.h ../include/s_misc.h ../include/sprintf_irc.h \
-  ../include/send.h ../include/s_err.h ../include/numeric.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
-  ../include/hash.h ../include/common.h ../include/match.h \
-  ../include/crule.h ../include/parse.h ../include/numnicks.h \
-  ../include/userload.h ../include/s_user.h ../include/channel.h \
-  ../include/querycmds.h ../include/IPcheck.h ../include/s_bdd.h \
-  ../include/msg.h ../include/support.h
-m_config.o: m_config.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/common.h ../include/ircd.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
-  ../include/msg.h ../include/s_conf.h ../include/list.h \
-  ../include/m_config.h ../include/send.h
-m_watch.o: m_watch.c ../include/sys.h ../config/config.h \
-  ../config/setup.h ../include/runmalloc.h ../include/h.h \
-  ../include/s_debug.h ../include/hash.h ../include/s_serv.h \
-  ../include/struct.h ../include/inet.h ../include/whowas.h \
-  ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/ircd.h \
-  ../include/list.h ../include/msg.h ../include/numeric.h \
-  ../include/s_bsd.h ../include/s_conf.h ../include/s_err.h \
-  ../include/s_user.h ../include/send.h ../include/support.h \
-  ../include/m_watch.h
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
+ ../include/s_serv.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/common.h ../include/ircd.h ../include/s_misc.h \
+ ../include/match.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/list.h
+opercmds.o: opercmds.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/opercmds.h ../include/struct.h \
+ ../include/inet.h ../include/whowas.h ../include/dbuf.h \
+ ../zlib/zlib.h ../zlib/zconf.h ../include/ircd.h ../include/s_bsd.h \
+ ../include/s_conf.h ../include/list.h ../include/send.h \
+ ../include/s_err.h ../include/numeric.h ../include/match.h \
+ ../include/s_misc.h ../include/class.h ../include/s_bdd.h \
+ ../include/s_user.h ../include/common.h ../include/msg.h \
+ ../include/sprintf_irc.h ../include/userload.h ../include/parse.h \
+ ../include/numnicks.h ../include/crule.h ../include/version.h \
+ ../include/support.h ../include/s_serv.h ../include/hash.h
+packet.o: packet.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_misc.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/list.h ../include/ircd.h ../include/msg.h \
+ ../include/parse.h ../include/send.h ../include/packet.h \
+ ../include/s_serv.h
+parse.o: parse.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_serv.h ../include/send.h ../include/parse.h \
+ ../include/common.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/list.h ../include/msg.h ../include/s_user.h \
+ ../include/channel.h ../include/s_ping.h ../include/res.h \
+ ../include/map.h ../include/m_watch.h ../include/s_bdd.h \
+ ../include/m_config.h ../include/hash.h ../include/numeric.h \
+ ../include/ircd.h ../include/s_misc.h ../include/s_numeric.h \
+ ../include/numnicks.h ../include/opercmds.h ../include/querycmds.h \
+ ../include/whocmds.h
+querycmds.o: querycmds.c ../include/sys.h \
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
+ ../include/struct.h ../include/inet.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/parse.h \
+ ../include/send.h ../include/s_err.h ../include/numeric.h \
+ ../include/ircd.h ../include/s_user.h ../include/version.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/s_misc.h ../include/match.h ../include/s_serv.h \
+ ../include/msg.h ../include/channel.h ../include/numnicks.h \
+ ../include/userload.h ../include/support.h ../include/querycmds.h
+random.o: random.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h \
+ ../include/random.h
+res.o: res.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/res.h ../include/inet.h \
+ ../include/list.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/numeric.h \
+ ../include/send.h ../include/s_err.h ../include/s_misc.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/ircd.h \
+ ../include/s_ping.h ../include/support.h ../include/common.h \
+ ../include/sprintf_irc.h
+runmalloc.o: runmalloc.c ../include/sys.h \
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h ../include/h.h ../include/s_debug.h
+s_auth.o: s_auth.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/res.h ../include/inet.h \
+ ../include/list.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
+ ../include/send.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/s_misc.h ../include/s_serv.h ../include/support.h \
+ ../include/ircd.h ../include/s_auth.h ../include/sprintf_irc.h
+s_bsd.o: s_bsd.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/res.h ../include/inet.h \
+ ../include/list.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_bsd.h \
+ ../include/s_conf.h ../include/s_serv.h ../include/numeric.h \
+ ../include/send.h ../include/s_bdd.h ../include/m_config.h \
+ ../include/s_misc.h ../include/hash.h ../include/s_err.h \
+ ../include/ircd.h ../include/support.h ../include/s_auth.h \
+ ../include/class.h ../include/packet.h ../include/s_ping.h \
+ ../include/channel.h ../include/version.h ../include/parse.h \
+ ../include/common.h ../include/bsd.h ../include/numnicks.h \
+ ../include/s_user.h ../include/sprintf_irc.h ../include/querycmds.h \
+ ../include/IPcheck.h ../include/s_socks.h ../include/msg.h
+s_conf.o: s_conf.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/inet.h ../include/struct.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_serv.h ../include/opercmds.h ../include/numeric.h \
+ ../include/send.h ../include/s_conf.h ../include/list.h \
+ ../include/class.h ../include/s_misc.h ../include/match.h \
+ ../include/common.h ../include/s_err.h ../include/s_bsd.h \
+ ../include/ircd.h ../include/crule.h ../include/res.h \
+ ../include/s_bdd.h ../include/support.h ../include/parse.h \
+ ../include/numnicks.h ../include/sprintf_irc.h ../include/IPcheck.h \
+ ../include/hash.h ../include/fileio.h
+s_debug.o: s_debug.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/numeric.h ../include/hash.h ../include/s_serv.h \
+ ../include/send.h ../include/s_conf.h ../include/list.h \
+ ../include/class.h ../include/ircd.h ../include/s_bsd.h \
+ ../include/bsd.h ../include/res.h ../include/channel.h \
+ ../include/numnicks.h
+s_err.o: s_err.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/numeric.h ../include/s_err.h \
+ ../include/sprintf_irc.h ../include/m_watch.h
+s_misc.o: s_misc.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_serv.h ../include/numeric.h ../include/send.h \
+ ../include/s_conf.h ../include/list.h ../include/s_misc.h \
+ ../include/common.h ../include/match.h ../include/hash.h \
+ ../include/s_bsd.h ../include/res.h ../include/ircd.h \
+ ../include/s_ping.h ../include/channel.h ../include/s_err.h \
+ ../include/support.h ../include/userload.h ../include/parse.h \
+ ../include/s_user.h ../include/numnicks.h ../include/sprintf_irc.h \
+ ../include/querycmds.h ../include/IPcheck.h ../include/m_watch.h
+s_numeric.o: s_numeric.c ../include/sys.h \
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
+ ../include/struct.h ../include/inet.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/send.h ../include/support.h ../include/parse.h \
+ ../include/numeric.h ../include/channel.h ../include/ircd.h \
+ ../include/hash.h ../include/numnicks.h ../include/s_numeric.h
+s_ping.o: s_ping.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/inet.h ../include/struct.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/send.h ../include/s_conf.h ../include/list.h \
+ ../include/match.h ../include/res.h ../include/s_bsd.h \
+ ../include/s_serv.h ../include/ircd.h ../include/s_ping.h \
+ ../include/support.h ../include/numeric.h ../include/s_user.h \
+ ../include/s_err.h ../include/common.h ../include/numnicks.h
+s_serv.o: s_serv.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/ircd.h ../include/s_serv.h ../include/s_misc.h \
+ ../include/sprintf_irc.h ../include/send.h ../include/s_err.h \
+ ../include/numeric.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/list.h ../include/hash.h ../include/common.h \
+ ../include/s_bdd.h ../include/msg.h ../include/m_config.h \
+ ../include/match.h ../include/crule.h ../include/parse.h \
+ ../include/numnicks.h ../include/userload.h ../include/s_user.h \
+ ../include/channel.h ../include/querycmds.h ../include/IPcheck.h
+s_user.o: s_user.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/common.h ../include/s_serv.h ../include/numeric.h \
+ ../include/send.h ../include/s_conf.h ../include/list.h \
+ ../include/s_misc.h ../include/match.h ../include/hash.h \
+ ../include/s_bsd.h ../include/s_err.h ../include/parse.h \
+ ../include/m_watch.h ../include/s_bdd.h ../include/ircd.h \
+ ../include/s_user.h ../include/support.h ../include/channel.h \
+ ../include/random.h ../include/version.h ../include/msg.h \
+ ../include/userload.h ../include/numnicks.h ../include/sprintf_irc.h \
+ ../include/querycmds.h ../include/IPcheck.h ../include/class.h
+send.o: send.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/list.h \
+ ../include/s_serv.h ../include/send.h ../include/s_misc.h \
+ ../include/common.h ../include/match.h ../include/ircd.h \
+ ../include/channel.h ../include/bsd.h ../include/class.h \
+ ../include/s_user.h ../include/sprintf_irc.h
+sprintf_irc.o: sprintf_irc.c ../include/sys.h \
+ ../include/../config/config.h ../include/../config/setup.h \
+ ../include/runmalloc.h ../include/h.h ../include/s_debug.h \
+ ../include/sprintf_irc.h
+support.o: support.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/send.h ../include/ircd.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/inet.h \
+ ../include/list.h ../include/support.h ../include/sprintf_irc.h \
+ ../include/common.h ../include/fileio.h
+userload.o: userload.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/send.h ../include/s_misc.h ../include/userload.h \
+ ../include/ircd.h ../include/numnicks.h ../include/s_serv.h \
+ ../include/querycmds.h
+whocmds.o: whocmds.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/common.h ../include/s_serv.h ../include/numeric.h \
+ ../include/send.h ../include/s_conf.h ../include/list.h \
+ ../include/s_misc.h ../include/match.h ../include/hash.h \
+ ../include/s_bsd.h ../include/s_err.h ../include/parse.h \
+ ../include/ircd.h ../include/s_user.h ../include/support.h \
+ ../include/channel.h ../include/random.h ../include/version.h \
+ ../include/msg.h ../include/userload.h ../include/numnicks.h \
+ ../include/sprintf_irc.h ../include/querycmds.h ../include/IPcheck.h
+whowas.o: whowas.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h \
+ ../include/common.h ../include/h.h ../include/s_debug.h \
+ ../include/struct.h ../include/inet.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/numeric.h \
+ ../include/send.h ../include/s_misc.h ../include/s_err.h \
+ ../include/ircd.h ../include/list.h ../include/s_user.h \
+ ../include/support.h
+s_socks.o: s_socks.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/res.h ../include/inet.h \
+ ../include/list.h ../include/struct.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/common.h \
+ ../include/send.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/s_misc.h ../include/support.h ../include/ircd.h \
+ ../include/s_socks.h ../include/sprintf_irc.h ../include/hash.h \
+ ../include/s_serv.h ../include/IPcheck.h ../include/s_bdd.h
+s_bdd.o: s_bdd.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/struct.h ../include/inet.h \
+ ../include/whowas.h ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h \
+ ../include/ircd.h ../include/s_serv.h ../include/s_misc.h \
+ ../include/sprintf_irc.h ../include/send.h ../include/s_err.h \
+ ../include/numeric.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/list.h ../include/hash.h ../include/common.h \
+ ../include/match.h ../include/crule.h ../include/parse.h \
+ ../include/numnicks.h ../include/userload.h ../include/s_user.h \
+ ../include/channel.h ../include/querycmds.h ../include/IPcheck.h \
+ ../include/s_bdd.h ../include/msg.h ../include/support.h
+m_config.o: m_config.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/common.h ../include/ircd.h \
+ ../include/struct.h ../include/inet.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/s_serv.h \
+ ../include/msg.h ../include/s_conf.h ../include/list.h \
+ ../include/m_config.h ../include/send.h
+m_watch.o: m_watch.c ../include/sys.h ../include/../config/config.h \
+ ../include/../config/setup.h ../include/runmalloc.h ../include/h.h \
+ ../include/s_debug.h ../include/hash.h ../include/s_serv.h \
+ ../include/struct.h ../include/inet.h ../include/whowas.h \
+ ../include/dbuf.h ../zlib/zlib.h ../zlib/zconf.h ../include/ircd.h \
+ ../include/list.h ../include/msg.h ../include/numeric.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/s_err.h \
+ ../include/s_user.h ../include/send.h ../include/support.h \
+ ../include/m_watch.h
Index: ipv6/ircd/bsd.c
diff -u ipv6/ircd/bsd.c:1.2 ipv6/ircd/bsd.c:1.3
--- ipv6/ircd/bsd.c:1.2	Thu Sep 12 09:38:57 2002
+++ ipv6/ircd/bsd.c	Wed Jan 29 12:14:56 2003
@@ -20,13 +20,15 @@
 
 #include "sys.h"
 #include <signal.h>
+#include <sys/socket.h>		/* Needed for send() */
+#include "inet.h"
 #include "h.h"
 #include "struct.h"
 #include "s_bsd.h"
 #include "ircd.h"
 #include "bsd.h"
 
-RCSTAG_CC("$Id: bsd.c,v 1.2 2002/09/12 16:38:57 zolty Exp $");
+RCSTAG_CC("$Id: bsd.c,v 1.3 2003/01/29 20:14:56 zolty Exp $");
 
 #ifdef DEBUGMODE
 int writecalls = 0;
Index: ipv6/ircd/channel.c
diff -u ipv6/ircd/channel.c:1.8 ipv6/ircd/channel.c:1.9
--- ipv6/ircd/channel.c:1.8	Tue Dec 17 08:16:51 2002
+++ ipv6/ircd/channel.c	Wed Jan 29 12:14:56 2003
@@ -48,7 +48,7 @@
 #include "sprintf_irc.h"
 #include "querycmds.h"
 
-RCSTAG_CC("$Id: channel.c,v 1.8 2002/12/17 16:16:51 zolty Exp $");
+RCSTAG_CC("$Id: channel.c,v 1.9 2003/01/29 20:14:56 zolty Exp $");
 
 aChannel *channel = NullChn;
 
@@ -71,7 +71,6 @@
 static int set_mode(aClient *, aClient *, aChannel *, int,
     char **, char *, char *, char *, int *);
 #endif
-static void sub1_from_channel(aChannel *);
 static void send_hack_notice(aClient *, aClient *, int, char *[], int, int);
 static void clean_channelname(char *);
 
@@ -1512,7 +1511,7 @@
 	{
 	  struct db_reg *reg;
 
-	  reg = db_buscar_registro(BDD_CHANDB, chptr->chname);
+	  reg = db_buscar_registro(BDD_CHANDB_OLD, chptr->chname);
 #ifdef BDD_OPER_HACK
 	  /*
 	   * Los miembros de la BD de OPERs pueden usar los modos X
@@ -1537,7 +1536,7 @@
 	   *                              1999/06/30 sa...@ap...
 	   */
 	  if (IsNickRegistered(sptr) &&
-	      db_es_miembro(BDD_CHANDB, chptr->chname, sptr->name) == 1)
+	      db_es_miembro(BDD_CHANDB_OLD, chptr->chname, sptr->name) == 1)
 	  {
 	    if (!is_chan_op(sptr, chptr))
 	      jcea_xmode_esnet = !0;
@@ -2340,7 +2339,7 @@
   {
     struct db_reg *reg;
 
-    reg = db_buscar_registro(BDD_CHANDB, (char *)chptr->chname);
+    reg = db_buscar_registro(BDD_CHANDB_OLD, (char *)chptr->chname);
 #ifdef BDD_OPER_HACK
 /*
 * El hack de la base de datos de opers permite que estos dispongan
@@ -2365,7 +2364,7 @@
  */
 
     if ((!BadPtr(key)) && IsNickRegistered(sptr)
-	&& db_es_miembro(BDD_CHANDB, chptr->chname, sptr->name) == 1
+	&& db_es_miembro(BDD_CHANDB_OLD, chptr->chname, sptr->name) == 1
 	&& (!compall("FUNDADOR", key)))
       return 0;
 #endif
@@ -2446,16 +2445,19 @@
  *  Get Channel block for i (and allocate a new channel
  *  block, if it didn't exists before).
  */
-static aChannel *get_channel(aClient *cptr, char *chname, int flag)
+aChannel *get_channel(aClient *sptr, char *chname, int flag)
 {
   Reg1 aChannel *chptr;
   int len;
+  int mio_flag;
+
+  mio_flag = ((sptr == NULL) || (MyUser(sptr)));
 
   if (BadPtr(chname))
     return NULL;
 
   len = strlen(chname);
-  if (MyUser(cptr) && len > CHANNELLEN)
+  if (mio_flag && len > CHANNELLEN)
   {
     len = CHANNELLEN;
     *(chname + CHANNELLEN) = '\0';
@@ -2472,7 +2474,7 @@
       channel->prevch = chptr;
     chptr->prevch = NULL;
     chptr->nextch = channel;
-    chptr->creationtime = MyUser(cptr) ? TStime() : (time_t) 0;
+    chptr->creationtime = mio_flag ? TStime() : (time_t) 0;
     channel = chptr;
     hAddChannel(chptr);
   }
@@ -2575,17 +2577,25 @@
 /*
  *  Subtract one user from channel i (and free channel
  *  block, if channel became empty).
+ *
+ * Si el canal esta registrado, no lo elimina
+ * 08/Ene/03 - jc...@ar...
  */
-static void sub1_from_channel(aChannel *chptr)
+void sub1_from_channel(aChannel *chptr)
 {
   Reg2 Link *tmp;
   Link *obtmp;
 
-  if (chptr->users > 1)		/* Can be 0, called for an empty channel too */
-  {
+  if (chptr->users)		/* Can be 0, called for an empty channel too */
     --chptr->users;
+
+  if (chptr->users)
     return;
-  }
+
+#if defined(BDD)
+  if (chptr->mode.mode & MODE_REGCHAN)
+    return;
+#endif
 
   /* Channel became (or was) empty: Remove channel */
   if (is_listed(chptr))
@@ -2802,7 +2812,7 @@
       }
       chptr = get_channel(sptr, name, CREATE);
 #if defined(BDD)
-      if (chptr && db_buscar_registro(BDD_CHANDB, name))
+      if (chptr && db_buscar_registro(BDD_CHANDB_OLD, name))
 	chptr->mode.mode |= MODE_REGCHAN;
       /* Aki debo implantar los modos por defecto sacados de la DBH */
 #endif
@@ -2881,7 +2891,7 @@
 	/* asi ya lo meto en el canal con el OP puesto a nivel local */
 	if (AutoOpChannel(chptr) &&
 	    IsNickRegistered(sptr) &&
-	    db_es_miembro(BDD_CHANDB, chptr->chname, sptr->name))
+	    db_es_miembro(BDD_CHANDB_OLD, chptr->chname, sptr->name))
 	  flags = CHFL_CHANOP;
 #endif
       }
@@ -2975,7 +2985,7 @@
 	 */
 	if (chptr && AutoOpChannel(chptr)
 	    && IsNickRegistered(sptr)
-	    && db_es_miembro(BDD_CHANDB, chptr->chname, sptr->name))
+	    && db_es_miembro(BDD_CHANDB_OLD, chptr->chname, sptr->name))
 	{
 	  struct db_reg *r;
 	  char *botname;
@@ -4563,12 +4573,14 @@
     return 0;
   }
 
+#if defined(BDD)
   if (MyUser(sptr) && IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr)
       && !IsAnOper(sptr))
   {
     sendto_one(sptr, err_str(ERR_NONONREG), me.name, parv[0], acptr->name);
     return 0;
   }
+#endif
 
   if (MyUser(sptr))
     clean_channelname(parv[2]);
@@ -4593,7 +4605,7 @@
 */
     if (MyConnect(sptr))
     {
-      sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0], parv[2]);
+      sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0], parv[2]);
       return 0;
     }
     return 0;
Index: ipv6/ircd/chkconf.c
diff -u ipv6/ircd/chkconf.c:1.3 ipv6/ircd/chkconf.c:1.4
--- ipv6/ircd/chkconf.c:1.3	Sat Sep 14 07:42:05 2002
+++ ipv6/ircd/chkconf.c	Wed Jan 29 12:14:56 2003
@@ -22,14 +22,19 @@
 #include <unistd.h>
 #endif
 #include <stdlib.h>
+#include <sys/socket.h>
 #include <sys/stat.h>
 #include <ctype.h>
 #if HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
+#ifdef HPUX
+#include <arpa/inet.h>
+#endif /* HPUX */
 #ifdef	R_LINES
 #include <signal.h>
 #endif
+#include "inet.h"
 #include "h.h"
 #include "s_conf.h"
 #include "class.h"
@@ -37,7 +42,7 @@
 #include "ircd.h"
 #include "fileio.h"
 
-RCSTAG_CC("$Id: chkconf.c,v 1.3 2002/09/14 14:42:05 zolty Exp $");
+RCSTAG_CC("$Id: chkconf.c,v 1.4 2003/01/29 20:14:56 zolty Exp $");
 
 /*
  * For the connect rule patch..  these really should be in a header,
Index: ipv6/ircd/ircd.c
diff -u ipv6/ircd/ircd.c:1.5 ipv6/ircd/ircd.c:1.6
--- ipv6/ircd/ircd.c:1.5	Tue Dec 17 08:16:51 2002
+++ ipv6/ircd/ircd.c	Wed Jan 29 12:14:56 2003
@@ -44,12 +44,17 @@
 #include <syslog.h>
 #endif
 #ifdef	CHROOTDIR
+#include <netinet/in.h>
+#include <arpa/nameser.h>
 #include <resolv.h>
 #endif
-
+#ifdef VIRTUAL_HOST
+#include <sys/socket.h>		/* Needed for AF_INET on some OS */
+#endif
 #include <assert.h>
 
 #include "h.h"
+#include "inet.h"
 #include "res.h"
 #include "struct.h"
 #include "s_serv.h"
@@ -71,9 +76,8 @@
 #include "numnicks.h"
 #include "IPcheck.h"
 #include "s_bdd.h"
-#include "inet.h"
 
-RCSTAG_CC("$Id: ircd.c,v 1.5 2002/12/17 16:16:51 zolty Exp $");
+RCSTAG_CC("$Id: ircd.c,v 1.6 2003/01/29 20:14:56 zolty Exp $");
 
 extern void init_counters(void);
 
Index: ipv6/ircd/opercmds.c
diff -u ipv6/ircd/opercmds.c:1.4 ipv6/ircd/opercmds.c:1.5
--- ipv6/ircd/opercmds.c:1.4	Sat Nov  9 06:52:54 2002
+++ ipv6/ircd/opercmds.c	Wed Jan 29 12:14:56 2003
@@ -61,7 +61,7 @@
 #include "s_serv.h"
 #include "hash.h"
 
-RCSTAG_CC("$Id: opercmds.c,v 1.4 2002/11/09 14:52:54 zolty Exp $");
+RCSTAG_CC("$Id: opercmds.c,v 1.5 2003/01/29 20:14:56 zolty Exp $");
 
 /*
  *  m_squit
@@ -496,7 +496...
 
[truncated message content] | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-29 18:55:37
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-29 18:55:35 UTC
Modified files:
     Ipv6.zoltan
Log message:
Actualizacion TODO
---------------------- diff included ----------------------
Index: ipv6/Ipv6.zoltan
diff -u ipv6/Ipv6.zoltan:1.14 ipv6/Ipv6.zoltan:1.15
--- ipv6/Ipv6.zoltan:1.14	Sat Sep 28 05:03:03 2002
+++ ipv6/Ipv6.zoltan	Wed Jan 29 10:55:23 2003
@@ -1,82 +1,43 @@
-11 Septiembre 2002
-------------------
+11 Septiembre 2002 (Actualizacion 29 de Enero 2003)
+---------------------------------------------------
 
 Pasos para el desarrollo del soporte IPv6 para el ircd de ESNET-Hispano:
 
-1º Crear un nuevo archivo "inet.h" en el directorio include. (HECHO)
+	A) Mirar si se cambia o no al sistema de hybrid.
 
-2º Mover todos los includes que hagan referencia a la familia de protocolos
-   de INET al nuevo archivo inet.h. Son los siguientes:
-     netinet/in.h
-     sys/socket.h
-     arpa/inet.h
-   Y poner el include "inet.h" en los *.c que hagan falta y hacer un "make depend".
-   (HECHO)
+	B) Adaptar el CALCULATE_HASH de IPcheck.c a IPv6 y activar todos los IP*().
 
-3º Crear defines para las familias:
+	C) Revisar la resolucion DNS, en principio usaremos el RFC antiguo, es decir
+	   ip6.int para la inversa y registro AAAA para la directa.
+	   Mas tarde migrar a ip6.arpa para inversa y registro A6 para directa.
 
-      DEFINE         Familia IPv4      Familia IPv6
+	D) Comprobar el bind() de los sockets teniendo activado y desactivado la opcion
+	   VIRTUALHOST del config.
 
-      AFINET          AF_INET           AF_INET6
-      SOCKADDR_IN     sockaddr_in       sockaddr_in6
-      SIN_FAMILY      sin_family        sin6_family
-      SIN_PORT        sin_port          sin6_port
-      SIN_ADDR        sin_addr          sin6_addr
-      S_ADDR          s_addr            s6_addr
-      IN_ADDR         in_addr           in6_addr
-      INADDRANY_STR   "0.0.0.0"         "0::0"
+	E) Comprobar todo lo que afecta al fichero match.c (Comparacion de ip's) y el correcto
+	   funcionamiento de las cosas que utilizan match*(). Ejemplos:
+	     1) Hostmask O lines.
+	     2) Hostmask C y N lines.
+	     3) Hostmask K line y IP en k line.
+	     4) Hostmask E lines.
+	     5) Hostmask G lines.
+	     6) Bans, Silences, etc..
 
-   Y sustituirlos por TODO el codigo. Hay que tener en cuenta que la familia IPv6
-   soporta conexiones de tanto IPv4 como IPv6 (HECHO)
+	F) La ip en base64 que se propaga en el comando NICK de un usuario nuevo, se
+	   podria hacer lo siguiente, si el usuario entra por una conexion ipv4 aunque
+	   use mapeado (::a.b.c.d o :ffff:.a.b.c.d), que solo tenga 6 caracteres y
+	   si tiene ipv6 22 caracteres. Esto es aplicable en toda la red tenga o no
+	   ipv6 en cada ircd.
 
-4º La ip de IPv6 en formato binario, no puede estar en un int, ya que son 128 bits,
-   hay que meterlo en un puntero char* o en un int[4]. (HECHO)
- 
-5º Definir un macro en "inet.h" para la delimitacion de los campos de las lineas
-   del ircd.conf ya que como en INET6 usan ':', entonces para el ircd.conf utilizaremos
-   el '%' si el ircd se compila para INET6. (HECHO)
+	G) Para las IP's Virtuales, preguntar a jcea para elegir opcion adecuada. Opciones:
+	     1) Ip virtual corta para ipv4 y larga para ipv6
+	     2) Igual tamanio para ipv4 y ipv6.
+	   Teniendo en cuenta que en IPv4 se usan 6 caracteres mas 6 caracteres de entropia,
+	   para ipv6 serian 22 caracteres mas ¿6? ¿11? caracteres de entropia (Hacer calculos).
 
-6º Adaptar el inetntoa al IPv6 o cambiar por una funcion nueva inetntop (numerico a 
-   puntero) para tanto IPv4 como IPv6. (HECHO)
 
-7º Adaptar el res.c al IPv6, la busqueda de la ip a partir del dominio es con AAAA para
-   las ips de IPv6. La inversa es a partir de lo siguiente:
-     Si la Ip es 3ffe:b80:124f:1::1, el dominio inverso seria
-      1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.f.4.2.1.0.8.b.0.e.f.f.3.ip6.int
-   (HECHO)
 
-8º Adaptar el CALCULATE_HASH de IPcheck.c a IPv6.
-
-9º Modificar el pretty_mask() para que el ':' lo trate igual que '.'. (HECHO)
-
-10º Modificar el parche de Nikolas de bans, para que admita ':'. (HECHO)
-
-11º La ip en formato base64 ha de tener 22 caracteres en vez de 6, para toda la red 
-    si hay al menos 1 ircd con IPv6 activado para que se pueda traducir direcciones
-    con reversibilidad.
-
-12º Idem con las ips virtuales, que en vez de 6 + 6 de entropia, han de ser 22 + ¿6?
-    de entropia. Para toda la red si hay al menos 1 ircd con IPv6 activado.
-
-13º Crear un ejemplo-ipv6.conf. (HECHO)
-
-14º Poner la pregunta en el make config. (HECHO)
-
-15: Comprobar el bind de puertos de escucha asi como el virtualhosting.
-
-16: Comprobar que se pillan las ips de conexiones IPv6
-
-17: Comprobar la resolucion DNS.
-
-18: Comprobar que va bien los chequeos IDENT y PROXY
-
-19: Comprobar hosts E-lines, O-lines, I-lines, C/N-lines.
-
-20: Comprobar WHO, SILENCE, GLINE, todo aquello comando que haga comparacion de IP's
-
-
-
-2002 IRC-DEV TEAM
+2002-2003 IRC-DEV TEAM
 www.irc-dev.net
 
 Miembros: (en orden alfabetico)
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-04 00:48:53
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-04 00:48:53 UTC
Modified files:
     CAMBIOS.Ipv6 config/config-sh.in include/patchlevel.h
     ircd/s_user.c
Log message:
INET6.16
---------------------- diff included ----------------------
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.15 ipv6/CAMBIOS.Ipv6:1.16
--- ipv6/CAMBIOS.Ipv6:1.15	Fri Jan  3 16:27:31 2003
+++ ipv6/CAMBIOS.Ipv6	Fri Jan  3 16:48:42 2003
@@ -1,3 +1,9 @@
+* 2003/01/04 zo...@ir...          INET6.16
+-----------------------------------------------------------------------
+Se corrigen unos bugs introducidos en INET6.14.
+Deshabilito el BDD_VIP2, el de +x a todo dios, porque todavia no esta
+adaptado a INET6.
+
 * 2003/01/04 zo...@ir...          INET6.15
 -----------------------------------------------------------------------
 Actualizacion IRCD hasta el u2.10.H.06.35.
Index: ipv6/config/config-sh.in
diff -u ipv6/config/config-sh.in:1.2 ipv6/config/config-sh.in:1.3
--- ipv6/config/config-sh.in:1.2	Mon Sep 16 05:38:13 2002
+++ ipv6/config/config-sh.in	Fri Jan  3 16:48:42 2003
@@ -390,9 +390,9 @@
        bool 'HISPANO/ESNET: Soporte para la ocultacion de IPs' BDD_VIP y
        if [ "$BDD_VIP" = "y" ]; then
          bool 'HISPANO/ESNET: Ignorar el flag "+x" a menos que el usuario este en la tabla "v" o "w"' BDD_VIP3 n
-         if [ "$BDD_VIP3" = "n" ]; then
-           bool 'HISPANO/ESNET: Ocultación de IP de TODOS los usuarios' BDD_VIP2 y
-         fi
+#         if [ "$BDD_VIP3" = "n" ]; then
+#           bool 'HISPANO/ESNET: Ocultación de IP de TODOS los usuarios' BDD_VIP2 y
+#         fi
        fi
        bool 'HISPANO/ESNET: Proteccion contra Wingates y Socks4 proxies' PROXY_PROTECTION y
   fi
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.16 ipv6/include/patchlevel.h:1.17
--- ipv6/include/patchlevel.h:1.16	Fri Jan  3 16:27:31 2003
+++ ipv6/include/patchlevel.h	Fri Jan  3 16:48:42 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.15"
+		"+INET6.16"
 
 /*
  * Deliberate empty lines
Index: ipv6/ircd/s_user.c
diff -u ipv6/ircd/s_user.c:1.10 ipv6/ircd/s_user.c:1.11
--- ipv6/ircd/s_user.c:1.10	Fri Jan  3 16:27:32 2003
+++ ipv6/ircd/s_user.c	Fri Jan  3 16:48:42 2003
@@ -69,7 +69,7 @@
 #include "IPcheck.h"
 #include "class.h"
 
-RCSTAG_CC("$Id: s_user.c,v 1.10 2003/01/04 00:27:32 zolty Exp $");
+RCSTAG_CC("$Id: s_user.c,v 1.11 2003/01/04 00:48:42 zolty Exp $");
 
 /* *INDENT-OFF* */
 
@@ -3155,7 +3155,7 @@
     if (aconf->status == CONF_LOCOP)
     {
 #else
-    if (!IsLocal(sptr) || aconf->status == CONF_LOCOP)
+    if (!MyConnect(sptr) || aconf->status == CONF_LOCOP)
     {
 #endif
       ClearOper(sptr);
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2003-01-04 00:27:42
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2003-01-04 00:27:42 UTC
Modified files:
     .patches CAMBIOS.Ipv6 CAMBIOS2_10_H_06 todo.jcea
     include/patchlevel.h include/s_user.h ircd/m_config.c
     ircd/s_debug.c ircd/s_misc.c ircd/s_serv.c ircd/s_user.c
     ircd/whocmds.c
Log message:
Sincronizacion u2.10.H.06.35
---------------------- diff included ----------------------
Index: ipv6/.patches
diff -u ipv6/.patches:1.4 ipv6/.patches:1.5
--- ipv6/.patches:1.4	Tue Dec 17 08:16:48 2002
+++ ipv6/.patches	Fri Jan  3 16:27:31 2003
@@ -1 +1 @@
-u2.10.H.06.28
+u2.10.H.06.35
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.14 ipv6/CAMBIOS.Ipv6:1.15
--- ipv6/CAMBIOS.Ipv6:1.14	Tue Dec 17 08:16:48 2002
+++ ipv6/CAMBIOS.Ipv6	Fri Jan  3 16:27:31 2003
@@ -1,3 +1,7 @@
+* 2003/01/04 zo...@ir...          INET6.15
+-----------------------------------------------------------------------
+Actualizacion IRCD hasta el u2.10.H.06.35.
+
 * 2002/12/17 zo...@ir...          INET6.14
 -----------------------------------------------------------------------
 Actualizacion IRCD hasta el u2.10.H.06.28.
Index: ipv6/CAMBIOS2_10_H_06
diff -u ipv6/CAMBIOS2_10_H_06:1.2 ipv6/CAMBIOS2_10_H_06:1.3
--- ipv6/CAMBIOS2_10_H_06:1.2	Tue Dec 17 08:16:48 2002
+++ ipv6/CAMBIOS2_10_H_06	Fri Jan  3 16:27:31 2003
@@ -1,4 +1,50 @@
-$Id: CAMBIOS2_10_H_06,v 1.2 2002/12/17 16:16:48 zolty Exp $
+$Id: CAMBIOS2_10_H_06,v 1.3 2003/01/04 00:27:31 zolty Exp $
+
+* 2003/01/02 jc...@ar...            (u2.10.H.06.35)              CLEANUP
+  -----------------------------------------------------------------------
+  Elimino unos "warnings" en los parches anteriores.
+
+* 2003/01/01 ni...@ir...     (u2.10.H.06.34)              FEATURE
+  -----------------------------------------------------------------------
+  Usuarios con +k se saltan la limitacion de targets y de cambios de nick
+  consecutivos.
+
+* 2002/12/31 ni...@ir...     (u2.10.H.06.33)                  FIX
+  -----------------------------------------------------------------------
+  Un ajuste mas en el contador de helpers. No se contabilizaban las 
+  salidas por exit_client :)
+
+* 2002/12/31 ni...@ir...     (u2.10.H.06.32)              FEATURE
+  -----------------------------------------------------------------------
+  En un VERSION vemos el numero maximo de canales por usuario. Aparece
+  tras el valor de CLIENT_FLOOD. Asimismo, chequeamos que su valor este
+  entre 1-99 (99 < MAXCHANNELSPERUSER > 1).
+
+* 2002/12/31 ni...@ir...     (u2.10.H.06.31)              FEATURE
+  -----------------------------------------------------------------------
+  Nuevo numeric para el WHOIS:
+
+  /* 379 */
+    {RPL_WHOISMODES, "%s :Utiliza los modos [%s]"},
+
+  Devuelve las letras de los modos visibles del usuario. El criterio para
+  mostrar u ocultar modos es el mismo que para el WHO.
+
+  Se ha modificado la funcion umode_str(aClient *cptr), que servia para
+  calcular la cadena de modos que se envia en un BURST para que acepte un
+  segundo parametro: umode_str(aClient *cptr, aClient *acptr), de tal
+  modo que calcula tambien, si acptr != NULL, los modos de cptr visibles
+  por acptr.
+
+* 2002/12/26 jc...@ar...            (Z14 - u2.10.H.06.30)            FIX
+  -----------------------------------------------------------------------
+  Inicializacion correcta de ZLIB, que podia dar problemas bajo ciertas
+  circunstancias, incluyendo la caida del servidor.
+
+* 2002/12/16 n3...@9p...       (u2.10.H.06.29)              FEATURE
+  -----------------------------------------------------------------------
+  Segunda parte del parche para permitir el ~ en los nicks. Ahora, ya
+  permitimos su uso de forma local.
 
 * 2002/12/16 jc...@ar...            (u2.10.H.06.28)              FEATURE
   -----------------------------------------------------------------------
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.15 ipv6/include/patchlevel.h:1.16
--- ipv6/include/patchlevel.h:1.15	Tue Dec 17 08:16:50 2002
+++ ipv6/include/patchlevel.h	Fri Jan  3 16:27:31 2003
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.14"
+		"+INET6.15"
 
 /*
  * Deliberate empty lines
Index: ipv6/include/s_user.h
diff -u ipv6/include/s_user.h:1.2 ipv6/include/s_user.h:1.3
--- ipv6/include/s_user.h:1.2	Thu Sep 12 12:18:59 2002
+++ ipv6/include/s_user.h	Fri Jan  3 16:27:32 2003
@@ -58,7 +58,7 @@
 extern int m_userip(aClient *cptr, aClient *sptr, int parc, char *parv[]);
 extern int m_ison(aClient *cptr, aClient *sptr, int parc, char *parv[]);
 extern void send_features(aClient *sptr, char *nick);
-extern char *umode_str(aClient *cptr);
+extern char *umode_str(aClient *cptr, aClient *acptr);
 #if defined(BDD)
 extern void send_umode(aClient *cptr, aClient *sptr, int old, int sendmask,
     int oldh, int sendhmask);
Index: ipv6/ircd/m_config.c
diff -u ipv6/ircd/m_config.c:1.2 ipv6/ircd/m_config.c:1.3
--- ipv6/ircd/m_config.c:1.2	Thu Sep 12 12:19:00 2002
+++ ipv6/ircd/m_config.c	Fri Jan  3 16:27:32 2003
@@ -99,6 +99,7 @@
 	outofmemory();
       cptr->comp_out->zalloc = z_alloc;
       cptr->comp_out->zfree = z_free;
+      cptr->comp_out->opaque = 0;
       estado = deflateInit(cptr->comp_out, 9);
       assert(estado == Z_OK);
       cptr->comp_out_total_in = 0;
@@ -124,8 +125,10 @@
 	if (!cptr->comp_in)
 	  outofmemory();
 	cptr->comp_in->next_in = Z_NULL;
+	cptr->comp_in->avail_in = 0;
 	cptr->comp_in->zalloc = z_alloc;
 	cptr->comp_in->zfree = z_free;
+	cptr->comp_in->opaque = 0;
 	estado = inflateInit(cptr->comp_in);
 	assert(estado == Z_OK);
 	cptr->comp_in_total_in = 0;
Index: ipv6/ircd/s_debug.c
diff -u ipv6/ircd/s_debug.c:1.2 ipv6/ircd/s_debug.c:1.3
--- ipv6/ircd/s_debug.c:1.2	Sat Sep 14 15:44:51 2002
+++ ipv6/ircd/s_debug.c	Fri Jan  3 16:27:32 2003
@@ -56,7 +56,7 @@
 #include "channel.h"
 #include "numnicks.h"
 
-RCSTAG_CC("$Id: s_debug.c,v 1.2 2002/09/14 22:44:51 zolty Exp $");
+RCSTAG_CC("$Id: s_debug.c,v 1.3 2003/01/04 00:27:32 zolty Exp $");
 
 /* *INDENT-OFF* */
 
@@ -198,6 +198,14 @@
     (char)('0' + (CLIENT_FLOOD/10) % 10),
     (char)('0' + (CLIENT_FLOOD/1) % 10),
     '.',
+#if (MAXCHANNELSPERUSER > 99) || (MAXCHANNELSPERUSER < 1)
+#error Valor MAXCHANNELSPERUSER erroneo. Rango permitido 1-99. Ejecuta el "make config" de nuevo y reajusta el valor.
+#endif
+#if MAXCHANNELSPERUSER > 9
+    (char)('0' + (MAXCHANNELSPERUSER/10) % 10),
+#endif
+    (char)('0' + (MAXCHANNELSPERUSER/1) % 10),
+    '.',
 #if !0
 /* Esto hay que quitarlo en algun momento... */
     'N','5','.',
@@ -243,7 +251,7 @@
    'C','F','G','5',
 #ifdef ESNET_NEG
    '+',
-   '.','Z','1','3',
+   '.','Z','1','4',
 #ifdef ZLIB_ESNET
     '+',
 #else
Index: ipv6/ircd/s_misc.c
diff -u ipv6/ircd/s_misc.c:1.4 ipv6/ircd/s_misc.c:1.5
--- ipv6/ircd/s_misc.c:1.4	Mon Sep 30 08:02:00 2002
+++ ipv6/ircd/s_misc.c	Fri Jan  3 16:27:32 2003
@@ -65,7 +65,7 @@
 
 #include <assert.h>
 
-RCSTAG_CC("$Id: s_misc.c,v 1.4 2002/09/30 15:02:00 zolty Exp $");
+RCSTAG_CC("$Id: s_misc.c,v 1.5 2003/01/04 00:27:32 zolty Exp $");
 
 static void exit_one_client(aClient *, char *);
 
@@ -370,6 +370,9 @@
   time_t on_for;
 #endif
   char comment1[HOSTLEN + HOSTLEN + 2];
+
+  if (!IsServer(bcptr) && IsHelpOp(bcptr))
+    --nrof.helpers;
 
   if (MyConnect(bcptr))
   {
Index: ipv6/ircd/s_serv.c
diff -u ipv6/ircd/s_serv.c:1.4 ipv6/ircd/s_serv.c:1.5
--- ipv6/ircd/s_serv.c:1.4	Mon Sep 16 05:22:13 2002
+++ ipv6/ircd/s_serv.c	Fri Jan  3 16:27:32 2003
@@ -57,7 +57,7 @@
 #include "IPcheck.h"
 
 
-RCSTAG_CC("$Id: s_serv.c,v 1.4 2002/09/16 12:22:13 zolty Exp $");
+RCSTAG_CC("$Id: s_serv.c,v 1.5 2003/01/04 00:27:32 zolty Exp $");
 
 static int exit_new_server(aClient *cptr, aClient *sptr,
     char *host, time_t timestamp, char *fmt, ...)
@@ -1040,7 +1040,7 @@
       else
       {
 	char xxx_buf[8];
-	char *s = umode_str(acptr);
+	char *s = umode_str(acptr, NULL);
 	sendto_one(cptr, *s ?
 	    "%s NICK %s %d " TIME_T_FMT " %s %s +%s %s %s%s :%s" :
 	    "%s NICK %s %d " TIME_T_FMT " %s %s %s%s %s%s :%s",
Index: ipv6/ircd/s_user.c
diff -u ipv6/ircd/s_user.c:1.9 ipv6/ircd/s_user.c:1.10
--- ipv6/ircd/s_user.c:1.9	Tue Dec 17 08:16:53 2002
+++ ipv6/ircd/s_user.c	Fri Jan  3 16:27:32 2003
@@ -69,7 +69,7 @@
 #include "IPcheck.h"
 #include "class.h"
 
-RCSTAG_CC("$Id: s_user.c,v 1.9 2002/12/17 16:16:53 zolty Exp $");
+RCSTAG_CC("$Id: s_user.c,v 1.10 2003/01/04 00:27:32 zolty Exp $");
 
 /* *INDENT-OFF* */
 
@@ -703,7 +703,7 @@
   }
 #ifdef NO_PROTOCOL9		/* Use this when all servers are 2.10 (but test it first) --Run */
 
-  tmpstr = umode_str(sptr);
+  tmpstr = umode_str(sptr, NULL);
   sendto_serv_butone(cptr, *tmpstr ?
       "%s NICK %s %d %d %s %s +%s %s %s%s :%s" :
       "%s NICK %s %d %d %s %s %s%s %s%s :%s",
@@ -727,7 +727,8 @@
   }
 
   /* If the user has no umode, no need to generate a user MODE */
-  if (*(tmpstr = umode_str(sptr)) && (MyConnect(sptr) || Protocol(cptr) > 9))
+  if (*(tmpstr = umode_str(sptr, NULL)) && (MyConnect(sptr)
+      || Protocol(cptr) > 9))
     /* Is it necessary to generate an user MODE message ? */
   {
     for (lp = me.serv->down; lp; lp = lp->next)
@@ -1018,8 +1019,7 @@
    * creation) then reject it. If from a server and we reject it,
    * and KILL it. -avalon 4/4/92
    */
-  if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1]))
-      || (!IsServer(cptr) && strchr(nick, '~')))
+  if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1])))
   {
     sendto_one(sptr, err_str(ERR_INVALIDNICKNAME), me.name, parv[0], parv[1]);
 
@@ -1663,8 +1663,10 @@
        * If someone didn't change their nick for more then 60 seconds
        * however, allow to do two nick changes immedately after another
        * before limiting the nick flood. -Run
+       * Un +k puede cambiarse de nick todas las veces seguidas que
+       * quiera sin limitaciones. -NiKoLaS
        */
-      if (now < cptr->nextnick)
+      if ((now < cptr->nextnick) && !(IsChannelService(cptr)))
       {
 	cptr->nextnick += 2;
 	/* Send error message */
@@ -1680,6 +1682,10 @@
 	/* bounce NICK to user */
 	return 0;		/* ignore nick change! */
       }
+      else if (IsChannelService(cptr))
+      {
+	cptr->nextnick = now;
+      }
       else
       {
 	/* Limit total to 1 change per NICK_DELAY seconds: */
@@ -2024,10 +2030,8 @@
   register unsigned int tmp = ((size_t)target & 0xffff00) >> 8;
   unsigned char hash = (tmp * tmp) >> 12;
 
-#ifdef CS_NO_FLOOD_ESNET
   if (IsChannelService(sptr))
     return 0;
-#endif
 
   if (sptr->targets[0] == hash)	/* Same target as last time ? */
     return 0;
@@ -3766,26 +3770,55 @@
 /*
  * Build umode string for BURST command
  * --Run
+ * Se amplia la funcion para devolver los
+ * modos de cptr que ve acptr. Si solo se
+ * quiere construir la cadena para el BURST
+ * o tener el listado completo de los modos
+ * de cptr, se le pasa NULL como segundo   
+ * parametro.
+ * --NiKoLaS 
  */
-char *umode_str(aClient *cptr)
+char *umode_str(aClient *cptr, aClient *acptr)
 {
   char *m = umode_buf;		/* Maximum string size: "owidg\0" */
   int *s, flag, c_flags;
+#if defined(BDD)
+  int c_hmodes;
+
+  c_hmodes = cptr->hmodes & SEND_HMODES;
+
+  for (s = user_hmodes; (flag = *s); s += 2)
+    if ((c_hmodes & flag))
+      *m++ = *(s + 1);
+#endif
+
 
   c_flags = cptr->flags & SEND_UMODES;	/* cleaning up the original code */
 
   for (s = user_modes; (flag = *s); s += 2)
+  {
     if ((c_flags & flag))
-      *m++ = *(s + 1);
+    {
+      if (acptr)
+      {
+	if ((flag & FLAGS_INVISIBLE) || (flag & FLAGS_WALLOP)
+	    || (flag & FLAGS_DEBUG))
+	{
+	  if (IsAnOper(acptr)
 #if defined(BDD)
-  {
-    int c_hmodes = cptr->hmodes & SEND_HMODES;
-
-    for (s = user_hmodes; (flag = *s); s += 2)
-      if ((c_hmodes & flag))
+	      || IsHelpOp(acptr)
+#endif
+	      || (acptr == cptr))
+	    *m++ = *(s + 1);
+	}
+	else
+	  *m++ = *(s + 1);
+      }
+      else
 	*m++ = *(s + 1);
+    }
   }
-#endif
+
   *m = '\0';
 
   return umode_buf;		/* Note: static buffer, gets
Index: ipv6/ircd/whocmds.c
diff -u ipv6/ircd/whocmds.c:1.6 ipv6/ircd/whocmds.c:1.7
--- ipv6/ircd/whocmds.c:1.6	Sat Nov  9 06:52:54 2002
+++ ipv6/ircd/whocmds.c	Fri Jan  3 16:27:32 2003
@@ -64,7 +64,7 @@
 #include "querycmds.h"
 #include "IPcheck.h"
 
-RCSTAG_CC("$Id: whocmds.c,v 1.6 2002/11/09 14:52:54 zolty Exp $");
+RCSTAG_CC("$Id: whocmds.c,v 1.7 2003/01/04 00:27:32 zolty Exp $");
 
 /*
  * m_who() 
@@ -993,6 +993,10 @@
 	  if (MyConnect(acptr))
 	    sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name,
 		parv[0], name, now - user->last, acptr->firsttime);
+
+	  sendto_one(sptr, rpl_str(RPL_WHOISMODES), me.name,
+	      parv[0], name, umode_str(acptr, sptr));
+
 	}
 	if (found == 2 || total++ >= MAX_WHOIS_LINES)
 	  break;
Index: ipv6/todo.jcea
diff -u ipv6/todo.jcea:1.4 ipv6/todo.jcea:1.5
--- ipv6/todo.jcea:1.4	Tue Dec 17 08:16:49 2002
+++ ipv6/todo.jcea	Fri Jan  3 16:27:31 2003
@@ -1,4 +1,13 @@
-$Id: todo.jcea,v 1.4 2002/12/17 16:16:49 zolty Exp $
+$Id: todo.jcea,v 1.5 2003/01/04 00:27:31 zolty Exp $
+
+19/Dic/02
+Definir un nuevo modo de usuario, similar al +i
+pero que no lista canales NO COMUNES con quien
+hace el WHOIS.
+
+Hay que valorar el hecho de que los usuarios conocen
+canales precisamente porque ven los canales de otros
+usuarios...
 
 16/Dic/02
 Los "invites" deberian estar en la parte local
@@ -9,7 +18,7 @@
 Dentro de un an~o volver a considerar la opcion de que la tabla
 de "watch" se guarde en la red, en vez de en el cliente.
 
-Puedes ser util para usaurios que se conectan desde diferentes
+Puede ser util para usuarios que se conectan desde diferentes
 sitios, o para cubrir la deficiencia del mIRC, que no separa
 los "notify" por redes.
 
@@ -23,20 +32,6 @@
 aunque comprometeria la posibilidad futura de soportar compresion
 con los usuarios.
 
-17/Oct/02
-[11:42] <NiKoLaS> que al hacer un /invite te devuelva los canales donde estas invitado y aun no entraste?
-[11:42] <NiKoLaS> esto seria sacado de undernet
-
-17/Oct/02
-[11:28] <NiKoLaS> En el whois se ha de poder ver el resumen de modos del usuario. Se mostraran
-[11:28] <NiKoLaS> los mismos modos que en el WHO y se unificara la rutina que los calcula en
-[11:28] <NiKoLaS> en WHO para poder llamarla desde el WHO y el WHOIS y evitar redundancias en
-[11:28] <NiKoLaS> el codigo.
-
-16/Oct/02
-El modo +k debe saltarse tambien la limitacion de cambios
-de nick y de TARGETS.
-
 10/Oct/02
 Pasar la tabla 'o' a FLAGS individuales. Osea, cada bit, un flag.
 
@@ -59,11 +54,6 @@
 16/Sep/02
 Cuando quitamos a un usuario del WATCH, nos aparece un TimeStamp
 de 1970.
-
-09/Sep/02
-Permitir el caracter ~ en los nicks. Aparentemente, 
-segun NiKoLaS, eso requeriria una actualizacion
-en dos etapas.
 
 13/Ago/02
 La variable que contiene los modos de usuario esta superpoblada y 
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2002-12-17 16:17:08
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2002-12-17 16:17:04 UTC
Modified files:
     .patches CAMBIOS.Ipv6 CAMBIOS2_10_H_06 Makefile.in todo.jcea
     include/numeric.h include/patchlevel.h include/s_bsd.h
     include/struct.h ircd/channel.c ircd/ircd.c ircd/res.c
     ircd/s_auth.c ircd/s_bsd.c ircd/s_err.c ircd/s_socks.c
     ircd/s_user.c
Added files:
     ircd/crypt/.cvsignore
Log message:
Sincronizacion u2.10.H.06.28
---------------------- diff included ----------------------
Index: ipv6/.patches
diff -u ipv6/.patches:1.3 ipv6/.patches:1.4
--- ipv6/.patches:1.3	Sat Nov  9 06:52:54 2002
+++ ipv6/.patches	Tue Dec 17 08:16:48 2002
@@ -1 +1 @@
-u2.10.H.06.13
+u2.10.H.06.28
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.13 ipv6/CAMBIOS.Ipv6:1.14
--- ipv6/CAMBIOS.Ipv6:1.13	Tue Dec 17 02:40:57 2002
+++ ipv6/CAMBIOS.Ipv6	Tue Dec 17 08:16:48 2002
@@ -1,3 +1,7 @@
+* 2002/12/17 zo...@ir...          INET6.14
+-----------------------------------------------------------------------
+Actualizacion IRCD hasta el u2.10.H.06.28.
+
 * 2002/12/17 zo...@ir...          INET6.13
 -----------------------------------------------------------------------
 Compila con VIRTUAL_HOST y PROXY_PROTECTION activados y desactivados :)
Index: ipv6/CAMBIOS2_10_H_06
diff -u ipv6/CAMBIOS2_10_H_06:1.1 ipv6/CAMBIOS2_10_H_06:1.2
--- ipv6/CAMBIOS2_10_H_06:1.1	Sat Nov  9 06:52:54 2002
+++ ipv6/CAMBIOS2_10_H_06	Tue Dec 17 08:16:48 2002
@@ -1,4 +1,103 @@
-$Id: CAMBIOS2_10_H_06,v 1.1 2002/11/09 14:52:54 zolty Exp $
+$Id: CAMBIOS2_10_H_06,v 1.2 2002/12/17 16:16:48 zolty Exp $
+
+* 2002/12/16 jc...@ar...            (u2.10.H.06.28)              FEATURE
+  -----------------------------------------------------------------------
+  Se toca la funcion "can_send()" para que un nodo pueda enviar a un
+  canal. Antes no se podia hacer si el canal estaba +n.
+
+* 2002/12/16 jc...@ar...            (u2.10.H.06.27)              FEATURE
+  -----------------------------------------------------------------------
+  Cuando se invita a alguien a un canal, lo ven los "ops" de dicho canal.
+
+* 2002/12/15 n3...@9p...       (u2.10.H.06.26)              FEATURE
+  -----------------------------------------------------------------------
+  Primera parte del parche para permitir el uso del caracter '~' en los
+  nicks. Permitimos nicks con '~' de otros servidores, pero no locales.
+
+* 2002/12/12 jc...@ar...            (u2.10.H.06.25)                  FIX
+  -----------------------------------------------------------------------
+  Bajo circunstancias poco claras, y si tenemos el servidor configurado
+  para que use "poll()" en vez de "select()" (lo normal), puede darse
+  el caso de intentar hacer un
+
+    if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr)
+
+  de conexiones NO locales, con lo que fallan los "assert()". Es algo muy
+  esporadico (en Gaia, cada 24 horas de funcionamiento), pero que
+  "ocurre".
+
+  Esto, en realidad, es un bug del IRCD original, pero que no se ha
+  "detectado" hasta ahora.
+
+* 2002/12/11 ni...@ir...     (u2.10.H.06.24)                  FIX
+  -----------------------------------------------------------------------
+  Si se hace in INVITE a un canal inexistente, se devuelve el error de
+  "No such channel" en vez del de "You're not on that channel".
+
+* 2002/12/11 jc...@ar...            (u2.10.H.06.23)                  FIX
+  -----------------------------------------------------------------------
+  Se solucionan un par de detalles cuestionables del parche anterior.
+
+* 2002/12/11 zo...@ir...      (u2.10.H.06.22)              FEATURE
+  -----------------------------------------------------------------------
+  Ampliacion del comando INVITE. Si se invoca sin parametros, nos muestra
+  la lista de invitaciones que tenemos y que no hemos usado todavia para
+  entrar. Esta lista siempre ha existido y hasta ahora no era visible.
+
+  Se utilizan los siguientes numericos, utilizados en Undernet.
+  346 => RPL_INVITELIST
+  347 => RPL_ENDOFINVITELIST
+
+* 2002/12/10 jc...@ar...            (u2.10.H.06.21)              CLEANUP
+  -----------------------------------------------------------------------
+  "IsLocal()" y "MyConnect()" son redundantes. Ademas, "IsLocal()" no
+  funciona correctamente en los primeros instantes de una conexion.
+
+  Elimino "IsLocal()".
+
+* 2002/12/10 jc...@ar...            (u2.10.H.06.20)                  FIX
+  -----------------------------------------------------------------------
+  Cuando se configura el IRCD para que se ejecute bajo un usuario/grupo,
+  el grupo no se configuraba correctamente.
+
+* 2002/12/09 jc...@ar...            (u2.10.H.06.19)              CLEANUP
+  -----------------------------------------------------------------------
+  Cambio "s_auth.c" para que use macros en la manipulacion de
+  "FLAGS_AUTH" y "FLAGS_WRAUTH".
+
+* 2002/12/09 jc...@ar...            (u2.10.H.06.18)              CLEANUP
+  -----------------------------------------------------------------------
+  Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_WRAUTH". 
+
+* 2002/12/09 jc...@ar...            (u2.10.H.06.17)              CLEANUP
+  -----------------------------------------------------------------------
+  Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_AUTH".
+
+* 2002/12/09 jc...@ar...            (u2.10.H.06.16)              CLEANUP
+  -----------------------------------------------------------------------
+  Aprovechando el parche "u2.10.H.06.15", migro el flag "FLAGS_DOINGDNS".
+
+  En el "assert()" uso "MyConnect()", porque "IsLocal()" no esta
+  inicializado aun...
+
+* 2002/12/09 jc...@ar...            (u2.10.H.06.15)              CLEANUP
+  -----------------------------------------------------------------------
+  La variable de "flags" ya tiene ocupados sus 32 bits. En vez de utilizar
+  una variable de 64 bits, divido los "flags" en dos grupos de 32 bits.
+  Un grupo, el actual, existe siempre. El otro grupo de 32 bits SOLO
+  existira para conexiones LOCALES.
+
+  De esta forma se reduce el consumo de memoria, ya que las conexiones
+  remotas usan 32 bits, en vez de 64 bits.
+
+  Hay que ir migrando los flags poco a poco, uno a uno. Hay que usar
+  "assert()" (de forma temporal) para comprobar que se accede
+  a ese "flag" **SOLO** cuando el usuario es local.
+
+* 2002/12/04 ni...@ir...     (u2.10.H.06.14)              FEATURE
+  -----------------------------------------------------------------------
+  Si un usuario sin +r hace un INVITE a un usuario +R no se lo permite.
+  Si el usuario que hace el INVITE, por contra, tiene +o, si le deja.
 
 * 2002/10/22 jc...@ar...            (u2.10.H.06.13)                  FIX
   -----------------------------------------------------------------------
Index: ipv6/Makefile.in
diff -u ipv6/Makefile.in:1.4 ipv6/Makefile.in:1.5
--- ipv6/Makefile.in:1.4	Mon Sep 30 08:01:59 2002
+++ ipv6/Makefile.in	Tue Dec 17 08:16:49 2002
@@ -126,6 +126,6 @@
 
 # Indent all headers and source files:
 indent:
-	@test "`indent --version`" = "GNU indent 2.2.8" || \
-	  (echo "You need GNU indent 2.2.8a; See doc/readme.indent" && exit -1);
+	@test "`indent --version`" = "GNU indent 2.2.7" || \
+	  (echo "You need GNU indent 2.2.7; See doc/readme.indent" && exit -1);
 	VERSION_CONTROL=none indent include/*.h ircd/*.c
Index: ipv6/include/numeric.h
diff -u ipv6/include/numeric.h:1.3 ipv6/include/numeric.h:1.4
--- ipv6/include/numeric.h:1.3	Mon Sep 30 08:02:00 2002
+++ ipv6/include/numeric.h	Tue Dec 17 08:16:50 2002
@@ -16,7 +16,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: numeric.h,v 1.3 2002/09/30 15:02:00 zolty Exp $
+ * $Id: numeric.h,v 1.4 2002/12/17 16:16:50 zolty Exp $
  */
 
 #ifndef NUMERIC_H
@@ -277,8 +277,8 @@
 /*      RPL_SUMMONING        342           removed from RFC1459 */
 #define RPL_MSGONLYREG       342	/* Hispano extension */
 
-/*      RPL_INVITELIST       346          IRCnet & Undernet extension */
-/*      RPL_ENDOFINVITELIST  347          IRCnet & Undernet extension */
+#define RPL_INVITELIST       346	/* IRCnet & Undernet extension */
+#define RPL_ENDOFINVITELIST  347	/* IRCnet & Undernet extension */
 /*      RPL_EXCEPTLIST       348           IRCnet extension */
 /*      RPL_ENDOFEXCEPTLIST  349           IRCnet extension */
 
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.14 ipv6/include/patchlevel.h:1.15
--- ipv6/include/patchlevel.h:1.14	Tue Dec 17 02:40:58 2002
+++ ipv6/include/patchlevel.h	Tue Dec 17 08:16:50 2002
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.13"
+		"+INET6.14"
 
 /*
  * Deliberate empty lines
Index: ipv6/include/s_bsd.h
diff -u ipv6/include/s_bsd.h:1.5 ipv6/include/s_bsd.h:1.6
--- ipv6/include/s_bsd.h:1.5	Mon Sep 30 08:02:00 2002
+++ ipv6/include/s_bsd.h	Tue Dec 17 08:16:50 2002
@@ -20,10 +20,6 @@
 #define FLAGS_CLOSING	 0x0400	/* set when closing to suppress errors */
 #define FLAGS_LISTEN	 0x0800	/* used to mark clients which we listen() on */
 #define FLAGS_CHKACCESS	 0x1000	/* ok to check clients access if set */
-#define FLAGS_DOINGDNS	 0x2000	/* client is waiting for a DNS response */
-#define FLAGS_AUTH	 0x4000	/* client is waiting on rfc931 response */
-#define FLAGS_WRAUTH	 0x8000	/* set if we havent writen to ident server */
-#define FLAGS_LOCAL	0x00010000	/* set for local clients */
 #define FLAGS_GOTID	0x00020000	/* successful ident lookup achieved */
 #define FLAGS_DOID	0x00040000	/* I-lines say must use ident return */
 #define FLAGS_NONL	0x00080000	/* No \n in buffer */
@@ -42,6 +38,13 @@
 
 #define MODE_ISWATCH    0x80000000	/* Se enviara WATCH para este nick */
 
+/* Flags LOCALES */
+#define FLAGS_DOINGDNS  0x00002000	/* client is waiting for a DNS response */
+#define FLAGS_AUTH      0x00004000	/* client is waiting on rfc931 response */
+#define FLAGS_WRAUTH    0x00008000	/* set if we havent writen to ident server */
+
+
+
 #define SEND_UMODES \
     (FLAGS_INVISIBLE|FLAGS_OPER|FLAGS_WALLOP|FLAGS_DEAF|FLAGS_CHSERV|FLAGS_DEBUG)
 
@@ -64,7 +67,6 @@
 #define IsUnixSocket(x)		((x)->flags & FLAGS_UNIX)
 #define IsListening(x)		((x)->flags & FLAGS_LISTEN)
 #define DoAccess(x)		((x)->flags & FLAGS_CHKACCESS)
-#define IsLocal(x)		((x)->flags & FLAGS_LOCAL)
 #define IsDead(x)		((x)->flags & FLAGS_DEADSOCKET)
 #define IsJunction(x)		((x)->flags & FLAGS_JUNCTION)
 #define IsBurst(x)		((x)->flags & FLAGS_BURST)
@@ -80,10 +82,13 @@
 #define SetWallops(x)		((x)->flags |= FLAGS_WALLOP)
 #define SetDebug(x)             ((x)->flags |= FLAGS_DEBUG)
 #define SetUnixSock(x)		((x)->flags |= FLAGS_UNIX)
-#define SetDNS(x)		((x)->flags |= FLAGS_DOINGDNS)
-#define DoingDNS(x)		((x)->flags & FLAGS_DOINGDNS)
+#define SetDNS(x)		(assert(MyConnect(x)),((x)->flags_local |= FLAGS_DOINGDNS))
+#define DoingDNS(x)		(assert(MyConnect(x)),((x)->flags_local & FLAGS_DOINGDNS))
+#define SetAuth(x)              (assert(MyConnect(x)),((x)->flags_local |= FLAGS_AUTH))
+#define SetWRAuth(x)            (assert(MyConnect(x)),((x)->flags_local |= FLAGS_WRAUTH))
 #define SetAccess(x)		((x)->flags |= FLAGS_CHKACCESS)
-#define DoingAuth(x)		((x)->flags & FLAGS_AUTH)
+#define DoingAuth(x)		(assert(MyConnect(x)),((x)->flags_local & FLAGS_AUTH))
+#define DoingWRAuth(x)		(assert(MyConnect(x)),((x)->flags_local & FLAGS_WRAUTH))
 #define NoNewLine(x)		((x)->flags & FLAGS_NONL)
 #define DoPing(x)		((x)->flags & FLAGS_PING)
 #define SetAskedPing(x)		((x)->flags |= FLAGS_ASKEDPING)
@@ -100,8 +105,9 @@
 #define ClearInvisible(x)	((x)->flags &= ~FLAGS_INVISIBLE)
 #define ClearWallops(x)		((x)->flags &= ~FLAGS_WALLOP)
 #define ClearDebug(x)           ((x)->flags &= ~FLAGS_DEBUG)
-#define ClearDNS(x)		((x)->flags &= ~FLAGS_DOINGDNS)
-#define ClearAuth(x)		((x)->flags &= ~FLAGS_AUTH)
+#define ClearDNS(x)		(assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_DOINGDNS))
+#define ClearAuth(x)		(assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_AUTH))
+#define ClearWRAuth(x)          (assert(MyConnect(x)),((x)->flags_local &= ~FLAGS_WRAUTH))
 #define ClearAccess(x)		((x)->flags &= ~FLAGS_CHKACCESS)
 #define ClearPing(x)		((x)->flags &= ~FLAGS_PING)
 #define ClearAskedPing(x)	((x)->flags &= ~FLAGS_ASKEDPING)
Index: ipv6/include/struct.h
diff -u ipv6/include/struct.h:1.3 ipv6/include/struct.h:1.4
--- ipv6/include/struct.h:1.3	Thu Sep 12 12:02:14 2002
+++ ipv6/include/struct.h	Tue Dec 17 08:16:50 2002
@@ -150,6 +150,8 @@
   char sockhost[HOSTLEN + 1];	/* This is the host name from the socket and
 				   after which the connection was accepted. */
   char passwd[PASSWDLEN + 1];
+
+  unsigned int flags_local;	/* Local client flags */
 };
 
 struct Server {
Index: ipv6/ircd/channel.c
diff -u ipv6/ircd/channel.c:1.7 ipv6/ircd/channel.c:1.8
--- ipv6/ircd/channel.c:1.7	Sat Nov  9 06:52:54 2002
+++ ipv6/ircd/channel.c	Tue Dec 17 08:16:51 2002
@@ -48,7 +48,7 @@
 #include "sprintf_irc.h"
 #include "querycmds.h"
 
-RCSTAG_CC("$Id: channel.c,v 1.7 2002/11/09 14:52:54 zolty Exp $");
+RCSTAG_CC("$Id: channel.c,v 1.8 2002/12/17 16:16:51 zolty Exp $");
 
 aChannel *channel = NullChn;
 
@@ -544,7 +544,7 @@
   Reg1 Link *lp;
   int flag;
 
-  if ((IsChannelService(cptr))
+  if (IsChannelService(cptr) || IsServer(cptr)
 #if defined(BDD)
       || (IsServicesBot(cptr))
 #endif
@@ -4442,7 +4442,7 @@
 
     if (!topic)			/* only asking  for topic  */
     {
-      if (chptr->topic)
+      if (!chptr->topic)
 	sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname);
       else
       {
@@ -4527,6 +4527,23 @@
   aClient *acptr;
   aChannel *chptr;
 
+  if (parc < 2)
+  {
+    Link *lp;
+    /*
+     * Listar los canales donde tienes invitacion
+     * -zoltan
+     */
+
+    assert(MyUser(sptr));
+
+    for (lp = sptr->user->invited; lp; lp = lp->next)
+      sendto_one(sptr, rpl_str(RPL_INVITELIST), me.name, sptr->name,
+	  lp->value.chptr->chname);
+    sendto_one(sptr, rpl_str(RPL_ENDOFINVITELIST), me.name, sptr->name);
+    return 0;
+  }
+
   if (parc < 3 || *parv[2] == '\0')
   {
     sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "INVITE");
@@ -4546,6 +4563,13 @@
     return 0;
   }
 
+  if (MyUser(sptr) && IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr)
+      && !IsAnOper(sptr))
+  {
+    sendto_one(sptr, err_str(ERR_NONONREG), me.name, parv[0], acptr->name);
+    return 0;
+  }
+
   if (MyUser(sptr))
     clean_channelname(parv[2]);
   else if (IsLocalChannel(parv[2]))
@@ -4640,7 +4664,15 @@
   }
 
   if (MyConnect(acptr))
+  {
     add_invite(acptr, chptr);
+    sendto_lchanops_butone(&me, &me, chptr,
+	":%s NOTICE @%s :%s invited %s into channel %s", me.name, parv[2],
+	parv[0], acptr->name, parv[2]);
+    sendto_chanopsserv_butone(&me, &me, chptr,
+	":%s WC %s :%s invited %s into channel %s", me.name, parv[2], parv[0],
+	acptr->name, parv[2]);
+  }
 
   sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0],
       acptr->name, chptr->chname);
Index: ipv6/ircd/crypt/.cvsignore
diff -u /dev/null ipv6/ircd/crypt/.cvsignore:1.1
--- /dev/null	Tue Dec 17 08:17:05 2002
+++ ipv6/ircd/crypt/.cvsignore	Tue Dec 17 08:16:54 2002
@@ -0,0 +1,2 @@
+mkpasswd
+.*
\ No newline at end of file
Index: ipv6/ircd/ircd.c
diff -u ipv6/ircd/ircd.c:1.4 ipv6/ircd/ircd.c:1.5
--- ipv6/ircd/ircd.c:1.4	Mon Sep 16 05:22:13 2002
+++ ipv6/ircd/ircd.c	Tue Dec 17 08:16:51 2002
@@ -46,8 +46,9 @@
 #ifdef	CHROOTDIR
 #include <resolv.h>
 #endif
-#ifdef VIRTUAL_HOST
-#endif
+
+#include <assert.h>
+
 #include "h.h"
 #include "res.h"
 #include "struct.h"
@@ -72,7 +73,7 @@
 #include "s_bdd.h"
 #include "inet.h"
 
-RCSTAG_CC("$Id: ircd.c,v 1.4 2002/09/16 12:22:13 zolty Exp $");
+RCSTAG_CC("$Id: ircd.c,v 1.5 2002/12/17 16:16:51 zolty Exp $");
 
 extern void init_counters(void);
 
@@ -766,8 +767,8 @@
     /* run as a specified user */
     fprintf(stderr, "WARNING: running ircd with uid = %d\n", IRC_UID);
     fprintf(stderr, "	      changing to gid %d.\n", IRC_GID);
-    setuid(IRC_UID);
     setgid(IRC_GID);
+    setuid(IRC_UID);
 #else
     /* check for setuid root as usual */
     fprintf(stderr,
Index: ipv6/ircd/res.c
diff -u ipv6/ircd/res.c:1.5 ipv6/ircd/res.c:1.6
--- ipv6/ircd/res.c:1.5	Mon Sep 16 08:47:29 2002
+++ ipv6/ircd/res.c	Tue Dec 17 08:16:51 2002
@@ -17,6 +17,9 @@
 #if !defined(dn_skipname) && !defined(__dn_skipname)
 extern int dn_skipname(const unsigned char *, const unsigned char *);
 #endif
+
+#include <assert.h>
+
 #include "h.h"
 #include "res.h"
 #include "struct.h"
@@ -32,7 +35,7 @@
 #include "sprintf_irc.h"
 #include "inet.h"
 
-RCSTAG_CC("$Id: res.c,v 1.5 2002/09/16 15:47:29 zolty Exp $");
+RCSTAG_CC("$Id: res.c,v 1.6 2002/12/17 16:16:51 zolty Exp $");
 
 #define MAXPACKET	1024
 
Index: ipv6/ircd/s_auth.c
diff -u ipv6/ircd/s_auth.c:1.4 ipv6/ircd/s_auth.c:1.5
--- ipv6/ircd/s_auth.c:1.4	Thu Sep 12 12:19:00 2002
+++ ipv6/ircd/s_auth.c	Tue Dec 17 08:16:52 2002
@@ -36,6 +36,9 @@
 #ifdef USE_SYSLOG
 #include <syslog.h>
 #endif
+
+#include <assert.h>
+
 #include "h.h"
 #include "res.h"
 #include "struct.h"
@@ -49,7 +52,7 @@
 #include "s_auth.h"
 #include "sprintf_irc.h"
 
-RCSTAG_CC("$Id: s_auth.c,v 1.4 2002/09/12 19:19:00 zolty Exp $");
+RCSTAG_CC("$Id: s_auth.c,v 1.5 2002/12/17 16:16:52 zolty Exp $");
 
 #define IDENT_START ":%s NOTICE IDENT_LOOKUP :*** Checking Ident\r\n"
 #define IDENT_OK ":%s NOTICE IDENT_LOOKUP :*** Got ident response\r\n"
@@ -170,7 +173,8 @@
     return;
   }
   alarm((unsigned)0);
-  cptr->flags |= (FLAGS_WRAUTH | FLAGS_AUTH);
+  SetAuth(cptr);
+  SetWRAuth(cptr);
   if (cptr->authfd > highest_fd)
     highest_fd = cptr->authfd;
   return;
@@ -218,7 +222,8 @@
       while (!loc_clients[highest_fd])
 	highest_fd--;
     cptr->authfd = -1;
-    cptr->flags &= ~FLAGS_AUTH;
+
+    ClearAuth(cptr);
 
     if (IsUserPort(cptr))
     {
@@ -233,7 +238,7 @@
 #endif /* PROXY_PROTECTION */
       SetAccess(cptr);
   }
-  cptr->flags &= ~FLAGS_WRAUTH;
+  ClearWRAuth(cptr);
   return;
 }
 
Index: ipv6/ircd/s_bsd.c
diff -u ipv6/ircd/s_bsd.c:1.7 ipv6/ircd/s_bsd.c:1.8
--- ipv6/ircd/s_bsd.c:1.7	Tue Dec 17 02:40:58 2002
+++ ipv6/ircd/s_bsd.c	Tue Dec 17 08:16:52 2002
@@ -58,6 +58,9 @@
 #endif
 #include <sys/utsname.h>
 #include <resolv.h>
+
+#include <assert.h>
+
 #include "h.h"
 #include "res.h"
 #include "struct.h"
@@ -97,7 +100,7 @@
 #include "msg.h"
 #endif
 
-RCSTAG_CC("$Id: s_bsd.c,v 1.7 2002/12/17 10:40:58 zolty Exp $");
+RCSTAG_CC("$Id: s_bsd.c,v 1.8 2002/12/17 16:16:52 zolty Exp $");
 
 #define IP_LOOKUP_START ":%s NOTICE IP_LOOKUP :*** Looking up your hostname...\r\n"
 #define IP_LOOKUP_OK ":%s NOTICE IP_LOOKUP :*** Found your hostname.\r\n"
@@ -312,7 +315,7 @@
     server.SIN_FAMILY = AFINET;
 #ifndef VIRTUAL_HOST
 #ifdef INET6
-  memset(server.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
+    memset(server.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
 #else
     server.SIN_ADDR.S_ADDR = INADDR_ANY;
 #endif
@@ -695,14 +698,16 @@
  */
 enum AuthorizationCheckResult check_client(aClient *cptr)
 {
+#if defined(BDD)
   char buf[HOSTLEN + 1 + 1024];
   char host_buf[HOSTLEN + 1];
   int num_clones = -1;
   int iline = 0;
   struct db_reg *reg;
+  Reg3 const char *hname;
+#endif
   static char sockname[HOSTLEN + 1];
   Reg2 struct hostent *hp = NULL;
-  Reg3 const char *hname;
   Reg3 int i;
   enum AuthorizationCheckResult acr;
 
@@ -834,7 +839,6 @@
 #endif
   {
     ircstp->is_loc++;
-    cptr->flags |= FLAGS_LOCAL;
   }
   return ACR_OK;
 }
@@ -1858,7 +1862,7 @@
 	auth++;
 	Debug((DEBUG_NOTICE, "auth on %p %d", cptr, i));
 	RFD_SET(cptr->authfd, &read_set, currfd_index, cptr);
-	if (cptr->flags & FLAGS_WRAUTH)
+	if (DoingWRAuth(cptr))
 	  RWFD_SET(cptr->authfd, &write_set, currfd_index);
       }
 #ifdef PROXY_PROTECTION
@@ -2149,11 +2153,12 @@
     if (!(cptr = LOC_CLIENTS(i)) || IsMe(cptr))
       continue;
 #ifdef USE_POLL
+    if (!(cptr = loc_clients[LOC_FD(i)]))
+      continue;
 #ifdef PROXY_PROTECTION
-    if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr)
-	|| !(cptr = loc_clients[LOC_FD(i)]))
+    if (DoingSocks(cptr) || DoingDNS(cptr) || DoingAuth(cptr))
 #else
-    if (DoingDNS(cptr) || DoingAuth(cptr) || !(cptr = loc_clients[LOC_FD(i)]))
+    if (DoingDNS(cptr) || DoingAuth(cptr))
 #endif /* PROXY_PROTECTION */
       continue;
 #endif /* USE_POLL */
@@ -2652,8 +2657,8 @@
 #ifdef VIRTUAL_HOST
 #ifdef INET6
   memset(from.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
- /* provisional, tiene que ser una copia */
- /* FIXME-ZOLTAN */
+  /* provisional, tiene que ser una copia */
+  /* FIXME-ZOLTAN */
 #else
   from.SIN_ADDR = vserv.SIN_ADDR;
 #endif
Index: ipv6/ircd/s_err.c
diff -u ipv6/ircd/s_err.c:1.3 ipv6/ircd/s_err.c:1.4
--- ipv6/ircd/s_err.c:1.3	Sat Nov  9 06:52:54 2002
+++ ipv6/ircd/s_err.c	Tue Dec 17 08:16:52 2002
@@ -24,7 +24,7 @@
 #include "sprintf_irc.h"
 #include "m_watch.h"
 
-RCSTAG_CC("$Id: s_err.c,v 1.3 2002/11/09 14:52:54 zolty Exp $");
+RCSTAG_CC("$Id: s_err.c,v 1.4 2002/12/17 16:16:52 zolty Exp $");
 
 typedef struct {
   int num_val;
@@ -442,9 +442,9 @@
 /* 345 */
     {0, (char *)NULL},
 /* 346 */
-    {0, (char *)NULL},
+    {RPL_INVITELIST, ":%s"},
 /* 347 */
-    {0, (char *)NULL},
+    {RPL_ENDOFINVITELIST, ":End of Invite List"},
 /* 348 */
     {0, (char *)NULL},
 /* 349 */
Index: ipv6/ircd/s_socks.c
diff -u ipv6/ircd/s_socks.c:1.4 ipv6/ircd/s_socks.c:1.5
--- ipv6/ircd/s_socks.c:1.4	Tue Dec 17 02:40:58 2002
+++ ipv6/ircd/s_socks.c	Tue Dec 17 08:16:53 2002
@@ -40,6 +40,8 @@
 #include <pwd.h>
 #include <sys/types.h>
 
+#include <assert.h>
+
 #include "h.h"
 #include "res.h"
 #include "struct.h"
@@ -60,7 +62,7 @@
 
 #ifdef PROXY_PROTECTION
 
-RCSTAG_CC("$Id: s_socks.c,v 1.4 2002/12/17 10:40:58 zolty Exp $");
+RCSTAG_CC("$Id: s_socks.c,v 1.5 2002/12/17 16:16:53 zolty Exp $");
 
 #define PROXY_START ":%s NOTICE SOCKS4 :*** Checking WinGate/SocksProxy security...\r\n"
 #define PROXY_PASS ":%s NOTICE SOCKS4 :*** Proxy test passed.\r\n"
Index: ipv6/ircd/s_user.c
diff -u ipv6/ircd/s_user.c:1.8 ipv6/ircd/s_user.c:1.9
--- ipv6/ircd/s_user.c:1.8	Sat Nov  9 06:52:54 2002
+++ ipv6/ircd/s_user.c	Tue Dec 17 08:16:53 2002
@@ -69,7 +69,7 @@
 #include "IPcheck.h"
 #include "class.h"
 
-RCSTAG_CC("$Id: s_user.c,v 1.8 2002/11/09 14:52:54 zolty Exp $");
+RCSTAG_CC("$Id: s_user.c,v 1.9 2002/12/17 16:16:53 zolty Exp $");
 
 /* *INDENT-OFF* */
 
@@ -953,7 +953,6 @@
   aClient *acptr;
   aClient *server = NULL;
   char nick[NICKLEN + 2];
-  char *s;
   Link *lp;
   time_t lastnick = (time_t) 0;
   int differ = 1;
@@ -1010,8 +1009,6 @@
     sendto_ops("bad NICK param count for %s from %s", parv[1], cptr->name);
     return 0;
   }
-  if (MyConnect(sptr) && (s = strchr(parv[1], '~')))
-    *s = '\0';
   strncpy(nick, parv[1], NICKLEN + 1);
   nick[sizeof(nick) - 1] = 0;
 
@@ -1021,7 +1018,8 @@
    * creation) then reject it. If from a server and we reject it,
    * and KILL it. -avalon 4/4/92
    */
-  if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1])))
+  if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1]))
+      || (!IsServer(cptr) && strchr(nick, '~')))
   {
     sendto_one(sptr, err_str(ERR_INVALIDNICKNAME), me.name, parv[0], parv[1]);
 
Index: ipv6/todo.jcea
diff -u ipv6/todo.jcea:1.3 ipv6/todo.jcea:1.4
--- ipv6/todo.jcea:1.3	Sat Nov  9 06:52:54 2002
+++ ipv6/todo.jcea	Tue Dec 17 08:16:49 2002
@@ -1,4 +1,27 @@
-$Id: todo.jcea,v 1.3 2002/11/09 14:52:54 zolty Exp $
+$Id: todo.jcea,v 1.4 2002/12/17 16:16:49 zolty Exp $
+
+16/Dic/02
+Los "invites" deberian estar en la parte local
+de los clientes, ya que solo se guardan los invites
+de los usuarios propios.
+
+14/Dic/02
+Dentro de un an~o volver a considerar la opcion de que la tabla
+de "watch" se guarde en la red, en vez de en el cliente.
+
+Puedes ser util para usaurios que se conectan desde diferentes
+sitios, o para cubrir la deficiencia del mIRC, que no separa
+los "notify" por redes.
+
+14/Dic/02
+Dentro de un an~o, volver a considerar el comando "/knock", que
+manda un aviso a los operadores de un canal con acceso restringido.
+
+10/Dic/02
+Meditar sobre la conveniencia de migrar las estructuras de compresion
+a "servidores", en vez de a "conexiones locales". Ello ahorraria memoria,
+aunque comprometeria la posibilidad futura de soportar compresion
+con los usuarios.
 
 17/Oct/02
 [11:42] <NiKoLaS> que al hacer un /invite te devuelva los canales donde estas invitado y aun no entraste?
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Toni G. <zo...@us...> - 2002-12-17 10:41:19
      
     
   | 
CVSROOT    : /cvsroot/irc-dev
Module     : ipv6
Commit time: 2002-12-17 10:41:08 UTC
Modified files:
     CAMBIOS.Ipv6 include/patchlevel.h ircd/IPcheck.c ircd/s_bsd.c
     ircd/s_socks.c
Log message:
INET 6.13
---------------------- diff included ----------------------
Index: ipv6/CAMBIOS.Ipv6
diff -u ipv6/CAMBIOS.Ipv6:1.12 ipv6/CAMBIOS.Ipv6:1.13
--- ipv6/CAMBIOS.Ipv6:1.12	Sat Nov  9 06:52:54 2002
+++ ipv6/CAMBIOS.Ipv6	Tue Dec 17 02:40:57 2002
@@ -1,3 +1,8 @@
+* 2002/12/17 zo...@ir...          INET6.13
+-----------------------------------------------------------------------
+Compila con VIRTUAL_HOST y PROXY_PROTECTION activados y desactivados :)
+Ya solo queda por arreglar el de VIP, que hay que desactivar.
+
 * 2002/11/09 zo...@ir...          INET6.12
 -----------------------------------------------------------------------
 Actualizacion IRCD hasta el u2.10.H.06.13.
Index: ipv6/include/patchlevel.h
diff -u ipv6/include/patchlevel.h:1.13 ipv6/include/patchlevel.h:1.14
--- ipv6/include/patchlevel.h:1.13	Sat Nov  9 06:52:54 2002
+++ ipv6/include/patchlevel.h	Tue Dec 17 02:40:58 2002
@@ -49,7 +49,7 @@
 		\
 		\
 		\
-		"+INET6.12"
+		"+INET6.13"
 
 /*
  * Deliberate empty lines
Index: ipv6/ircd/IPcheck.c
diff -u ipv6/ircd/IPcheck.c:1.5 ipv6/ircd/IPcheck.c:1.6
--- ipv6/ircd/IPcheck.c:1.5	Mon Sep 16 05:22:13 2002
+++ ipv6/ircd/IPcheck.c	Tue Dec 17 02:40:58 2002
@@ -37,8 +37,7 @@
 #include "support.h"
 #endif
 
-#ifndef INET6
-RCSTAG_CC("$Id: IPcheck.c,v 1.5 2002/09/16 12:22:13 zolty Exp $");
+RCSTAG_CC("$Id: IPcheck.c,v 1.6 2002/12/17 10:40:58 zolty Exp $");
 
 extern aClient me;
 extern time_t now;
@@ -97,7 +96,7 @@
  * Calculate a `hash' value between 0 and HASHTABSIZE, from the internet address `IN_ADDR'.
  * Apply it immedeately to the table, effectively hiding the table itself.
  */
-#ifdef INET6
+#ifdef INET61
 /*
  * CALCULATE_HASH for IPv6 address
  */
@@ -670,4 +669,3 @@
 }
 
 #endif
-#endif /* !INET6 */
Index: ipv6/ircd/s_bsd.c
diff -u ipv6/ircd/s_bsd.c:1.6 ipv6/ircd/s_bsd.c:1.7
--- ipv6/ircd/s_bsd.c:1.6	Mon Sep 16 05:22:13 2002
+++ ipv6/ircd/s_bsd.c	Tue Dec 17 02:40:58 2002
@@ -97,7 +97,7 @@
 #include "msg.h"
 #endif
 
-RCSTAG_CC("$Id: s_bsd.c,v 1.6 2002/09/16 12:22:13 zolty Exp $");
+RCSTAG_CC("$Id: s_bsd.c,v 1.7 2002/12/17 10:40:58 zolty Exp $");
 
 #define IP_LOOKUP_START ":%s NOTICE IP_LOOKUP :*** Looking up your hostname...\r\n"
 #define IP_LOOKUP_OK ":%s NOTICE IP_LOOKUP :*** Found your hostname.\r\n"
@@ -310,10 +310,13 @@
   if (port)
   {
     server.SIN_FAMILY = AFINET;
-/* FIXME-ZOLTAN */
 #ifndef VIRTUAL_HOST
-    server.SIN_ADDR.S_ADDR = INADDR_ANY;
+#ifdef INET6
+  memset(server.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
 #else
+    server.SIN_ADDR.S_ADDR = INADDR_ANY;
+#endif
+#else /* VIRTUAL_HOST */
     server.SIN_ADDR = vserv.SIN_ADDR;
 #endif
 #ifdef TESTNET
@@ -2647,9 +2650,19 @@
 
   memset(&from, 0, sizeof(from));
 #ifdef VIRTUAL_HOST
+#ifdef INET6
+  memset(from.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
+ /* provisional, tiene que ser una copia */
+ /* FIXME-ZOLTAN */
+#else
   from.SIN_ADDR = vserv.SIN_ADDR;
+#endif
+#else /* VIRTUALHOST */
+#ifdef INET6
+  memset(from.SIN_ADDR.S_ADDR, 0x0, sizeof(struct IN_ADDR));
 #else
   from.SIN_ADDR.S_ADDR = htonl(INADDR_ANY);
+#endif
 #endif
 #ifdef TESTNET
   from.SIN_PORT = htons(atoi(UDP_PORT) + 10000);
Index: ipv6/ircd/s_socks.c
diff -u ipv6/ircd/s_socks.c:1.3 ipv6/ircd/s_socks.c:1.4
--- ipv6/ircd/s_socks.c:1.3	Thu Sep 12 12:02:15 2002
+++ ipv6/ircd/s_socks.c	Tue Dec 17 02:40:58 2002
@@ -60,7 +60,7 @@
 
 #ifdef PROXY_PROTECTION
 
-RCSTAG_CC("$Id: s_socks.c,v 1.3 2002/09/12 19:02:15 zolty Exp $");
+RCSTAG_CC("$Id: s_socks.c,v 1.4 2002/12/17 10:40:58 zolty Exp $");
 
 #define PROXY_START ":%s NOTICE SOCKS4 :*** Checking WinGate/SocksProxy security...\r\n"
 #define PROXY_PASS ":%s NOTICE SOCKS4 :*** Proxy test passed.\r\n"
@@ -244,7 +244,12 @@
   sk->vn = 4;
   sk->cd = 1;
   sk->dstport = us.SIN_PORT;
+#ifdef INET6
+
+#else
   sk->dstip = us.SIN_ADDR.S_ADDR;
+#endif
+
 /* Ningun nombre de usuario */
   *uname = '\0';
 
----------------------- End of diff -----------------------
 | 
| 
     
      
      
      From: Jorge D. <jdu...@na...> - 2002-11-15 16:57:18
      
     
   | 
5:51p.04 (sNotice/ipv6.irc-universal.net) *** Notice -- BlasteR adding local GLINE for *@2001:618:400:266b*, expiring at 1037400555 (Fri Nov 15 17:49:15 2002): test ums? - 1037400555 test ums? (expires at Fri Nov 15 17:49:15 2002). <- raw de ``despedida´´ - (SIGUE la conexión) DEBUG: Sending [:ipv6.irc-universal.net 465 BlasteR 1037400555 :test ums? (expires at Fri Nov 15 17:49:15 2002).] to BlasteR Sending [:ipv6.irc-universal.net NOTICE BlasteR :*** Notice -- G-line active for BlasteR[2001:618:400:266b::f]] to BlasteR Por deducción, se supone que es un caso igual que /WHO. El IRCD no encuentra usuarios concordantes con la mascara G-Lineada... _ ____ ____ | | | _ \ | _ \ _ | | | | | | | |_) | Jorge Duarte Rodríguez - mount | |_| | | |_| | | _ < _ \___(_) |____(_) |_| \_(_) ``Hay cosas en la vida, que no se pueden expresar con palabras´´.  | 
| 
     
      
      
      From:  <zo...@te...> - 2002-11-15 16:54:15
      
     
   | 
Arggggg, me he equivocado. > 3=BA VirtualHosting Hay que activarlo, porque desactivado da error de compilacion :P Un saludo  | 
| 
     
      
      
      From:  <zo...@te...> - 2002-11-15 16:16:06
      
     
   | 
>gcc -g -O3 -pipe -I../include -I../zlib -c s_bsd.c -o s_bsd.o >s_bsd.c: In function `inetport': >s_bsd.c:315: incompatible types in assignment >s_bsd.c: In function `setup_ping': >s_bsd.c:2652: incompatible types in assignment >make[1]: *** [s_bsd.o] Error 1 Okis, se ve que sucede con el VIRTUALHOST activado, bueno lo apunto pa el todo. Actualmente, para compilar correctamente, hay que tener lo siguiente desactivado en el make config: 1=BA BDD_VIP 2=BA Detector de Proxies 3=BA VirtualHosting Espero que para el proximo commit, se pueda activar la 2 y 3. Lo de ips virtuales lo dejo para un poco mas adelante. Un saludo zoltan  |