Установить IP-адрес с помощью SIOCSIFADDR ioctl

Я пытаюсь получить и установить 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);
7
задан Keith M 13 February 2019 в 05:39
поделиться