#include <net/if.h>
int main(int argc, char** argv)
{
int sockfd;
struct ifreq ifr;
bzero(&ifr,sizeof(struct ifreq));
sockfd = socket(AF_INET,SOCK_DGRAM,0);
strcpy(ifr.ifr_name,"ra0");
ioctl(sockfd,SIOCGIFFLAGS,&ifr);
//这里先得到ra0的状态,如果是开就关,如果是关就开,而ifconfig的源码是判断up和down参数来打开和关闭ra0的,不过原理是一样
if(ifr.ifr_flags & IFF_UP) {
ifr.ifr_flags &= ~IFF_UP;
printf("--------------stop ra0--------------\n");
}
else {
ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
printf("--------------start ra0-------------\n");
}
ioctl(sockfd,SIOCSIFFLAGS,&ifr);
}