Не могу взять адрес сетевого интерфейса. Может кто посоветует что?(где копать или в чём ошибся).
Заранее благодарю.
Вот текст прграммы:
----------------------------------------
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/ioctl.h>
#include <linux/if.h>
#include <linux/in.h>
char * intf = "eth0";
int main ()
{
struct ifparam
{
__u32 ip;
__u32 mask;
int mtu;
int index;
} ifp;
int fd;
struct sockaddr_in s;
struct ifreq ifr;
memset ((void *)&ifr, 0, sizeof (struct ifreq));
if ((fd = socket (AF_INET, SOCK_DGRAM, 0))<0)
return -1;
sprintf (ifr.ifr_name, "%s", intf);
memset ((void *)&s, 0, sizeof (struct sockaddr_in));
memcpy ((void *)&s, (void *)&ifr.ifr_addr, sizeof (struct sockaddr_in));
memcpy ((void *)&ifp.ip, (void *)&s.sin_addr.s_addr, sizeof (__u32));
printf ("%s\n", inet_ntoa(ifp.ip));
return ifp.ip;
}
-----------------------------------------------------------
Вот вывод программы: 0.0.0.0
Почему так?
С уважением,
Андрей.