Changeset 868:665fbb6f809c

Show
Ignore:
Timestamp:
08/14/08 02:09:49 (3 months ago)
Author:
Phil <phil@secdev.org>
Message:

Renamed FloatField? into FixedPointField? and fixed it (inspired by wam patch, ticket #119)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • scapy/fields.py

    r862 r868  
    804804 
    805805 
    806 class FloatField(BitField): 
    807     def getfield(self, pkt, s): 
    808         s,b = BitField.getfield(self, pkt, s) 
    809          
    810         # fraction point between bits 15 and 16. 
    811         sec = b >> 16 
    812         frac = b & (1L << (32+1)) - 1 
    813         frac /= 65536.0 
    814         b = sec+frac 
    815         return s,b     
     806class FixedPointField(BitField): 
     807    def __init__(self, name, default, size, frac_bits=16): 
     808        self.frac_bits = frac_bits 
     809        BitField.__init__(self, name, default, size) 
     810 
     811    def any2i(self, pkt, val): 
     812        if val is None: 
     813            return val 
     814        ival = int(val) 
     815        fract = int( (val-ival) * 2**self.frac_bits ) 
     816        return (ival << self.frac_bits) | fract 
     817 
     818    def i2h(self, pkt, val): 
     819        int_part = val >> self.frac_bits 
     820        frac_part = val & (1L << self.frac_bits) - 1 
     821        frac_part /= 2.0**self.frac_bits 
     822        return int_part+frac_part 
     823    def i2repr(self, pkt, val): 
     824        return self.i2h(pkt, val) 
  • scapy/layers/ntp.py

    r862 r868  
    6868         BitField('poll', 0xa, 8),          ### XXX : it's a signed int 
    6969         BitField('precision', 0, 8),       ### XXX : it's a signed int 
    70          FloatField('delay', 0, 32), 
    71          FloatField('dispersion', 0, 32), 
     70         FixedPointField('delay', 0, size=32, frac_bits=16), 
     71         FixedPointField('dispersion', 0, size=32, frac_bits=16), 
    7272         IPField('id', "127.0.0.1"), 
    7373         TimeStampField('ref', 0, 64),