- #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;
- }
控制网卡打开和关闭的C代码
最新推荐文章于 2021-10-19 16:35:35 发布