- uint32 seqbit;
- uint32 n;
-
- if (seq < ks->iseq) {
- a_warn("SYMM replay old-sequence");
- return (-1);
- }
- if (seq >= ks->iseq + KS_SEQWINSZ) {
- n = seq - (ks->iseq + KS_SEQWINSZ - 1);
- if (n < KS_SEQWINSZ)
- ks->iwin >>= n;
- else
- ks->iwin = 0;
- ks->iseq += n;
- }
- seqbit = 1 << (seq - ks->iseq);
- if (ks->iwin & seqbit) {
- a_warn("SYMM replay duplicated-sequence");
- return (-1);
+ switch (seq_check(&ks->iseq, seq)) {
+ case SEQ_OK: break;
+ case SEQ_OLD: a_warn("SYMM replay old-sequence"); return (-1);
+ case SEQ_REPLAY: a_warn("SYMM replay duplicated-sequence"); return (-1);
+ default: abort();