pluto中监听各个网口的500端口处理逻辑
1. pluto中监听各个网口的500端口处理逻辑
whack_handle()
find_ifaces()
find_raw_ifaces4()
socket、setsockopt、bind、ioctl、
通过
ioctl(master_sock, SIOCGIFCONF, &ifconf)获取到所有的网络配置信息(网口名称和IP地址)通过
ioctl(master_sock, SIOCGIFFLAGS, &auxinfo)获取网卡是否处于UP状态构建UP状态的<网口名,IP地址>链表,并返回此链表
在获取网口IP时,只能获取到该网口下的IP地址信息:
'''c struct raw_iface {
ip_address addr; /*这里可以看出只能获取一个IP地址*/
char name[IFNAMSIZ + 20]; /* what would be a safe size? */
struct raw_iface *next;
}; '''
find_raw_ifaces6()
- 通过
/proc/net/if_inet6文件来获取IPv6的网络接口 - 获取网络接口IP并返回链表
- 通过
process_raw_ifaces()
ipesc开始的接口直接跳过, 也就是说如果添加tunnel接口,这里需要确认下mast开始的接口直接跳过遍历所有的接口,确保没有配置相同的接口IP地址
创建监听的套接字(绑定500和4500端口
接口采用的数据结构:
struct iface {
char *vname; /* virtual (ipsec) device name */
char *rname; /* real device name */
ip_address addr; /* interface IP address */
u_int16_t port; /* host byte order */
int fd; /* file descriptor of socket for IKE UDP messages */
struct iface *next;
#ifdef NAT_TRAVERSAL
bool ike_float;
#endif
enum { IFN_ADD, IFN_KEEP, IFN_DELETE } change;
};
全局变量:interfaces通过上述流程后便构造成功,且获取到了接口的所有IP地址,然后通过链表连接起来
pluto中监听各个网口的500端口处理逻辑的更多相关文章
- Vue 为什么在 HTML 中监听事件?
为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...
- 在Javascript中监听flash事件(转)
在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...
- Fragment中监听onKey事件,没你想象的那么难。
项目中越来越多的用到Fragment,在用Fragment取代TabHost的时候遇到了一个问题,我们都知道,TabHost的Tab为Activity实例,有OnKey事件,但是Fragment中没有 ...
- wemall app商城源码Fragment中监听onKey事件
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发Fragment中监听onK ...
- 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法!
在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法! 其实像按键的监听,我相信很多人都很熟练了,我肯定也不会说这些基础的东西,所以,前期,还是 ...
- vue mounted中监听div的变化
vue mounted中监听div的变化 <div style="width:200px;height:30px;background: #0e90d2" id=" ...
- 小程序中监听textarea或者input输入的值动态改变data中数组的对象的值
Page({ data: { todoLists:[ { detail:"", date:"", location:"", priority ...
- Android 监听 Android中监听系统网络连接打开或者关闭的实现代码
本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.c ...
- Android-服务中监听电源键和Home键的广播、在锁屏下仍然工作的方法
Android-服务中监听电源键和Home键的广播 http://blog.csdn.net/u014657752/article/details/49512485 Android开发之如何监听让服 ...
随机推荐
- Bugku-misc 1-8题总结
1.签到题 略过 2.这是一张单纯的图片 拉入winhex,在最后面有一段Uniocde编码,解码得到flag. 3.隐写 题目是隐写,binwalk打开分析 得到两个Zlib(提供数据压缩用的函式库 ...
- 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- .net core 响应的json数据驼峰显示问题。
在.net core webapi中,默认响应的json数据是以驼峰显示的,即首字母小写的方式.如果让其正常显示,只需要在全局配置即可.代码如下图: 配置之后,响应数据就不会再以驼峰的形式展示了.而是 ...
- 消息协议AMQP 与 JMS对比
https://blog.csdn.net/hpttlook/article/details/23391967 https://www.jianshu.com/p/6e6821604efc https ...
- MongoDB-03-分片集群
分片集群(Sharding Cluster) 架构图 规划 10个实例:38017-38026 1 configserver:38018-38020 3台构成的复制集(1主两从,不支持arbiter) ...
- 题解 math
传送门 赛时用一个奇怪的方法过掉了 首先\(b_i\)的有效范围是\([0, k-1]\) 发现不同的\(a_i*b_i\)会有很多重的 考虑把\(a_i\%k\),然后由小到大排序 按顺序扫,如果某 ...
- ffmpeg第6篇:滤镜语法
前言 哈哈,回来继续填坑了,前段时间较忙没时间写,现在继续~ 简介 滤镜是ffmpeg的一个很强大的功能,它支持许多有用的视频处理功能,常见的滤镜如:缩放.旋转.水印.裁剪等 一个比较经典的滤镜使用方 ...
- Spring boot集成Redis实现sessions共享时,sessions过期时间问题分析
Springboot鼓励零配置的方式,帮你做好大部分重复劳动的事,好到不能再好:具体的Redis安装方法和Springboot集成Redis方法,可以去搜索相关文章或参考该文章http://www.c ...
- C++ com 组件的使用
// CommonTest.cpp : This file contains the 'main' function. Program execution begins and ends there. ...
- C#中Finalize方法的问题
ninputer在关于"值类型的Finalize不会被调用"中(http://blog.joycode.com/lijianzhong/archive/2005/01/13/429 ...