comp.lang.ada
 help / color / mirror / Atom feed
From: gisle@kondor.ii.uib.no (Gisle Sælensminde)
Subject: Re: First time Ada has let me down
Date: 2000/10/25
Date: 2000-10-25T11:36:59+00:00	[thread overview]
Message-ID: <slrn8vdher.pi.gisle@kondor.ii.uib.no> (raw)
In-Reply-To: 8t60eo$m0m$1@nnrp1.deja.com

In article <8t60eo$m0m$1@nnrp1.deja.com>, wv12@my-deja.com wrote:
>In article <8FD7DEBEEsynoptikdamudderfuck@news>,
>  avlogue@home.com (Shifty) wrote:
>> OK, here's the story:
>>
>> I had a problem at work where I needed to calculate the offset of a
>> "magic number" within a buffer containing an IP datagram.
>>
>> The magic number is 3 protocol headers deep within the datagram, and
>> all three headers are variable length.  I needed to find the HLEN
>> fields of the IP and TCP headers in memory.  Turns out both of these
>> are stored in 4 bits.  The data in the other 4 bits of the octet
>> belong to another field in the header.
>>
>the IP header length occupies the 4 LSB. Assuming p pointing to the
>byte offset,
>the length is just len = (*p)&0xf;

Or len = P and 16#0F# in Ada95

>the TCP header length occupies the 4 MSB. the length in this case
>is then  ((*p)&0xf0)>>4;

Or Shift_Left(P and #16#F0#, 4) in Ada 95.

Or if P is represented as a packed boolean array, i.e. it's a bit-array,
you can  index the bits directly:

P(5..8)        

What you writes is simply wrong. Ada95 is IMHO better than C on
bit manipulation. There are more examples then those above.
 

--
Gisle S�lensminde ( gisle@ii.uib.no )   

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going
to land, and it could be dangerous sitting under them as they fly
overhead. (from RFC 1925)




  parent reply	other threads:[~2000-10-25  0:00 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-25  3:50 First time Ada has let me down Shifty
2000-10-25  0:00 ` wv12
2000-10-25  0:00   ` Gautier
2000-10-25  0:00   ` Gisle Sælensminde [this message]
2000-10-25  0:00   ` Joel Seidman
2000-10-26  6:42   ` tmoran
2000-10-25  0:00 ` First time Ada has let me down (recipe) Guillaume
2000-10-26  2:45   ` Mats Weber
2000-10-25  0:00 ` First time Ada has let me down Ken Garlington
2000-10-25  0:00   ` Shifty
2000-10-26  4:00     ` Jeff Carter
2000-10-26 14:43       ` Ted Dennison
2000-10-26 17:55         ` tmoran
2000-10-26 17:12       ` Shifty
2000-10-27  1:00         ` Jeff Carter
2000-10-26 22:27       ` Guillaume
2000-10-26 21:49         ` Keith Thompson
2000-10-26 14:36     ` Ted Dennison
2000-10-26 17:55       ` tmoran
2000-10-26 23:08         ` Ted Dennison
2000-10-25  0:00 ` Larry Kilgallen
2000-10-25  0:00   ` Ted Dennison
2000-10-25  0:00     ` Larry Kilgallen
2000-10-25  0:00       ` Ted Dennison
2000-10-25  4:44 ` Julian Morrison
2000-10-25  4:50 ` Ted Dennison
2000-10-24  0:00   ` Keith Thompson
2000-10-26  0:00   ` Andreas Schulz
2000-10-26 18:05     ` Alejandro Villanueva
2000-10-26 21:46 ` Tucker Taft
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox