В Linux / net / ipv4 / udp.c, почему пакет UDP должен обрабатываться xfrm4_policy_check ()? - PullRequest
3 голосов
/ 28 октября 2011
int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) {
    struct udp_sock *up = udp_sk(sk);
    int rc;
    int is_udplite = IS_UDPLITE(sk);

    /*
     * Charge it to the socket, dropping if the queue is full.
     */
    if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
        goto drop;

    nf_reset(skb);

Я читаю код в Linux net / ipv4 / udp.c.Может кто-нибудь объяснить мне, почему пакет UDP должен проходить через xfrm_policy_check ()?

Насколько я знаю, функция возвращает:

  • true : не-IPsec-пакет / действительный IPsec-пакет
  • false : недопустимый IPsec-пакет

Возможно, я неправильно понял значение возврата функции, поскольку не совсем понимаю исходный код.

1 Ответ

0 голосов
/ 28 октября 2011
Функция

xfrm4_policy_check проверяет пакет на соответствие политикам IPsec .Возвращаемое значение этой функции - 1, если пакету разрешено обрабатывать, и ноль, если это не так.Например, IPsec может решить удалить пакет, если skb->ip_summed не установлен на CHECKSUM_UNNECESSASRY и пакет не прошел контрольную сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...