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