Я пытаюсь получить и установить IP-адрес с помощью интерфейса IOCTL в Linux.
Успешно могу достать и установить. Когда я устанавливаю IP-адрес,
ifconfig eth0
показывает правильный IP-адрес, но затем система отключается.
т.е. система не пингуется.
Вот мой код для установки IP-адреса. Пожалуйста, дайте мне знать, если мне что-то не хватает.
struct ifreq ifr;
in_addr_t in_addr;
struct sockaddr_in sin;
memset(&ifr, 0, sizeof(struct ifreq));
memset(&sin, 0, sizeof(struct sockaddr_in));
sockfd = socket(AF_INET, SOCK_STREAM, 0);
sprintf(ifr.ifr_name, "eth0");
in_addr = inet_addr("192.168.101.17");
sin.sin_addr.s_addr = in_addr;
memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr));
io = ioctl(sockfd, SIOCSIFADDR, (char *)&ifr);