Estoy tratando de obtener y configurar la dirección IP utilizando la interfaz IOCTL en Linux. Lo puedo obtener y configurar con éxito. Cuando configuro la dirección IP, ifconfig eth0
muestra la dirección IP correcta, pero luego el sistema se desconecta. es decir, el sistema no se puede hacer ping. Aquí está mi código para configurar la dirección IP. Por favor, avíseme si me falta algo.Establecer la dirección IP utilizando SIOCSIFADDR ioctl
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);