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>