ronnie sahlberg wrote:
1,
can you refactor your patch to not use  long and %ld format strings
since this type will differ between platforms.
see README.developer for instructions on what types and format strings to use.
I've checked in a change to fix that.
2,
dont reference the fields inside tvb directly (   tvb->length  ,   use
tvb_length(tvb) instead )
I've checked in a change to use tvb_reported_length(tvb) to get the 
packet length, as that's the actual length of the packet 
(tvb_length(tvb) is just the amount of packet data that was captured, 
which might have been cut short by "slicing"/a "snapshot length").
3,
why do you pass a pointer to offset to all routines,     it is more
common in ehtereal to pass
offset as a normal parameter and then return the new alue for offset.
maintenance of the dissector will be much easier if it follows the
style of the other dissectors.
I didn't address that one...
...but I looked at the BACnet spec, and the application-layer protocol 
is ASN.1-based.  Unfortunately, they use their own encoding rules - they 
do their own special encoding, with no explicit tags, in the fixed 
portion of the PDU, and use BER in the variable portion - so I don't 
know whether the dissector can be generated with asn2eth (and the 
license for the protocol spec is a bit obnoxious, so I don't even know 
whether the ASHRAE's lawyers will come after you if you make public the 
ASN.1 specification).
Even if we can't generate the dissector from the ASN.1 for the protocol, 
using the packet-ber.c routines for the variable portion might be the 
right thing to do.