RE: [IPv6 IRC-DEV] IP en formato base 64 en el IRCU de Undernet
Brought to you by:
zolty
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 |