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.

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);
	   

}
Voila pour le moment le code que j'ai trouvé.
Je n'avais pas ifaddrs.h je l'ai ajouté:

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
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
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