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开发之如何监听让服 ...
随机推荐
- selenium WebDriverWait
Selenium WebDriverWait的知识: 一.webdrivewait 示例代码 from selenium import webdriver from selenium.webdri ...
- Git点赞82K!字节跳动保姆级Android学习指南,干货满满
这是一份全面详细的<Android学习指南>,如果你是新手,那么下面的内容可以帮助你找到学习的线路:如果你是老手,这篇文章列出的内容也可以帮助你查漏补缺.如果各位有什么其他的建议,欢迎留言 ...
- Spring Cloud Alibaba - Gateway
Gateway Gateway简介 底层使用Netty框架,性能大于Zuul 配置gateway模块,一般使用yaml格式: server: port: 80 #spring boot actuato ...
- STM32启动文件详解及SystemInit函数分析(转)
;先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_0000 ;然后在RAM中分配变量使用的堆 ;然后在CODE区(flash)分配中断向量表,flash的起始地址为0x0800_0000 ...
- 批量删除gmail邮件
以删除tor.com发送的邮件为例说明. 首先点击邮件搜索框右边的三角,在"发件人"下面写上"tor.com": 点"搜索"按钮,看一下范围 ...
- STM32_从SystemInit、__main到main()
STM32 的 SystemInit() 和 __main Author by [YuCloud](https://www.cnblogs.com/yucloud/) 上篇文章 STM32启动代码分析 ...
- Java之Listener
Java之Listener Listener监听器 监听器有很多种,大部分还是在GUI用的比较多,这里简单记录一点关于HttpSessionListener的 统计session count List ...
- java JNI介绍
java JNI介绍 目录 java JNI介绍 1. Java调用C++代码 2.C++代码调用java代码 JNI是Java Native Interface的全称. oracle文档中是这样描述 ...
- 进程之间的通信(multiprocess.Queue)
一.进程间通信 进程之间的数据是相互隔离的,例如 from multiprocessing import Process def task(): global n # 声明全局变量 n = 999 p ...
- NOIP 模拟 $26\; \rm 幻魔皇$
题解 \(by\;zj\varphi\) 观察可发现一个点向它的子树走能到的白点,黑点数是一个斐波那契数列. 对于白色点对,可以分成两种情况: 两个白点的 \(lca\) 是其中一个白点 两个白点的 ...