• Home
  • Raw
  • Download

Lines Matching refs:x

12 u32 xfrm_replay_seqhi(struct xfrm_state *x, __be32 net_seq)  in xfrm_replay_seqhi()  argument
15 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_seqhi()
17 if (!(x->props.flags & XFRM_STATE_ESN)) in xfrm_replay_seqhi()
38 static void xfrm_replay_notify(struct xfrm_state *x, int event) in xfrm_replay_notify() argument
53 if (!x->replay_maxdiff || in xfrm_replay_notify()
54 ((x->replay.seq - x->preplay.seq < x->replay_maxdiff) && in xfrm_replay_notify()
55 (x->replay.oseq - x->preplay.oseq < x->replay_maxdiff))) { in xfrm_replay_notify()
56 if (x->xflags & XFRM_TIME_DEFER) in xfrm_replay_notify()
65 if (memcmp(&x->replay, &x->preplay, in xfrm_replay_notify()
67 x->xflags |= XFRM_TIME_DEFER; in xfrm_replay_notify()
74 memcpy(&x->preplay, &x->replay, sizeof(struct xfrm_replay_state)); in xfrm_replay_notify()
77 km_state_notify(x, &c); in xfrm_replay_notify()
79 if (x->replay_maxage && in xfrm_replay_notify()
80 !mod_timer(&x->rtimer, jiffies + x->replay_maxage)) in xfrm_replay_notify()
81 x->xflags &= ~XFRM_TIME_DEFER; in xfrm_replay_notify()
84 static int xfrm_replay_overflow(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow() argument
87 struct net *net = xs_net(x); in xfrm_replay_overflow()
89 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow()
90 XFRM_SKB_CB(skb)->seq.output.low = ++x->replay.oseq; in xfrm_replay_overflow()
92 if (unlikely(x->replay.oseq == 0)) { in xfrm_replay_overflow()
93 x->replay.oseq--; in xfrm_replay_overflow()
94 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow()
100 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow()
106 static int xfrm_replay_check(struct xfrm_state *x, in xfrm_replay_check() argument
112 if (!x->props.replay_window) in xfrm_replay_check()
118 if (likely(seq > x->replay.seq)) in xfrm_replay_check()
121 diff = x->replay.seq - seq; in xfrm_replay_check()
122 if (diff >= x->props.replay_window) { in xfrm_replay_check()
123 x->stats.replay_window++; in xfrm_replay_check()
127 if (x->replay.bitmap & (1U << diff)) { in xfrm_replay_check()
128 x->stats.replay++; in xfrm_replay_check()
134 xfrm_audit_state_replay(x, skb, net_seq); in xfrm_replay_check()
138 static void xfrm_replay_advance(struct xfrm_state *x, __be32 net_seq) in xfrm_replay_advance() argument
143 if (!x->props.replay_window) in xfrm_replay_advance()
146 if (seq > x->replay.seq) { in xfrm_replay_advance()
147 diff = seq - x->replay.seq; in xfrm_replay_advance()
148 if (diff < x->props.replay_window) in xfrm_replay_advance()
149 x->replay.bitmap = ((x->replay.bitmap) << diff) | 1; in xfrm_replay_advance()
151 x->replay.bitmap = 1; in xfrm_replay_advance()
152 x->replay.seq = seq; in xfrm_replay_advance()
154 diff = x->replay.seq - seq; in xfrm_replay_advance()
155 x->replay.bitmap |= (1U << diff); in xfrm_replay_advance()
158 if (xfrm_aevent_is_on(xs_net(x))) in xfrm_replay_advance()
159 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_advance()
162 static int xfrm_replay_overflow_bmp(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow_bmp() argument
165 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_overflow_bmp()
166 struct net *net = xs_net(x); in xfrm_replay_overflow_bmp()
168 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow_bmp()
173 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow_bmp()
179 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow_bmp()
185 static int xfrm_replay_check_bmp(struct xfrm_state *x, in xfrm_replay_check_bmp() argument
189 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_check_bmp()
204 x->stats.replay_window++; in xfrm_replay_check_bmp()
223 x->stats.replay++; in xfrm_replay_check_bmp()
225 xfrm_audit_state_replay(x, skb, net_seq); in xfrm_replay_check_bmp()
229 static void xfrm_replay_advance_bmp(struct xfrm_state *x, __be32 net_seq) in xfrm_replay_advance_bmp() argument
233 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_advance_bmp()
273 if (xfrm_aevent_is_on(xs_net(x))) in xfrm_replay_advance_bmp()
274 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_advance_bmp()
277 static void xfrm_replay_notify_bmp(struct xfrm_state *x, int event) in xfrm_replay_notify_bmp() argument
280 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_notify_bmp()
281 struct xfrm_replay_state_esn *preplay_esn = x->preplay_esn; in xfrm_replay_notify_bmp()
295 if (!x->replay_maxdiff || in xfrm_replay_notify_bmp()
296 ((replay_esn->seq - preplay_esn->seq < x->replay_maxdiff) && in xfrm_replay_notify_bmp()
298 < x->replay_maxdiff))) { in xfrm_replay_notify_bmp()
299 if (x->xflags & XFRM_TIME_DEFER) in xfrm_replay_notify_bmp()
308 if (memcmp(x->replay_esn, x->preplay_esn, in xfrm_replay_notify_bmp()
310 x->xflags |= XFRM_TIME_DEFER; in xfrm_replay_notify_bmp()
317 memcpy(x->preplay_esn, x->replay_esn, in xfrm_replay_notify_bmp()
321 km_state_notify(x, &c); in xfrm_replay_notify_bmp()
323 if (x->replay_maxage && in xfrm_replay_notify_bmp()
324 !mod_timer(&x->rtimer, jiffies + x->replay_maxage)) in xfrm_replay_notify_bmp()
325 x->xflags &= ~XFRM_TIME_DEFER; in xfrm_replay_notify_bmp()
328 static void xfrm_replay_notify_esn(struct xfrm_state *x, int event) in xfrm_replay_notify_esn() argument
332 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_notify_esn()
333 struct xfrm_replay_state_esn *preplay_esn = x->preplay_esn; in xfrm_replay_notify_esn()
347 if (x->replay_maxdiff) { in xfrm_replay_notify_esn()
361 if (seq_diff >= x->replay_maxdiff || in xfrm_replay_notify_esn()
362 oseq_diff >= x->replay_maxdiff) in xfrm_replay_notify_esn()
366 if (x->xflags & XFRM_TIME_DEFER) in xfrm_replay_notify_esn()
374 if (memcmp(x->replay_esn, x->preplay_esn, in xfrm_replay_notify_esn()
376 x->xflags |= XFRM_TIME_DEFER; in xfrm_replay_notify_esn()
383 memcpy(x->preplay_esn, x->replay_esn, in xfrm_replay_notify_esn()
387 km_state_notify(x, &c); in xfrm_replay_notify_esn()
389 if (x->replay_maxage && in xfrm_replay_notify_esn()
390 !mod_timer(&x->rtimer, jiffies + x->replay_maxage)) in xfrm_replay_notify_esn()
391 x->xflags &= ~XFRM_TIME_DEFER; in xfrm_replay_notify_esn()
394 static int xfrm_replay_overflow_esn(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow_esn() argument
397 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_overflow_esn()
398 struct net *net = xs_net(x); in xfrm_replay_overflow_esn()
400 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow_esn()
410 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow_esn()
417 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow_esn()
423 static int xfrm_replay_check_esn(struct xfrm_state *x, in xfrm_replay_check_esn() argument
428 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_check_esn()
457 x->stats.replay_window++; in xfrm_replay_check_esn()
476 x->stats.replay++; in xfrm_replay_check_esn()
478 xfrm_audit_state_replay(x, skb, net_seq); in xfrm_replay_check_esn()
482 static int xfrm_replay_recheck_esn(struct xfrm_state *x, in xfrm_replay_recheck_esn() argument
486 htonl(xfrm_replay_seqhi(x, net_seq)))) { in xfrm_replay_recheck_esn()
487 x->stats.replay_window++; in xfrm_replay_recheck_esn()
491 return xfrm_replay_check_esn(x, skb, net_seq); in xfrm_replay_recheck_esn()
494 static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq) in xfrm_replay_advance_esn() argument
499 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_advance_esn()
506 seq_hi = xfrm_replay_seqhi(x, net_seq); in xfrm_replay_advance_esn()
542 xfrm_dev_state_advance_esn(x); in xfrm_replay_advance_esn()
548 if (xfrm_aevent_is_on(xs_net(x))) in xfrm_replay_advance_esn()
549 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_advance_esn()
553 static int xfrm_replay_overflow_offload(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow_offload() argument
556 struct net *net = xs_net(x); in xfrm_replay_overflow_offload()
558 __u32 oseq = x->replay.oseq; in xfrm_replay_overflow_offload()
561 return xfrm_replay_overflow(x, skb); in xfrm_replay_overflow_offload()
563 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow_offload()
575 if (unlikely(oseq < x->replay.oseq)) { in xfrm_replay_overflow_offload()
576 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow_offload()
582 x->replay.oseq = oseq; in xfrm_replay_overflow_offload()
585 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow_offload()
591 static int xfrm_replay_overflow_offload_bmp(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow_offload_bmp() argument
595 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_overflow_offload_bmp()
596 struct net *net = xs_net(x); in xfrm_replay_overflow_offload_bmp()
600 return xfrm_replay_overflow_bmp(x, skb); in xfrm_replay_overflow_offload_bmp()
602 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow_offload_bmp()
615 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow_offload_bmp()
624 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow_offload_bmp()
630 static int xfrm_replay_overflow_offload_esn(struct xfrm_state *x, struct sk_buff *skb) in xfrm_replay_overflow_offload_esn() argument
634 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_replay_overflow_offload_esn()
635 struct net *net = xs_net(x); in xfrm_replay_overflow_offload_esn()
640 return xfrm_replay_overflow_esn(x, skb); in xfrm_replay_overflow_offload_esn()
642 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { in xfrm_replay_overflow_offload_esn()
663 xfrm_audit_state_replay_overflow(x, skb); in xfrm_replay_overflow_offload_esn()
673 x->repl->notify(x, XFRM_REPLAY_UPDATE); in xfrm_replay_overflow_offload_esn()
728 int xfrm_init_replay(struct xfrm_state *x) in xfrm_init_replay() argument
730 struct xfrm_replay_state_esn *replay_esn = x->replay_esn; in xfrm_init_replay()
737 if (x->props.flags & XFRM_STATE_ESN) { in xfrm_init_replay()
740 x->repl = &xfrm_replay_esn; in xfrm_init_replay()
742 x->repl = &xfrm_replay_bmp; in xfrm_init_replay()
745 x->repl = &xfrm_replay_legacy; in xfrm_init_replay()