Search K
Appearance
Appearance
AF_PACKET 套接字的组件名称为 af_packet, 相关内核选项为
# Networking support
# -> Networking options
# -> Packet socket
CONFIG_PACKET=y
# Networking support
# -> Networking options
# -> Packet: sockets monitoring interface
CONFIG_PACKET_DIAG=y检查工具为
#!/bin/bash
source ./kernel_config_utils.sh
af_packet_check() {
is_error=false
if ! kernel_config_check CONFIG_PACKET af_packet; then
is_error=true
fi
if ! kernel_config_check CONFIG_PACKET_DIAG; then
is_error=true
fi
if [ "$is_error" == "true" ]; then
return 1
fi
return 0
}AF_PACKET 类型套接字的 sockopt 在内核源码的 include/uapi/linux/if_packet.h 文件中定义. sockopt 相关函数为 packet_setsockopt 和 packet_getsockopt, 在 net/packet/af_packet.c 文件中实现. 引入的 Linux 版本和提交如下表所示:
sockopt | 版本 | 提交号 |
|---|---|---|
PACKET_FANOUT | v3.1 | dc99f600698dcac69b8f56dda9a8a00d645c5ffc |
PACKET_FANOUT_DATA | v4.3 | 47dceb8ecdc1c3ad1818dfea3d659a05b74c3fc2 |
对于 PACKET_FANOUT 选项, 不同的 fanout_type 引入的 Linux 版本和提交如下表所示:
fanout_type | 版本 | 提交号 |
|---|---|---|
PACKET_FANOUT_HASH | v3.1 | dc99f600698dcac69b8f56dda9a8a00d645c5ffc |
PACKET_FANOUT_EBPF | v4.3 | f2e520956a1ab636698f8160194c9b8ac0989aab |
fanout_type 为 PACKET_FANOUT_EBPF 时挂载的是 BPF socket 程序.