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-пакет
Возможно, я неправильно понял значение возврата функции, поскольку не совсем понимаю исходный код.