1
如何在Linux上以編程方式添加任何接口?如何在Linux上以編程方式添加接口?
有沒有什麼辦法可以添加eth,loop或tun接口? 可以通過netlink完成嗎?
語言是C++,OS是Ubuntu。
如何在Linux上以編程方式添加任何接口?如何在Linux上以編程方式添加接口?
有沒有什麼辦法可以添加eth,loop或tun接口? 可以通過netlink完成嗎?
語言是C++,OS是Ubuntu。
添加接口的方式取決於接口的類型。例如,通過打開/dev/net/tun
並在您獲得的文件描述符上設置幾個ioctl
s,創建一個例如tun or tap接口。這是Linux kernel documentation的一個小例子:
#include <linux/if.h>
#include <linux/if_tun.h>
int tun_alloc(char *dev)
{
struct ifreq ifr;
int fd, err;
if((fd = open("/dev/net/tun", O_RDWR)) < 0)
return tun_alloc_old(dev);
memset(&ifr, 0, sizeof(ifr));
/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
*/
ifr.ifr_flags = IFF_TUN;
if(*dev)
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
if((err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0){
close(fd);
return err;
}
strcpy(dev, ifr.ifr_name);
return fd;
}
你問的是如何在C++中做一些你知道如何從shell命令中做些什麼?如果是這樣的話:你能列出你想要模仿的shell命令嗎?然後......什麼約束阻止你呼叫外殼? (或者:你在第一次使用C++的時候是怎麼畫的?) – HostileFork
那麼我們談論的是什麼樣的linux ... Mandriva,ubuntu,Debian。 這將使你很容易爲程序添加接口,我喜歡使用Eclipse或在你的PC上添加酒和安裝視覺工作室2010 – Markin
@HostileFork我不知道如何從shell命令做到這一點 –