自己写的通过ioctl()来修改ip地址的程序,结果在运行(root)的时候报错, 不知道是memcpy(&ifr->ifr_addr,(struct sockaddr *)&addr, sizeof(addr));的问题,还是ioctl()调用的时候需要额外的参数, [code] int set_ipaddr(int sockfd, struct ifreq *ifr, char *ifname, char *ip) { struct sockaddr_in addr; bzero(&addr, sizeof(addr)); addr.sin_family = PF_INET; addr.sin_addr.s_addr ...
by dglwx - C/C++ - 2008-01-22 15:59:10 阅读(3711) 回复(3)
...... struct ifconf ifc; char devid[256]={0}; char is_find_dev = 0; struct ifreq buf[MAXINTERFACES]; ifc.ifc_len = sizeof(buf); ifc.ifc_buf = (caddr_t) buf; if (!ioctl(*sockfd, SIOCGIFCONF, (char *) &ifc)) { int interface = ifc.ifc_len / sizeof(struct ifreq); while (interface-- > 0) { if (!(ioctl(*sockfd, SIOCGIFADDR, (char *) &buf[interface]))) { if(0 == strncmp(deviceip->a...
想设置网卡为混杂模式,代码如下: struct strioctl siotcl; siotcl.ic_cmd = MACIOC(11); siotcl.ic_timout = 0; siotcl.ic_len = 0; siotcl.ic_dp = NULL; // siotcl.ic_cmd = mibufed; fd = open("/dev/mdi/e3A0",O_RDWR); res = ioctl(fd,I_STR,&siotcl); if(res == -1) { perror("ioctl failed"); } else { printf("ioctl success\n"); } 但是运行后总出现错误,错误如下: ioctl failed...