Re: [Haskell-cafe] Possible bug in Data.IP (network-data package)

2009-08-01 Thread Thomas DuBuisson
>
> So I am right to see this as a bug in network-data ?
>

Yes, the "payloadLength" field was poorly (read: incorrectly) named
perhaps due to having recently read IPv6 specs.  This will be
corrected in version 0.1.0 which I plan on uploading soon (tonight).

Thanks!
Thomas
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Possible bug in Data.IP (network-data package)

2009-08-01 Thread Mads Lindstrøm
Hi

The network-data (version 0.0.2) [1] contains the module Data.IP. This
modules encapsulates IPv4 headers. The Data.IP modules contains the type
IPv4Header:

data IPv4Header =
IPv4Hdr { hdrLength :: Int
, version   :: Int
, tos   :: Int
, payloadLength :: Int
...


The code to turn IPv4 packages into IPv4Heder looks like [2]:

instance Binary IPv4Header where
  put (IPv4Hdr ihl ver tos len id flags off ttl prot csum src dst) = do
pW8 $ (ihl .&. 0xF) .|. (ver `shiftL` 4 .&. 0xF0)
pW8 tos
pW16 len
pW16 id
let offFlags = (off .&. 0x1FFF) .|. fromIntegral (fromEnum flags 
`shiftL` 13)
pW16 offFlags
pW8 ttl
pW8 prot
put csum
put src
put dst

That is, the payload length is the 16-31'th bit of the IPv4 header. This
field is according to [3] and [4] referred to as "total length" - not
"payload length". The total length include both the length of the data
and the header. When I read the term "payload length" I first thought it
referred to the length of the package excluding the header.

So I am right to see this as a bug in network-data ?


Regards,

Mads Lindstrøm


[1] http://hackage.haskell.org/package/network-data

[2]
http://hackage.haskell.org/packages/archive/network-data/0.0.2/doc/html/src/Data-IP.html

[3] http://tools.ietf.org/html/rfc791

[4] http://en.wikipedia.org/wiki/IPv4#Header


signature.asc
Description: This is a digitally signed message part
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe