- 论坛徽章:
- 0
|
在LINUX下有没有哪个函数可以设置网卡模式
ioctl
测试:
- #include <stdio.h>;
- #include <net/if.h>;
- #include <sys/socket.h>;
- #include <sys/raw.h>;
- #include <sys/ioctl.h>;
- int
- main ()
- {
- int fd;
- struct ifreq ifr;
- char *dev;
- dev="eth0";
- fd = socket (PF_INET, SOCK_DGRAM, 0);
- strncpy ((char *)ifr.ifr_name, dev, sizeof(ifr.ifr_name));
- ioctl (fd, SIOCGIFFLAGS, &ifr);
- if (ifr.ifr_flags & IFF_PROMISC)
- printf ("%s\n", "promisc on");
- else
- printf ("%s\n", "promisc off");
- }
复制代码
打开:
- #include <stdio.h>;
- #include <net/if.h>;
- #include <sys/socket.h>;
- #include <sys/raw.h>;
- #include <sys/ioctl.h>;
- int
- main ()
- {
- int fd;
- struct ifreq ifr;
- char *dev;
- dev="eth0";
- fd = socket (PF_INET, SOCK_DGRAM, 0);
- strncpy ((char *)ifr.ifr_name, dev, sizeof(ifr.ifr_name));
- ioctl (fd, SIOCGIFFLAGS, &ifr);
- ifr.ifr_flags |= IFF_PROMISC;
- ioctl (fd, SIOCSIFFLAGS, &ifr);
- }
复制代码
关闭:
- #include <stdio.h>;
- #include <sys/ioctl.h>;
- #include <net/if.h>;
- #include <sys/socket.h>;
- #include <sys/raw.h>;
- int
- main ()
- {
- int fd;
- struct ifreq ifr;
- char *dev;
- dev="eth0";
- fd = socket (PF_INET, SOCK_DGRAM, 0);
- strncpy ((char *)ifr.ifr_name, dev, sizeof(ifr.ifr_name));
- ioctl (fd, SIOCGIFFLAGS, &ifr);
- ifr.ifr_flags &= ~IFF_PROMISC;
- ioctl (fd, SIOCSIFFLAGS, &ifr);
- }
复制代码 |
|