内核模块逻辑
- 指定模块初始化的入口函数
wg_device_init
- 注册虚拟网络设备
rtnl_link_register(&link_ops)
net_device
结构体的初始化操作wg_setup
- 指定
ip link add
命令时对应的初始化操作(是主要的功能逻辑所在)wg_newlink
- 指定虚拟网络设备启动时的操作
wg_open
- 指定虚拟网络设备停止时的操作
wg_stop
- 指定虚拟网络设备开始发送第一个封包的操作
wg_xmit
- wireguard 初始化的操作是:
- 通过
ip link add dev wg0 type wireguard
添加虚拟网络设备 - 通过
ip addr add 10.0.0.4/24 dev wg0
配置虚拟网络设备地址 - 通过
wg set wg0
添加 wireguard 配置 - 通过
ip link set wg0 up
启动虚拟网络设备
- 通过
- 因此我们应先看
wg_newlink
的逻辑,再看wg_open
的逻辑