Общие определения для модуля виртуального сетевого интерфейса.
Подробнее...
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/netdevice.h>
#include <linux/inet.h>
#include <linux/sysctl.h>
#include <linux/rtnetlink.h>
#include <linux/types.h>
#include <net/ip.h>
См. исходные тексты.
|
| #define | VNET_IFNAME "vnet0" |
| | Имя создаваемого виртуального интерфейса.
|
| |
| #define | VNET_DEFAULT_IP "10.0.0.1" |
| | IPv4 адрес интерфейса по умолчанию.
|
| |
|
| static | DEFINE_SPINLOCK (vnet_ip_lock) |
| | Spinlock для синхронизации чтения/записи vnet_ip_str.
|
| |
| static int __init | virtual_net_init (void) |
| | Инициализация и регистрация модуля в ядре.
|
| |
| static void __exit | virtual_net_exit (void) |
| | Выгрузка и очистка ресурсов модуля.
|
| |
| static netdev_tx_t | vnet_xmit (struct sk_buff *skb, struct net_device *dev) |
| | Обработчик передачи пакета с эмуляцией ARP/ICMP ответа.
|
| |
| static void | vnet_get_stats64 (struct net_device *dev, struct rtnl_link_stats64 *stats) |
| | Возвращает статистику интерфейса.
|
| |
| static void | vnet_arp_reply (struct sk_buff const *skb, struct net_device *dev, __u32 target_ip) |
| | Формирует и отправляет ARP reply для целевого IP.
|
| |
| static int | vnet_sysctl_handler (const struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos) |
| | Обработчик записи/чтения /proc/sys/net/vnet/ip_addr.
|
| |
| static bool | str_to_ip (__u32 *ip_out, const char *ip_str, spinlock_t *lock) |
| | Преобразует IPv4 строку в сетевой формат.
|
| |
| static int | modify_vif_ip_userspace (const char *name, const char *ip_str, bool is_add) |
| | Изменяет IPv4 интерфейса через userspace-утилиту ip.
|
| |
|
| static char | vnet_ip_str [16] = VNET_DEFAULT_IP |
| | Текущее значение IPv4 адреса интерфейса в строковом виде.
|
| |
| static struct ctl_table_header * | vnet_sysctl_header |
| | Дескриптор Зарегистрированной таблицы sysctl.
|
| |
| static struct net_device * | vnet_dev |
| | Указатель на зарегистрированное сетевое устройство vnet.
|
| |
| static const struct net_device_ops | vnet_ops |
| | Операции сетевого устройства vnet.
|
| |
| static struct ctl_table | vnet_table [] |
| | Таблица sysctl для /proc/sys/net/vnet/ip_addr.
|
| |
Общие определения для модуля виртуального сетевого интерфейса.
См. определение в файле virtual_net.h
◆ VNET_DEFAULT_IP
| #define VNET_DEFAULT_IP "10.0.0.1" |
IPv4 адрес интерфейса по умолчанию.
См. определение в файле virtual_net.h строка 22
◆ VNET_IFNAME
| #define VNET_IFNAME "vnet0" |
Имя создаваемого виртуального интерфейса.
См. определение в файле virtual_net.h строка 19
◆ DEFINE_SPINLOCK()
| static DEFINE_SPINLOCK |
( |
vnet_ip_lock |
| ) |
|
|
static |
Spinlock для синхронизации чтения/записи vnet_ip_str.
Блокировка доступа к строке IP адреса.
◆ modify_vif_ip_userspace()
| static int modify_vif_ip_userspace |
( |
const char * |
name, |
|
|
const char * |
ip_str, |
|
|
bool |
is_add |
|
) |
| |
|
static |
Изменяет IPv4 интерфейса через userspace-утилиту ip.
◆ str_to_ip()
| static bool str_to_ip |
( |
__u32 * |
ip_out, |
|
|
const char * |
ip_str, |
|
|
spinlock_t * |
lock |
|
) |
| |
|
static |
Преобразует IPv4 строку в сетевой формат.
◆ virtual_net_exit()
| static void __exit virtual_net_exit |
( |
void |
| ) |
|
|
static |
Выгрузка и очистка ресурсов модуля.
◆ virtual_net_init()
| static int __init virtual_net_init |
( |
void |
| ) |
|
|
static |
Инициализация и регистрация модуля в ядре.
◆ vnet_arp_reply()
| static void vnet_arp_reply |
( |
struct sk_buff const * |
skb, |
|
|
struct net_device * |
dev, |
|
|
__u32 |
target_ip |
|
) |
| |
|
static |
Формирует и отправляет ARP reply для целевого IP.
◆ vnet_get_stats64()
| static void vnet_get_stats64 |
( |
struct net_device * |
dev, |
|
|
struct rtnl_link_stats64 * |
stats |
|
) |
| |
|
static |
Возвращает статистику интерфейса.
◆ vnet_sysctl_handler()
| static int vnet_sysctl_handler |
( |
const struct ctl_table * |
table, |
|
|
int |
write, |
|
|
void * |
buffer, |
|
|
size_t * |
lenp, |
|
|
loff_t * |
ppos |
|
) |
| |
|
static |
Обработчик записи/чтения /proc/sys/net/vnet/ip_addr.
◆ vnet_xmit()
| static netdev_tx_t vnet_xmit |
( |
struct sk_buff * |
skb, |
|
|
struct net_device * |
dev |
|
) |
| |
|
static |
Обработчик передачи пакета с эмуляцией ARP/ICMP ответа.
◆ vnet_dev
| struct net_device* vnet_dev |
|
static |
Указатель на зарегистрированное сетевое устройство vnet.
Указатель на net_device виртуального интерфейса.
См. определение в файле virtual_net.h строка 31
◆ vnet_ip_str
Текущее значение IPv4 адреса интерфейса в строковом виде.
Текущий IPv4 адрес интерфейса в строковом виде.
См. определение в файле virtual_net.h строка 25
◆ vnet_ops
| const struct net_device_ops vnet_ops |
|
static |
Инициализатор= {
}
static void vnet_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
Возвращает статистику интерфейса.
static netdev_tx_t vnet_xmit(struct sk_buff *skb, struct net_device *dev)
Обработчик передачи пакета с эмуляцией ARP/ICMP ответа.
Операции сетевого устройства vnet.
См. определение в файле virtual_net.h строка 63
◆ vnet_sysctl_header
| struct ctl_table_header* vnet_sysctl_header |
|
static |
Дескриптор Зарегистрированной таблицы sysctl.
Хендлер таблицы /proc/sys/net/vnet.
См. определение в файле virtual_net.h строка 29
◆ vnet_table
| struct ctl_table vnet_table[] |
|
static |
Инициализатор= {
{
.procname = "ip_addr",
.mode = 0644,
},
}
static char vnet_ip_str[16]
Текущее значение IPv4 адреса интерфейса в строковом виде.
static int vnet_sysctl_handler(const struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos)
Обработчик записи/чтения /proc/sys/net/vnet/ip_addr.
Таблица sysctl для /proc/sys/net/vnet/ip_addr.
См. определение в файле virtual_net.h строка 69