#include <features.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net/if.h> #include <net/if_arp.h> #include <stdio.h> #include <errno.h> #include <fcntl.h> #include <ctype.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netdb.h> static int clr_flag(char *ifname, short flag) { struct ifreq ifr; int fd,skfd; /* Create a channel to the NET kernel. */ if ((skfd = socket(AF_INET,SOCK_DGRAM ,0)) < 0) { perror("socket"); exit(1); } fd = skfd; strncpy(ifr.ifr_name, ifname, IFNAMSIZ); if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) { fprintf(stderr, "%s: unknown interface: %s\n", ifname, strerror(errno)); return -1; } strncpy(ifr.ifr_name, ifname, IFNAMSIZ); if(flag == 1) ifr.ifr_flags &= ~IFF_UP; else if(flag == 2) ifr.ifr_flags |= IFF_UP; if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) { perror("SIOCSIFFLAGS"); return -1; } return (0); }int main(int argc,char **argv){ clr_flag("eth0",1); sleep(4); clr_flag("eth0",2); return 0;}