Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1616 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] recuperer sa propre ipv6

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] recuperer sa propre ipv6

n°797695
gnienfo
Posté le 16-07-2004 à 14:13:42  profilanswer
 

Bonjour,
J'ai bcp cherche et je n'ai pas trouve comment faire pour recuperer ma propre (celle de ma propre machine) adresse ipv6 sous forme de *char ou meme de libnet_in6_addr.
Existe-t-il des fonctions de la libnet, inet ou bien pcap? (sachant que la fonction libnet_getipaddr6() n'est pas implementee pour la libnet 1.1.2.1)
merci d'avance!

mood
Publicité
Posté le 16-07-2004 à 14:13:42  profilanswer
 

n°798814
Taz
bisounours-codeur
Posté le 18-07-2004 à 11:41:31  profilanswer
 

quel environnement ? note que rajouté ça dans libgtop CVS pour Linux, les autres implémentations suivront

n°799736
gnienfo
Posté le 19-07-2004 à 16:39:47  profilanswer
 

je bosse sous freeBSD 4.10

n°799907
Taz
bisounours-codeur
Posté le 19-07-2004 à 19:38:50  profilanswer
 

ah. ben là je sais pas. si tu as la solution sans passer par quoi que ce soit d'extérieur, je suis intéressé

n°803287
gnienfo
Posté le 22-07-2004 à 15:34:11  profilanswer
 

J'ai trouve!! :bounce:  
 
Avec getifaddrs() y'a moyen!  :pt1cable:  
 
voir "man getifaddrs" pour capter  
ce qui vous semble etrange ( et meme voir les include).
 
inclure:  
 

Code :
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <ifaddrs.h>


 
voila le code :
 

Code :
  1. /*
  2. * Resolution d'adresse IPv6 locale
  3. * mode est juste un entier dont la macros  
  4. * est a definir a sa sauce
  5. */
  6. struct in6_addr getLocalIP6(int mode) {
  7.   struct ifaddrs *res = NULL;
  8.   struct sockaddr_in6 *so;
  9.   struct in6_addr ip;
  10.   /* recuperation d'informations sur les interfaces */
  11.   if ( getifaddrs(&res))
  12.     printf("getifaddrs\n" );
  13.   /* filtrage des adresses IPv6 dans la structure ifaddrs */
  14.   for( ; res != NULL; res = res->ifa_next) {
  15.     /* on compare avec "device" qui contient le nom
  16.      * de l'interface qui nous concerne mais vous pouvez
  17.      * mettre celle que vous voulez ou bien ne pas en mettre
  18.      * du tout pour recuperer les infos sur toutes les interfaces
  19.      */
  20.     if ( !bcmp( res->ifa_name, device, sizeof(res->ifa_name) )
  21.         && ( (res->ifa_addr)->sa_family == AF_INET6 ) ) {
  22.       so = (struct sockaddr_in6 *)res->ifa_addr;
  23.       /* on recupere soit l'adresse locale en fe80:~ */
  24.       if (mode == LOCAL_LINK) {
  25.         /* adresse lien local */
  26.         if ( !bcmp(so->sin6_addr.s6_addr, "\xfe\x80", 2) ) {
  27.           bcopy(so->sin6_addr.s6_addr, &ip, 16);
  28.           break;
  29.         }
  30.       /* sinon on recupere l'adresse globale en 2001:~  
  31.        * ca peut aussi etre 3001:~ enfin vous voyez...
  32.        */
  33.       } else if (mode == GLOBAL) {
  34.         /* adresse globale */
  35.         if ( !bcmp(so->sin6_addr.s6_addr, "\x20", 1) ) {
  36.           bcopy(so->sin6_addr.s6_addr, &ip, 16);
  37.           break;
  38.         }
  39.       }
  40.     }
  41.   }
  42.   freeifaddrs(res);
  43.   return ip;
  44. }


 
bon il faudrait peut-etre tester si ca rend pas une adresse valide
mais bon l'important du code est la!
 
j'espere que ca aidera des gens!  
Taz peut-etre...
si vous avez besoin de complement d'info sur le code n'hesitez pas!
enfin jetez un coup d'oeil au man getifaddrs avant quand meme pour capter le principe des interfaces chainees...
 
P.S.:tu fais quoi en IPv6 sinon Taz?

n°803297
Taz
bisounours-codeur
Posté le 22-07-2004 à 15:38:53  profilanswer
 

ben pareil que Linux quoi.
 
Ce que je fais ? j'ai une bibliothèque multiplateforme sur GNOME.
http://cvs.gnome.org/viewcvs/libgt [...] iew=markup


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] recuperer sa propre ipv6

 

Sujets relatifs
[Delphi] Récupérer les infos affichées par une autre appliRécupérer le loin de la session courante
Shell Linux : récupérer pièce attachée mailrecuperer variable d'URL en JavaScript
comment recuperer la valeur d'un bouton radio ?[Python][ZODB] récuperer les attributs d'un objet par reflexivité
récuperer dans du php une valeur envoyé par du javascriptrecuperer le numero de serie unique du processeur
VBA SQL recuperer données d'un SELECTRecuperer des infos dans les entetes de fax
Plus de sujets relatifs à : [C] recuperer sa propre ipv6


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR