On Jun 5, 2014, at 5:54 AM, Martina Balintova <[email protected]> wrote:
> // foo-protocol.pac
> type FOO_PDU(is_orig: bool) = record {
> header: FOO_Header(is_orig);
> xbody: case header.flag of {
> 1 -> plain_body: FOO_Body(header);
> 0 -> encrypt_body: Encrypted_Body;
> } &length = header.length &requires (header.flag);
> } &byteorder = bigendian;
>
> compiler is complaining that error: ‘xbody_’ was not declared in this scope.
> It is missing in constructor of FOO_PDU. When I checked snmp analyzer, It is
> doing this process correctly
One difference is that the xbody field of FOO_PDU has the &length attribute
apply to the entire case field. I’d be suspicious that the generated parser
has a problem with that. And it may make more sense to instead have each
condition of the case use header.length however it needs to. E.g.
type FOO_PDU(is_orig: bool) = record {
header: FOO_Header(is_orig);
xbody : case header.flag of {
1 -> plain_body: FOO_Body(header);
0 -> encrypt_body: Encrypted_Body(header);
};
} &byteorder = bigendian;
# I’m just making up the following for demonstration:
type FOO_Body(header: FOO_Header) = record {
tag: uint8;
data: bytestring &length = header.length - 1;
};
type Encrypted_Body(header: FOO_Header) = record {
data: bytestring &length = header.length &transient;
};
- Jon
_______________________________________________
bro-dev mailing list
[email protected]
http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev