#include <stdio.h>

#include <sys/ioctl.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <stdlib.h>

#include <net/if.h>

#include <string.h>

int main (int argc, char **argv)
{
	int fd;
	struct ifreq ifr;
	struct sockaddr_in sa;
	char *ifname;

	if (argc != 2) {
		fprintf(stderr, "Usage: %s <name>\n", argv[0]);
		exit(1);
	}

	ifname = argv[1];

	strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));

	if ( (fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
		perror("socket");
		exit(1);
	}

	if (ioctl(fd, SIOCGIFADDR, (char*)&ifr) == -1) {
		perror("ioctl(SIOCGIFFLAGS)");
		exit(1);
	}

	memcpy(&sa, &ifr.ifr_addr, sizeof(sa));

	printf("address: %s\n", inet_ntoa(sa.sin_addr));

	return 0;
}

