TAP/TUN(二)
#include<assert.h>#include<fcntl.h>#include<stdio.h>#include<string.h>#include<sys/socket.h>#include<sys/ioctl.h>#include<linux/if.h>#include<linux/if_tun.h>#include<sys/types.h>#include<errno.h>#include<net/route.h>intTap=0;intTap1=0;int interface_up(char*interface_name){int s;if((s = socket(PF_INET,SOCK_STREAM,0))<0){printf("Error create socket :%m/n", errno);return-1;}struct ifreq ifr;strcpy(ifr.ifr_name,interface_name);short flag;flag = IFF_UP;if(ioctl(s, SIOCGIFFLAGS,&ifr)<0){printf("Error up %s :%m/n",interface_name, errno);return-1;}ifr.ifr_ifru.ifru_flags |= flag;if(ioctl(s, SIOCSIFFLAGS,&ifr)<0){printf("Error up %s :%m/n",interface_name, errno);return-1;}return0;}int tun_create(char*dev,int flags){struct ifreq ifr;int fd, err;assert(dev != NULL);if((fd = open("/dev/net/tun", O_RDWR))<0){return fd;}memset(&ifr,0,sizeof(ifr));ifr.ifr_flags |= flags;if(*dev !='\0'){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;}int main(int argc,char*argv[]){char tun_name[IFNAMSIZ]="tap0";char tun_name1[IFNAMSIZ]="tap1";Tap=tun_create(tun_name, IFF_TAP | IFF_NO_PI);if(Tap<0){perror("tun_create");return1;}printf("TAP name is %s\n", tun_name);printf("Tap=%d\n",Tap);//interface_up(tun_name);system("ifconfig tap0 10.66.31.185 netmask 255.255.0.0 up");while(1);}
程序要一直运行,否则程序退出后创建的TAP设备会被释放

附件列表
TAP/TUN(二)的更多相关文章
- TAP/TUN摘要
TUN适用于IP帧.Tap适用于以太网帧.TAP摸拟一个以太网设备(以arp广播MAC识别),它操作第二层数据包如以太网数据帧.TUN模拟了网络层ip设备(以点对点的方式,使用ip标识),操作第三层数 ...
- 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Linux 虚 ...
- 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...
- Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...
- [原创] 详解云计算网络底层技术——虚拟网络设备 tap/tun 原理解析
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在云计算时代, ...
- 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...
- TAP/TUN浅析(一)
参考链接:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ TAP 设备与 VETH 设备 TUN/T ...
- TAP/TUN浅析
转:http://www.cnblogs.com/yml435/p/5917628.html 参考链接:https://www.ibm.com/developerworks/cn/linux/1310 ...
- [转]Linux-虚拟网络设备-tun/tap
转: 原文:https://blog.csdn.net/sld880311/article/details/77854651 ------------------------------------- ...
随机推荐
- 夺命雷公狗-----React---27--小案例之react经典案例todos(清除已完成)
这个功能其实也是很简单的,就只是让todos里面的内isDown进行取反即可 然后在Zong里面进行下修改即可 效果如下所示: 代码如下所示: <!DOCTYPE html> <ht ...
- 误用的volatile
在嵌入式编程中,有对某地址重复读取两次的操作,如地址映射IO.但如果编译器直接处理p[0] = *a; p[1] = *a这种操作时,往往会忽略后一个,而直接使用前一个已计算的结果.这是有问题的,因为 ...
- 自定义Chrome插件Vimium
自定义快捷键 map e scrollPageUp map w removeTab map s nextTab map a previousTab map q goNext map z restore ...
- QT数据库操作
浏览: 在QSqlQuery类中当执行exec()后会把指针放在记录集中第一个记录之上,所以需要调用QSqlQuery::next()来获取第一个数据,下面通过循环体来遍历所有表中的数据. while ...
- Submit Text 快捷键总结
Ctrl+D : 选择单词,重复可增加选择下一个相同的单词Ctrl+F : 查找内容Ctrl+G : 跳转到指定行Ctrl+H : 替换 Ctrl+J : 合并行(已选择需要合并的多行时)Ctr ...
- ES搜索引擎-简单入门
基本概念: 索引Index es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据库实例(db)相当.索引存放和读取的基本单元是文档(document).es内部使用的是apa ...
- [转]hibernateTools工具安装及使用总结(eclipse 3.6)
转载地址:http://blueblood79.iteye.com/blog/773177 最近项目采用flex+spring+hibernate的框架开发,之前虽说有多年的Java开发经验了,但是一 ...
- Navicat for MySQL安装之后不知道登录密码
1,关闭你现在正在运行的mysql数据库,关闭mysql服务器. 2,关闭数据库后,运行点击开始运行,输入cmd进入命令行窗口,在这个命令行中操作进入到你数据库所在的安装路径,一般默认安装的话都会在e ...
- MYSQL中存储过程的创建,调用及语法
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...
- 在Excel中制作雷达图
雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只 ...