Спасибо за ответы. Несколько дней понадобилось, чтобы разобраться с ioctl.
Код - как у psL:
Код
s = socket(AF_INET,SOCK_DGRAM,0); //temporary socket
memset(&ifr, 0, sizeof(struct ifreq));
memset(&sin, 0, sizeof(struct sockaddr));
strncpy(ifr.ifr_name, "eth0", IF_NAMESIZE-1);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr("192.168.0.123");
memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr));
if(ioctl(s, SIOCSIFADDR, &ifr)< 0) //set IP-Adress and check for errors
{ /*close(s);*/ }
close(s);
Но проблема в том, что опять ничего не работает. На машине Ubuntu все отлично работает: адрес меняется. Когда запускаю этот код в Angstrom - нифига не пашет. Вот что пишет ifconfig -a.
Код
eth0 Link encap:Ethernet HWaddr BC:6A:29:57:11:80
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr BC:6A:29:57:11:81
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Запускаю из-под рута. Может разрешений не хватает ? Но ведь из sh - все задается.