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
|