Annotation of embedaddon/hping2/relid.c, revision 1.1
1.1 ! misho 1: /*
! 2: * $smu-mark$
! 3: * $name: relid.c$
! 4: * $author: Salvatore Sanfilippo <antirez@invece.org>$
! 5: * $copyright: Copyright (C) 1999 by Salvatore Sanfilippo$
! 6: * $license: This software is under GPL version 2 of license$
! 7: * $date: Fri Nov 5 11:55:49 MET 1999$
! 8: * $rev: 3$
! 9: */
! 10:
! 11: /* FIXME: maybe it's better to avoid division per seq_diff and
! 12: at least add an option to switch on/off this feature */
! 13:
! 14: #include "hping2.h"
! 15: #include "globals.h"
! 16:
! 17: int relativize_id(int seqnum, int *ip_id)
! 18: {
! 19: int seq_diff, backup_id;
! 20: static int last_seq = 0, last_id = -1;
! 21:
! 22: backup_id = *ip_id;
! 23:
! 24: if (last_id == -1) {
! 25: last_id = *ip_id;
! 26: last_seq = seqnum;
! 27: }
! 28: else
! 29: {
! 30: if ( (seq_diff=(seqnum-last_seq)) > 0)
! 31: {
! 32: if (last_id > *ip_id) /* rew */
! 33: *ip_id = ((65535-last_id)
! 34: + *ip_id)/seq_diff;
! 35: else
! 36: *ip_id = (*ip_id-last_id)
! 37: /seq_diff;
! 38: last_id = backup_id;
! 39: last_seq = seqnum;
! 40: return TRUE;
! 41: } else {
! 42: out_of_sequence_pkt++;
! 43: }
! 44: }
! 45: return FALSE;
! 46: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>