1080 lines
23 KiB
Plaintext
1080 lines
23 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Copyright Test Competence Center(TCC) ETH 2003 //
|
|
// //
|
|
// The copyright to the computer program(s) herein is the property of TCC. //
|
|
// The program(s) may be used and/or copied only with the written permission //
|
|
// of TCC or in accordance with the terms and conditions stipulated in the //
|
|
// agreement/contract under which the program(s) has been supplied. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// File: ROHC_Types.ttcn
|
|
// Description: ROHC
|
|
// Rev: R3A01
|
|
// Prodnr: CNL 113 426
|
|
// Updated: 2006.04.13
|
|
// Contact: http://ttcn.ericsson.se
|
|
//
|
|
|
|
/* Based on RFC 3095, July 2001 */
|
|
|
|
/* TODO: improvements::
|
|
- Profile4_Dynamic_Chain_u should not contain the sn field
|
|
|
|
ethesi */
|
|
|
|
module ROHC_Types
|
|
{
|
|
import from General_Types all;
|
|
|
|
external function f_ROHC_enc(in ROHC_packet_u pdu, in ROHC_config p_config)
|
|
return octetstring;
|
|
external function f_ROHC_dec(in octetstring data, inout ROHC_config p_config)
|
|
return ROHC_packet_u;
|
|
external function f_ROHC_CRC(in octetstring data, in integer crclen)
|
|
return integer;
|
|
external function f_FBCK_enc(in Feedback_data pdu, in ROHC_config p_config)
|
|
return octetstring;
|
|
external function f_FBCK_dec(in octetstring data, in ROHC_config p_config)
|
|
return Feedback_data;
|
|
|
|
/* Constants for ROHC mode field values including mode cancellation */
|
|
const integer cg_ROHC_mode_C := 0;
|
|
const integer cg_ROHC_mode_U := 1;
|
|
const integer cg_ROHC_mode_O := 2;
|
|
const integer cg_ROHC_mode_R := 3;
|
|
|
|
/* Constants for ROHC feedback type */
|
|
const integer cg_ROHC_fbck_type_ACK := 0;
|
|
const integer cg_ROHC_fbck_type_NACK := 1;
|
|
const integer cg_ROHC_fbck_type_SNACK := 2;
|
|
const integer cg_ROHC_fbck_type_reserved := 3;
|
|
|
|
type bitstring ROHC_BIT7_BO_LAST length (7) with {variant "BYTEORDER(last)"};
|
|
|
|
type enumerated Packet_type { R_0(0), R_0_CRC(1), UO_0(2), R_1(3), R_1_ID(4),
|
|
R_1_TS(5), UO_1(6), UO_1_ID(7), UO_1_TS(8), UOR_2(9), UOR_2_ID(10),
|
|
UOR_2_TS(11), IR(12), IR_DYN(13), NOPKT(14) };
|
|
|
|
/* ==================== ROHC configuration and context ==================== */
|
|
|
|
type record IP_context {
|
|
/* Version of this IP level. MSB bit may be set (Profile 4 only). */
|
|
integer version,
|
|
/* RND bit of this IP level (RND or RND2) */
|
|
boolean rnd_bit,
|
|
/* Whether AH is present in the IPX index list */
|
|
boolean ah_present,
|
|
/* Whether GRE is present in the IPX index list */
|
|
boolean gre_present,
|
|
/* Whether ESP is present in the IPX index list */
|
|
boolean esp_present,
|
|
/* Length of the compressed AH data field after the base header */
|
|
integer ah_data_len,
|
|
/* Whether GRE header has GRE checksum or not */
|
|
boolean gre_cksum_present
|
|
};
|
|
|
|
type record UDP_context {
|
|
boolean udp_cksum
|
|
};
|
|
|
|
type record of IP_context IP_contexts;
|
|
|
|
type record ROHC_context {
|
|
integer mode,
|
|
integer profile,
|
|
/* The decoded packet type */
|
|
Packet_type pkt,
|
|
IP_contexts ip_ctx,
|
|
UDP_context udp_ctx
|
|
};
|
|
|
|
type record of integer int_array;
|
|
|
|
type record of ROHC_context ROHC_context_rof;
|
|
|
|
type record ROHC_config {
|
|
boolean large_cid,
|
|
int_array rtp_ports,
|
|
ROHC_context_rof context
|
|
};
|
|
|
|
type port ROHC_ASP_SP_PT message
|
|
{
|
|
inout ROHC_packet_u;
|
|
inout octetstring;
|
|
} with { extension "internal" }
|
|
|
|
|
|
/* ROHC Configuration port */
|
|
type record ROHC_ROHCCFG_REQ_setconfig
|
|
{
|
|
ROHC_config config
|
|
}
|
|
|
|
type enumerated ROHC_ROHCCFG_REQ_operation { rohccfg_getconfig }
|
|
|
|
type union ROHC_ROHCCFG_REQ
|
|
{
|
|
ROHC_ROHCCFG_REQ_operation simpleop,
|
|
ROHC_ROHCCFG_REQ_setconfig setconfig
|
|
}
|
|
|
|
type enumerated ROHC_ROHCCFG_RSP_operation { rohccfg_ok }
|
|
|
|
type record ROHC_ROHCCFG_RSP_config
|
|
{
|
|
ROHC_config config
|
|
}
|
|
|
|
type union ROHC_ROHCCFG_RSP
|
|
{
|
|
ROHC_ROHCCFG_RSP_operation simpleop,
|
|
ROHC_ROHCCFG_RSP_config config
|
|
}
|
|
|
|
type port ROHC_PORTCFG_PT message
|
|
{
|
|
inout ROHC_config;
|
|
inout charstring;
|
|
inout ROHC_ROHCCFG_REQ;
|
|
inout ROHC_ROHCCFG_RSP;
|
|
} with { extension "internal" }
|
|
|
|
type union ROHC_packet_u
|
|
{
|
|
ROHC_packet rohc,
|
|
Segment_packet segment
|
|
}
|
|
|
|
type record ROHC_packet /* p.42 */
|
|
{
|
|
Padding padding optional,
|
|
Feedback feedback optional,
|
|
Header header,
|
|
Payload payload optional
|
|
};
|
|
|
|
/* TODO CHECK: why this is needed ?
|
|
type record Reconstructed_unit
|
|
{
|
|
octetstring reconstructed_packet,
|
|
OCT4 CRC
|
|
}; */
|
|
|
|
type record Segment_packet /* p.50 */
|
|
{
|
|
Padding padding optional,
|
|
Feedback feedback optional,
|
|
INT7b segment_header_id, /* Must be 127 (0x7F) */
|
|
boolean final,
|
|
Payload payload optional,
|
|
integer crc optional
|
|
};
|
|
|
|
type octetstring Padding; /* Must be a serie of 0xE0 */
|
|
type octetstring Payload;
|
|
|
|
type OCT1n Feedback1; /* p.91 */
|
|
|
|
type record Feedback_opts_u /* p.91 */
|
|
{
|
|
INT4b opt_type,
|
|
INT4b opt_len,
|
|
octetstring opt_data optional
|
|
};
|
|
|
|
type record of Feedback_opts_u Feedback_opts; /* p.91 */
|
|
|
|
type record Feedback2 /* p.91 */
|
|
{
|
|
INT2b acktype,
|
|
INT2b mode,
|
|
INT12b_BO_LAST sn,
|
|
Feedback_opts feedback_opts optional
|
|
};
|
|
|
|
type union Feedback_type /* p.46 */
|
|
{
|
|
Feedback1 feedback1,
|
|
Feedback2 feedback2
|
|
};
|
|
|
|
type record Feedback_data /* p.46 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
Feedback_type feedback_type
|
|
};
|
|
|
|
type record Feedback_u /* p.45 */
|
|
{
|
|
BIT5 feedback_type, /* Must be '11110'B */
|
|
INT3b code,
|
|
LIN1 size optional,
|
|
/* TODO: size could be 0, so feedback_data should be optional;
|
|
although it's a weird case, but still possible */
|
|
Feedback_data feedback_data
|
|
};
|
|
|
|
type record of Feedback_u Feedback; /* p.42 */
|
|
|
|
type union Header /* p.77 */
|
|
{
|
|
Profile0_headers prof0,
|
|
Profile1_headers prof1,
|
|
Profile2_headers prof2,
|
|
Profile4_headers prof4
|
|
};
|
|
|
|
//Profile0
|
|
|
|
type union Profile0_headers
|
|
{
|
|
Profile0_IR_packet ir,
|
|
Profile0_normal_packet normal
|
|
};
|
|
|
|
type record Profile0_IR_packet /* p.127 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT7 type_ind, /* Must be '1111110'B */
|
|
BIT1 d, /* Must be 0 */
|
|
LIN1 profile, /* Must be 0 */
|
|
LIN1 crc,
|
|
octetstring orig_packet
|
|
};
|
|
|
|
type record Profile0_normal_packet /* p.128 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
octetstring orig_packet
|
|
};
|
|
|
|
//Profile1
|
|
|
|
type record Profile1_headers /* p.77 */
|
|
{
|
|
Profile1_base_header base_header,
|
|
Profile1_Extension ext optional,
|
|
LIN2_BO_LAST ip_id_outer optional,
|
|
octetstring ah_outer optional,
|
|
LIN2_BO_LAST gre_cksum1 optional,
|
|
LIN2_BO_LAST ip_id_inner optional,
|
|
octetstring ah_inner optional,
|
|
LIN2_BO_LAST gre_cksum2 optional,
|
|
LIN2_BO_LAST udp_cksum optional
|
|
};
|
|
|
|
type union Profile1_base_header
|
|
{
|
|
Profile1_IR_header ir,
|
|
Profile1_IR_DYN_header ir_dyn,
|
|
Profile1_R_0_header r_0,
|
|
Profile1_R_0_CRC_header r_0_crc,
|
|
Profile1_UO_0_header uo_0,
|
|
Profile1_R_1_header r_1,
|
|
Profile1_R_1_ID_header r_1_id,
|
|
Profile1_R_1_TS_header r_1_ts,
|
|
Profile1_UO_1_header uo_1,
|
|
Profile1_UO_1_ID_header uo_1_id,
|
|
Profile1_UO_1_TS_header uo_1_ts,
|
|
Profile1_UOR_2_header uor_2,
|
|
Profile1_UOR_2_ID_header uor_2_id,
|
|
Profile1_UOR_2_TS_header uor_2_ts
|
|
};
|
|
|
|
type union Static_Chain_u /* p.91 */
|
|
{
|
|
IPv4_Static ipv4_stat,
|
|
IPv6_Static ipv6_stat,
|
|
UDP_Static udp_stat,
|
|
RTP_Static rtp_stat,
|
|
ESP_Static esp_stat
|
|
};
|
|
|
|
type union Dynamic_Chain_u /* p.91 */
|
|
{
|
|
IPv4_Dynamic ipv4_dyn,
|
|
IPv6_Dynamic ipv6_dyn,
|
|
UDP_Dynamic udp_dyn,
|
|
RTP_Dynamic rtp_dyn,
|
|
ESP_Dynamic esp_dyn
|
|
};
|
|
|
|
type record of Static_Chain_u Static_Chain; /* p.91 */
|
|
|
|
type record of Dynamic_Chain_u Dynamic_Chain; /* p.91 */
|
|
|
|
type record Profile1_IR_header /* p.45 */ /* p.91 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT7 type_ind, /* Must be '1111110'B */
|
|
BIT1 d,
|
|
LIN1 profile, /* Must be 1 */
|
|
LIN1 crc,
|
|
Static_Chain stat_chain,
|
|
Dynamic_Chain dyn_chain optional
|
|
};
|
|
|
|
type record Profile1_IR_DYN_header /* p.46 */ /* p.92 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT8 type_ind, /* Must be '11111000'B */
|
|
LIN1 profile, /* Must be 1 */
|
|
LIN1 crc,
|
|
Dynamic_Chain dyn_chain
|
|
};
|
|
|
|
type record Profile1_R_0_header /* p.74 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '00'B */
|
|
INT6b sn
|
|
};
|
|
|
|
type record Profile1_R_0_CRC_header /* p.74 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '01'B */
|
|
INT7b sn,
|
|
INT7b crc
|
|
};
|
|
|
|
type record Profile1_UO_0_header /* p.75 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT1 type_ind, /* Must be '0'B */
|
|
INT4b sn,
|
|
INT3b crc
|
|
};
|
|
|
|
type record Profile1_R_1_header /* p.75 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b sn,
|
|
BIT1 m_bit,
|
|
BIT1 x_bit,
|
|
INT6b ts
|
|
};
|
|
|
|
type record Profile1_R_1_ID_header /* p.75 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b sn,
|
|
BIT1 m_bit,
|
|
BIT1 x_bit,
|
|
BIT1 t_bit, /* Must be '0'B */
|
|
INT5b ip_id
|
|
};
|
|
|
|
type record Profile1_R_1_TS_header /* p.75 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b sn,
|
|
BIT1 m_bit,
|
|
BIT1 x_bit,
|
|
BIT1 t_bit, /* Must be '1'B */
|
|
INT5b ts
|
|
};
|
|
|
|
type record Profile1_UO_1_header /* p.76 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b ts,
|
|
BIT1 m_bit,
|
|
INT4b sn,
|
|
INT3b crc
|
|
};
|
|
|
|
type record Profile1_UO_1_ID_header /* p.76 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
BIT1 t_bit, /* Must be '0'B */
|
|
INT5b ip_id,
|
|
BIT1 x_bit,
|
|
INT4b sn,
|
|
INT3b crc
|
|
};
|
|
|
|
type record Profile1_UO_1_TS_header /* p.76 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
BIT1 t_bit, /* Must be '1'B */
|
|
INT5b ts,
|
|
BIT1 m_bit,
|
|
INT4b sn,
|
|
INT3b crc
|
|
};
|
|
|
|
type record Profile1_UOR_2_header /* p.77 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT3 type_ind, /* Must be '110'B */
|
|
INT6b ts,
|
|
BIT1 m_bit,
|
|
INT6b sn,
|
|
BIT1 x_bit,
|
|
INT7b crc
|
|
};
|
|
|
|
type record Profile1_UOR_2_ID_header /* p.77 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT3 type_ind, /* Must be '110'B */
|
|
INT5b ip_id,
|
|
BIT1 t_bit, /* Must be '0'B */
|
|
BIT1 m_bit,
|
|
INT6b sn,
|
|
BIT1 x_bit,
|
|
INT7b crc
|
|
};
|
|
|
|
type record Profile1_UOR_2_TS_header /* p.77 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT3 type_ind, /* Must be '110'B */
|
|
INT5b ts,
|
|
BIT1 t_bit, /* Must be '1'B */
|
|
BIT1 m_bit,
|
|
INT6b sn,
|
|
BIT1 x_bit,
|
|
INT7b crc
|
|
};
|
|
|
|
type record Short_Seqnum /* p.120 */
|
|
{
|
|
BIT1 ind, /* Must be '0'B */
|
|
INT7b lsb_of_seqnum
|
|
};
|
|
|
|
type record Long_Seqnum /* p.120 */
|
|
{
|
|
BIT1 ind, /* Must be '1'B */
|
|
INT31b_BO_LAST lsb_of_seqnum
|
|
};
|
|
|
|
type union AEGSeqnum /* p.112 */
|
|
{
|
|
Short_Seqnum short_form,
|
|
Long_Seqnum long_form
|
|
};
|
|
|
|
type record XI_Item4_r /* p.121 */
|
|
{
|
|
BIT1 x_ind,
|
|
INT3b index
|
|
};
|
|
|
|
type record XI_Item8_r /* p.121 */
|
|
{
|
|
BIT1 x_ind,
|
|
INT7b index
|
|
};
|
|
|
|
type record of XI_Item4_r XI_Item4;
|
|
|
|
type record of XI_Item8_r XI_Item8;
|
|
|
|
type union XI_list /* p.113 */
|
|
{
|
|
XI_Item4 xi_item4,
|
|
XI_Item8 xi_item8
|
|
};
|
|
|
|
type record IPv6_ext_item
|
|
{
|
|
LIN1 nexthead,
|
|
LIN1 hdr_ext_len,
|
|
octetstring data
|
|
}
|
|
|
|
type record MINE_item {
|
|
LIN1 protocol,
|
|
BIT1 s_bit,
|
|
ROHC_BIT7_BO_LAST reserved,
|
|
LIN2_BO_LAST cksum,
|
|
OCT4 dstaddr,
|
|
OCT4 srcaddr optional
|
|
} with {
|
|
variant "FIELDORDER(msb)";
|
|
variant (srcaddr) "PRESENCE(s_bit = '1'B)";
|
|
}
|
|
|
|
/* TODO: check why better use INTn intead of OCTn */
|
|
type record AH_item /* RFC 2402, p.3 */
|
|
{
|
|
LIN1 nexthead, /* Must be 51 */
|
|
LIN1 payload_len,
|
|
LIN2_BO_LAST reserved, /* Must be 0 */
|
|
LIN4_BO_LAST spi,
|
|
LIN4_BO_LAST sn,
|
|
octetstring auth_data optional
|
|
}
|
|
|
|
type record ESP_item
|
|
{
|
|
LIN1 nexthead, /* Must be 50 */
|
|
LIN4_BO_LAST spi,
|
|
LIN4_BO_LAST sn
|
|
}
|
|
|
|
type record GRE_item
|
|
{
|
|
LIN1 nexthead, /* Must be 47 */
|
|
BIT1 C_bit,
|
|
BIT1 reserved_1, /* Must be '0'B */
|
|
BIT1 K_bit,
|
|
BIT1 S_bit,
|
|
BIT1 reserved_2, /* Must be '0'B */
|
|
BIT3 version,
|
|
LIN2_BO_LAST cksum optional,
|
|
LIN4_BO_LAST key optional,
|
|
LIN4_BO_LAST sn optional
|
|
}
|
|
|
|
type union Item
|
|
{
|
|
IPv6_ext_item ipv6_ext_item,
|
|
AH_item ah_item,
|
|
ESP_item esp_item,
|
|
GRE_item gre_item,
|
|
MINE_item mine_item
|
|
/* TODO CHECK: could we use it ?
|
|
octetstring any_item */
|
|
}
|
|
|
|
type record of Item IP_Item_list;
|
|
|
|
type record of OCT4n CSRC_Item_list;
|
|
|
|
/* TODO: temporary solution for profile4 tests */
|
|
type record of octetstring RAW_data;
|
|
|
|
type union Item_list
|
|
{
|
|
CSRC_Item_list csrc_item_list,
|
|
IP_Item_list ip_item_list,
|
|
/* TODO: temporary solution for profile4 tests */
|
|
RAW_data raw_data
|
|
}
|
|
|
|
type record Enc_Type_0 /* p.112 */
|
|
{
|
|
BIT2 et, /* Must be '00'B */
|
|
BIT1 gp_bit,
|
|
BIT1 ps_bit,
|
|
INT4b cc,
|
|
LIN1 gen_id optional,
|
|
XI_list xi_list optional,
|
|
BIT4 padding optional, /* Must be '0000'B */
|
|
Item_list item_list optional
|
|
};
|
|
|
|
type record Enc_Type_1 /* p.114 */
|
|
{
|
|
BIT2 et, /* Must be '01'B */
|
|
BIT1 gp_bit,
|
|
BIT1 ps_bit,
|
|
INT4b xi1,
|
|
LIN1 gen_id optional,
|
|
LIN1 ref_id,
|
|
octetstring insbitmask,
|
|
XI_list xi_list optional,
|
|
BIT4 padding optional, /* Must be '0000'B */
|
|
Item_list item_list optional
|
|
};
|
|
|
|
type record Enc_Type_2 /* p.115 */
|
|
{
|
|
BIT2 et, /* Must be '10'B */
|
|
BIT1 gp_bit,
|
|
BIT1 res,
|
|
INT4b count,
|
|
LIN1 gen_id optional,
|
|
LIN1 ref_id,
|
|
octetstring rembitmask
|
|
};
|
|
|
|
type record Enc_Type_3 /* p.115 */
|
|
{
|
|
BIT2 et, /* Must be '11'B */
|
|
BIT1 gp_bit,
|
|
BIT1 ps_bit,
|
|
INT4b xi1,
|
|
LIN1 gen_id optional,
|
|
LIN1 ref_id,
|
|
octetstring rembitmask,
|
|
octetstring insbitmask,
|
|
XI_list xi_list optional,
|
|
BIT4 padding optional, /* Must be '0000'B */
|
|
Item_list item_list optional
|
|
};
|
|
|
|
type record IPv4_Static /* p.94 */
|
|
{
|
|
INT4b version, /* Must be '0100'B */
|
|
INT4b reserved, /* Must be '0000'B */
|
|
LIN1 proto,
|
|
OCT4 srcaddr,
|
|
OCT4 dstaddr
|
|
};
|
|
|
|
type record IPv4_Dynamic /* p.94 */
|
|
{
|
|
LIN1 tos,
|
|
LIN1 ttl,
|
|
LIN2_BO_LAST identification,
|
|
BIT1 df_bit,
|
|
BIT1 rnd_bit,
|
|
BIT1 nbo_bit,
|
|
BIT5 reserved, /* Must be '00000'B */
|
|
Enc_Type_0 genextheadlist
|
|
};
|
|
|
|
type record IPv6_Static /* p.93 */
|
|
{
|
|
INT4b version, /* Must be '0110'B */
|
|
INT20b_BO_LAST flowlabel,
|
|
LIN1 nexthead,
|
|
OCT16 srcaddr,
|
|
OCT16 dstaddr
|
|
};
|
|
|
|
type record IPv6_Dynamic /* p.93 */
|
|
{
|
|
LIN1 trafficclass,
|
|
LIN1 hoplimit,
|
|
Enc_Type_0 genextheadlist
|
|
};
|
|
|
|
type record UDP_Static /* p.95 */
|
|
{
|
|
LIN2_BO_LAST srcport,
|
|
LIN2_BO_LAST dstport
|
|
};
|
|
|
|
type record UDP_Dynamic /* p.95 */
|
|
{
|
|
LIN2_BO_LAST cksum
|
|
};
|
|
|
|
type record RTP_Static /* p.96 */
|
|
{
|
|
OCT4 ssrc
|
|
};
|
|
|
|
type record Rx_Field /* p.96 */
|
|
{
|
|
BIT3 reserved, /* Must be '000'B */
|
|
BIT1 xbit,
|
|
INT2b mode,
|
|
BIT1 tisbit,
|
|
BIT1 tssbit
|
|
};
|
|
|
|
type record RTP_Dynamic /* p.96 */
|
|
{
|
|
INT2b vfield, /* Must be '10'B */
|
|
BIT1 pbit,
|
|
BIT1 rxbit,
|
|
INT4b ccfield,
|
|
BIT1 mbit,
|
|
INT7b ptfield,
|
|
LIN2_BO_LAST rtpseqnum,
|
|
LIN4_BO_LAST rtpts,
|
|
Enc_Type_0 gencsrclist,
|
|
Rx_Field rx_field optional,
|
|
integer ts_stride optional,
|
|
integer time_stride optional
|
|
};
|
|
|
|
type record ESP_Static /* p.97 */
|
|
{
|
|
LIN4_BO_LAST spi
|
|
};
|
|
|
|
type record ESP_Dynamic /* p.97 */
|
|
{
|
|
LIN4_BO_LAST seqnum
|
|
};
|
|
|
|
type union Compr_head_list /* p.112 */
|
|
{
|
|
Enc_Type_0 enctype0,
|
|
Enc_Type_1 enctype1,
|
|
Enc_Type_2 enctype2,
|
|
Enc_Type_3 enctype3
|
|
};
|
|
|
|
type record IP_Ext_heads /* p.111 */
|
|
{
|
|
BIT1 cl,
|
|
BIT1 aseq,
|
|
BIT1 eseq,
|
|
BIT1 gseq,
|
|
BIT4 res,
|
|
AEGSeqnum ah_seq optional,
|
|
AEGSeqnum esp_seq optional,
|
|
AEGSeqnum gre_seq optional,
|
|
Compr_head_list compr_head_list optional
|
|
};
|
|
|
|
type record Outer_IP_fields /* p.82 */
|
|
{
|
|
LIN1 tos optional,
|
|
LIN1 ttl optional,
|
|
LIN1 proto optional,
|
|
IP_Ext_heads ext_heads optional,
|
|
LIN2_BO_LAST ip_id optional
|
|
};
|
|
|
|
type record Outer_IP_flags /* p.81 */
|
|
{
|
|
BIT1 tos2,
|
|
BIT1 ttl2,
|
|
BIT1 df2,
|
|
BIT1 pr2,
|
|
BIT1 ipx2,
|
|
BIT1 nbo2,
|
|
BIT1 rnd2,
|
|
BIT1 i2_bit
|
|
};
|
|
|
|
type record Inner_IP_fields /* p.81 */
|
|
{
|
|
LIN1 tos optional,
|
|
LIN1 ttl optional,
|
|
LIN1 proto optional,
|
|
IP_Ext_heads ext_heads optional
|
|
};
|
|
|
|
type record Inner_IP_flags /* p.80 */
|
|
{
|
|
BIT1 tos,
|
|
BIT1 ttl,
|
|
BIT1 df,
|
|
BIT1 pr,
|
|
BIT1 ipx,
|
|
BIT1 nbo,
|
|
BIT1 rnd_bit,
|
|
BIT1 ip2_bit
|
|
};
|
|
|
|
type record RTP_flags
|
|
{
|
|
BIT1 r_p,
|
|
INT7b rtp_pt
|
|
}
|
|
|
|
type record RTP_flags_fields /* p.82 */
|
|
{
|
|
INT2b mode,
|
|
BIT1 r_pt,
|
|
BIT1 m_bit,
|
|
BIT1 r_x,
|
|
BIT1 csrc,
|
|
BIT1 tss,
|
|
BIT1 tis,
|
|
RTP_flags flags optional,
|
|
Compr_head_list csrc_list optional,
|
|
integer ts_stride optional,
|
|
integer time_stride optional
|
|
}
|
|
|
|
type record Extension0 /* p.79 */
|
|
{
|
|
BIT2 ext_type, /* Must be '00'B */
|
|
INT3b sn,
|
|
INT3b plust
|
|
}
|
|
|
|
type record Extension1 /* p.79 */
|
|
{
|
|
BIT2 ext_type, /* Must be '01'B */
|
|
INT3b sn,
|
|
INT3b plust,
|
|
LIN1 minust
|
|
};
|
|
|
|
type record Extension2 /* p.79 */
|
|
{
|
|
BIT2 ext_type, /* Must be '10'B */
|
|
INT3b sn,
|
|
INT11b_BO_LAST plust,
|
|
LIN1 minust
|
|
};
|
|
|
|
type record Extension3 /* p.79 */
|
|
{
|
|
BIT2 ext_type, /* Must be '11'B */
|
|
BIT1 s_bit,
|
|
BIT1 r_ts_bit,
|
|
BIT1 tsc_bit,
|
|
BIT1 i_bit,
|
|
BIT1 ip_bit,
|
|
BIT1 rtp_bit,
|
|
Inner_IP_flags inner_ip_flags optional,
|
|
Outer_IP_flags outer_ip_flags optional,
|
|
LIN1 sn optional,
|
|
integer ts optional,
|
|
/* This field contains the length of the SDVL encoded TS value counted in
|
|
octets. */
|
|
integer ts_length optional,
|
|
Inner_IP_fields inner_ip_hdr optional,
|
|
LIN2_BO_LAST ip_id optional,
|
|
Outer_IP_fields outer_ip_hdr optional,
|
|
RTP_flags_fields rtp_fl_fi optional
|
|
};
|
|
|
|
type union Profile1_Extension /* p.79 */
|
|
{
|
|
Extension0 ext0,
|
|
Extension1 ext1,
|
|
Extension2 ext2,
|
|
Extension3 ext3
|
|
};
|
|
|
|
//Profile2
|
|
|
|
type record Profile2_headers /* p.77 */
|
|
{
|
|
Profile2_base_header base_header,
|
|
Profile2_Extension ext optional,
|
|
LIN2_BO_LAST ip_id_outer optional,
|
|
octetstring ah_outer optional,
|
|
LIN2_BO_LAST gre_cksum1 optional,
|
|
LIN2_BO_LAST ip_id_inner optional,
|
|
octetstring ah_inner optional,
|
|
LIN2_BO_LAST gre_cksum2 optional,
|
|
LIN2_BO_LAST udp_cksum optional
|
|
};
|
|
|
|
type union Profile2_base_header
|
|
{
|
|
Profile2_IR_header ir,
|
|
Profile2_IR_DYN_header ir_dyn,
|
|
Profile1_R_0_header r_0,
|
|
Profile1_R_0_CRC_header r_0_crc,
|
|
Profile1_UO_0_header uo_0,
|
|
Profile2_R_1_header r_1,
|
|
Profile2_UO_1_header uo_1,
|
|
Profile2_UOR_2_header uor_2
|
|
};
|
|
|
|
type union Profile2_Static_Chain_u
|
|
{
|
|
IPv4_Static ipv4_stat,
|
|
IPv6_Static ipv6_stat,
|
|
UDP_Static udp_stat
|
|
};
|
|
|
|
type record Profile2_UDP_Dynamic
|
|
{
|
|
LIN2_BO_LAST cksum,
|
|
LIN2_BO_LAST udp_sn
|
|
};
|
|
|
|
type union Profile2_Dynamic_Chain_u
|
|
{
|
|
IPv4_Dynamic ipv4_dyn,
|
|
IPv6_Dynamic ipv6_dyn,
|
|
Profile2_UDP_Dynamic udp_dyn
|
|
};
|
|
|
|
type record of Profile2_Static_Chain_u Profile2_Static_Chain;
|
|
|
|
type record of Profile2_Dynamic_Chain_u Profile2_Dynamic_Chain;
|
|
|
|
type record Profile2_IR_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT7 type_ind, /* Must be '1111110'B */
|
|
BIT1 d,
|
|
LIN1 profile, /* Must be 2 */
|
|
LIN1 crc,
|
|
Profile2_Static_Chain stat_chain,
|
|
Profile2_Dynamic_Chain dyn_chain optional
|
|
};
|
|
|
|
type record Profile2_IR_DYN_header /* p.46 */ /* p.92 */
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT8 type_ind, /* Must be '11111000'B */
|
|
LIN1 profile, /* Must be 2 */
|
|
LIN1 crc,
|
|
Profile2_Dynamic_Chain dyn_chain
|
|
};
|
|
|
|
type record Profile2_R_1_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b sn,
|
|
BIT1 x_bit,
|
|
INT7b ip_id
|
|
};
|
|
|
|
type record Profile2_UO_1_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT2 type_ind, /* Must be '10'B */
|
|
INT6b ip_id,
|
|
INT5b sn,
|
|
INT3b crc
|
|
};
|
|
|
|
type record Profile2_UOR_2_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT3 type_ind, /* Must be '110'B */
|
|
INT5b sn,
|
|
BIT1 x_bit,
|
|
INT7b crc
|
|
};
|
|
|
|
type record Profile2_Inner_IP_flags
|
|
{
|
|
BIT1 tos,
|
|
BIT1 ttl,
|
|
BIT1 df,
|
|
BIT1 pr,
|
|
BIT1 ipx,
|
|
BIT1 nbo,
|
|
BIT1 rnd_bit,
|
|
BIT1 reserved /* Must be '0'B */
|
|
};
|
|
|
|
type union Profile2_Extension
|
|
{
|
|
Profile2_Extension0 ext0,
|
|
Profile2_Extension1 ext1,
|
|
Profile2_Extension2 ext2,
|
|
Profile2_Extension3 ext3
|
|
};
|
|
|
|
type record Profile2_Extension0
|
|
{
|
|
BIT2 ext_type, /* Must be '00'B */
|
|
INT3b sn,
|
|
INT3b ip_id
|
|
}
|
|
|
|
type record Profile2_Extension1
|
|
{
|
|
BIT2 ext_type, /* Must be '01'B */
|
|
INT3b sn,
|
|
INT11b_BO_LAST ip_id
|
|
};
|
|
|
|
type record Profile2_Extension2
|
|
{
|
|
BIT2 ext_type, /* Must be '10'B */
|
|
INT3b sn,
|
|
INT11b_BO_LAST ip_id2,
|
|
LIN1 ip_id
|
|
};
|
|
|
|
type record Profile2_Extension3
|
|
{
|
|
BIT2 ext_type, /* Must be '11'B */
|
|
BIT1 s_bit,
|
|
INT2b mode,
|
|
BIT1 i_bit,
|
|
BIT1 ip_bit,
|
|
BIT1 ip2_bit,
|
|
Profile2_Inner_IP_flags inner_ip_flags optional,
|
|
Outer_IP_flags outer_ip_flags optional,
|
|
LIN1 sn optional,
|
|
Inner_IP_fields inner_ip_hdr optional,
|
|
LIN2_BO_LAST ip_id optional,
|
|
Outer_IP_fields outer_ip_hdr optional
|
|
};
|
|
|
|
//Profile4
|
|
|
|
type record Profile4_headers
|
|
{
|
|
Profile4_base_header base_header,
|
|
Profile2_Extension ext optional,
|
|
LIN2_BO_LAST ip_id_outer optional,
|
|
octetstring ah_outer optional,
|
|
LIN2_BO_LAST gre_cksum1 optional,
|
|
LIN2_BO_LAST ip_id_inner optional,
|
|
octetstring ah_inner optional,
|
|
LIN2_BO_LAST gre_cksum2 optional,
|
|
Profile4_Dynamic_Chain additional_IP optional
|
|
};
|
|
|
|
type union Profile4_base_header
|
|
{
|
|
Profile4_IR_header ir,
|
|
Profile4_IR_DYN_header ir_dyn,
|
|
Profile1_R_0_header r_0,
|
|
Profile1_R_0_CRC_header r_0_crc,
|
|
Profile1_UO_0_header uo_0,
|
|
Profile2_R_1_header r_1,
|
|
Profile2_UO_1_header uo_1,
|
|
Profile2_UOR_2_header uor_2
|
|
};
|
|
|
|
type union Profile4_Static_Chain_u
|
|
{
|
|
IPv4_Static ipv4_stat,
|
|
IPv6_Static ipv6_stat
|
|
};
|
|
|
|
type record Profile4_IPv4_Dynamic
|
|
{
|
|
LIN1 tos,
|
|
LIN1 ttl,
|
|
LIN2_BO_LAST identification,
|
|
BIT1 df_bit,
|
|
BIT1 rnd_bit,
|
|
BIT1 nbo_bit,
|
|
BIT1 sid_bit,
|
|
BIT4 reserved, /* Must be '0000'B */
|
|
Enc_Type_0 genextheadlist
|
|
};
|
|
|
|
type union Profile4_Dynamic_Chain_u
|
|
{
|
|
Profile4_IPv4_Dynamic ipv4_dyn,
|
|
IPv6_Dynamic ipv6_dyn,
|
|
LIN2_BO_LAST sn
|
|
};
|
|
|
|
type record of Profile4_Static_Chain_u Profile4_Static_Chain;
|
|
|
|
type record of Profile4_Dynamic_Chain_u Profile4_Dynamic_Chain;
|
|
|
|
type record Profile4_IR_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT7 type_ind, /* Must be '1111110'B */
|
|
BIT1 d,
|
|
LIN1 profile, /* Must be 4 */
|
|
LIN1 crc,
|
|
Profile4_Static_Chain stat_chain,
|
|
Profile4_Dynamic_Chain dyn_chain optional
|
|
};
|
|
|
|
type record Profile4_IR_DYN_header
|
|
{
|
|
INT14b_BO_LAST cid,
|
|
BIT8 type_ind, /* Must be '11111000'B */
|
|
LIN1 profile, /* Must be 4 */
|
|
LIN1 crc,
|
|
Profile4_Dynamic_Chain dyn_chain
|
|
};
|
|
|
|
} with { encode "RAW" }
|
|
|