Что делает носок _net ()? - PullRequest
       10

Что делает носок _net ()?

0 голосов
/ 20 марта 2020

Я изучал связь между пользовательским пространством и ядром, читая модуль ядра, который делает это, но в коде есть вызов функции sock _net (), который я не понял. Я много искал, но не нашел документации об этой конкретной функции, так что же на самом деле делает эта функция?

1 Ответ

0 голосов
/ 20 марта 2020

Возвращает объект сетевого стека, к которому принадлежит сокет, если сетевое пространство имен включено (контейнер часто имеет свою собственную сеть).

См. https://elixir.bootlin.com/linux/latest/source/include/net/sock.h#L2503:

static inline
struct net *sock_net(const struct sock *sk)
{
    return read_pnet(&sk->sk_net);
}

Где read_pnet:

static inline struct net *read_pnet(const possible_net_t *pnet)
{
#ifdef CONFIG_NET_NS
    return pnet->net;
#else
    return &init_net;
#endif
}
...