external Access_Request_Ext sequential :
identified_by(Code == 1),
dynamic_size(RecLength) {
int Code: static_size(1);
int Identifier: static_size(1);
int RecLength: static_size(2),
encode_value(udr_size);
bytearray Authenticator: static_size(16);
switched_set( Type ) {
int Type: static_size(1);
int Length: static_size(1),
encode_value(case_size);
case(1) {
ascii User_Name: dynamic_size( Length - 2 );
};
case(2) {
ascii User_Password: dynamic_size( Length - 2 ),
terminated_by(0);
};
// ...
// Further field definitions.
// ...
};
};
external Access_Accept_Ext sequential :
identified_by(Code == 2),
dynamic_size(RecLength) {
// ...
// Further field definitions.
// ...
};
external Access_Reject_Ext sequential :
identified_by(Code == 3),
dynamic_size(RecLength) {
// ...
// Further field definitions.
// ...
};
internal Vendor_Specific_Int {
int Type;
int Length;
int VendorID;
int SubAttrID;
int VendorLength;
int InfoCode;
string Data;
};
in_map Access_Request_Map : external(Access_Request_Ext),
target_internal(Access_Request_Int) {
automatic {
Vendor_Specific_Ext: internal( Vendor_Specific_Int ),
target_internal( Vendor_Specific_TI1 );
};
};
in_map Access_Accept_InMap: external(Access_Accept_Ext),
target_internal( Access_Accept_Int ) {
automatic {
Vendor_Specific_Ext: internal( Vendor_Specific_Int );
};
};
out_map Access_Accept_Map : external(Access_Accept_Ext),
internal(Access_Accept_Int) {
automatic;
};
in_map Access_Reject_InMap: external(Access_Reject_Ext),
target_internal( Access_Reject_Int ) {
automatic {
Vendor_Specific_Ext: internal( Vendor_Specific_Int );
};
};
out_map Access_Reject_Map : external(Access_Reject_Ext),
internal(Access_Reject_Int) {
automatic;
};
decoder Request_Dec: in_map(Access_Request_Map);
encoder Response_Enc: out_map(Access_Accept_Map),
out_map(Access_Reject_Map); |