Bonjour,
Je recherche un moyen de récupérer dans mon code l'adresse IP attribué en DHCP.
J'ai trouvé les fonctions getifaddrs et freeifaddrs mais je n'arrive pas à les utilisées par manque surement d'une bibliothèque.
Voila pour le moment le code que j'ai trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void getIpDHCP() { struct ifaddrs *ifap, *ifa; struct sockaddr_in *sa; char *addr; getifaddrs (&ifap); for (ifa = ifap; ifa; ifa = ifa->ifa_next) { if (ifa->ifa_addr->sa_family==AF_INET) { sa = (struct sockaddr_in *) ifa->ifa_addr; addr = inet_ntoa(sa->sin_addr); printf("Interface: %s\tAddress: %s\n", ifa->ifa_name, addr); } } freeifaddrs(ifap); }
Je n'avais pas ifaddrs.h je l'ai ajouté:
Ensuite a la compilation dans Eclipse j'ai un message d'erreur sur les 2 méthodes qui m’intéresse a savoir:getifaddrs et freeifaddrs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #ifndef _IFADDRS_H_ #define _IFADDRS_H_ struct ifaddrs { struct ifaddrs *ifa_next; char *ifa_name; u_int ifa_flags; struct sockaddr *ifa_addr; struct sockaddr *ifa_netmask; struct sockaddr *ifa_dstaddr; void *ifa_data; }; /* * This may have been defined in <net/if.h>. Note that if <net/if.h> is * to be included it must be included before this header file. */ #ifndef ifa_broadaddr #define ifa_broadaddr ifa_dstaddr /* broadcast address interface */ #endif #include <sys/cdefs.h> __BEGIN_DECLS extern int getifaddrs __P((struct ifaddrs **)); extern void freeifaddrs __P((struct ifaddrs *)); __END_DECLS #endif
undefined reference to `freeifaddrs'
undefined reference to `getifaddrs'
J'ai vu qu'il fallait apparemment utiliser glibc. Je l'ai ajouté dans les librairies mais j'ai un message d'erreur: Cannot find -lglibc.
Je précise que je travail sur un petit module DIGI 9210, avec un linux embarqué créé par DIGI depuis DIGI EL(Eclipse) .
Merci de votre aide.
S'il y a un a un autre moyen de récupérer l'adresse IP, merci de me l'indiqué. J'ai pensé aussi a envoyer un ifconfig dans un fichier et l’analyser mais c'est pas très propre.
Merci
Partager