29 #ifndef ROHC_PROTOCOLS_RFC6846_H    30 #define ROHC_PROTOCOLS_RFC6846_H    42 #define ROHC_PACKET_TYPE_IR      0xFD    43 #define ROHC_PACKET_TYPE_IR_CR   0xfc    44 #define ROHC_PACKET_TYPE_IR_DYN  0xF8    58 #define MAX_TCP_OPTION_INDEX 15U    73 #define ROHC_TCP_OPTS_MAX  15U    76 #define TCP_INDEX_NOP          0U    77 #define TCP_INDEX_EOL          1U    78 #define TCP_INDEX_MSS          2U    79 #define TCP_INDEX_WS           3U    80 #define TCP_INDEX_TS           4U    81 #define TCP_INDEX_SACK_PERM    5U    82 #define TCP_INDEX_SACK         6U    83 #define TCP_INDEX_GENERIC7     7U    84 #define TCP_INDEX_GENERIC8     8U    85 #define TCP_INDEX_GENERIC9     9U    86 #define TCP_INDEX_GENERIC10   10U    87 #define TCP_INDEX_GENERIC11   11U    88 #define TCP_INDEX_GENERIC12   12U    89 #define TCP_INDEX_GENERIC13   13U    90 #define TCP_INDEX_GENERIC14   14U    91 #define TCP_INDEX_GENERIC15   15U   106 #if WORDS_BIGENDIAN == 1   107         uint8_t version_flag:1;
   111         uint8_t version_flag:1;
   126 #if WORDS_BIGENDIAN == 1   129         uint8_t ip_id_behavior:2;
   131         uint8_t ip_ecn_flags:2;
   150 #if WORDS_BIGENDIAN == 1   153         uint8_t ip_id_behavior:2;
   155         uint8_t ip_ecn_flags:2;
   175 #if WORDS_BIGENDIAN == 1   177         uint8_t ip_id_behavior:2;  
   181         uint8_t ip_ecn_flags:2;    
   240 #if WORDS_BIGENDIAN == 1   241         uint8_t version_flag:1;
   243         uint8_t flow_label_enc_discriminator:1;
   252         uint32_t src_addr[4];
   253         uint32_t dst_addr[4];
   264 #if WORDS_BIGENDIAN == 1   265         uint8_t version_flag:1;
   267         uint8_t flow_label_enc_discriminator:1;
   268         uint8_t flow_label1:4;
   277         uint32_t src_addr[4];
   278         uint32_t dst_addr[4];
   289 #if WORDS_BIGENDIAN == 1   291         uint8_t ip_ecn_flags:2;
   307 #if WORDS_BIGENDIAN == 1   309         uint8_t ip_ecn_flags:2;  
   311         uint8_t fl_enc_flag:1;   
   330 #if WORDS_BIGENDIAN == 1   332         uint8_t ip_ecn_flags:2;  
   334         uint8_t fl_enc_flag:1;   
   335         uint8_t flow_label1:4;
   371 #if WORDS_BIGENDIAN == 1   373         uint8_t ack_stride_flag:1;  
   376         uint8_t tcp_res_flags:4;    
   378         uint8_t tcp_ecn_flags:2;    
   430 #if WORDS_BIGENDIAN == 1   432         uint8_t window_presence:1;    
   433         uint8_t list_present:1;       
   434         uint8_t src_port_presence:2;  
   435         uint8_t dst_port_presence:2;  
   436         uint8_t ack_stride_flag:1;    
   438         uint8_t ack_presence:1;       
   439         uint8_t urp_presence:1;       
   488 #if WORDS_BIGENDIAN == 1   490         uint8_t discriminator:7;         
   491         uint8_t ttl_hopl_outer_flag:1;   
   499         uint8_t seq_indicator:2;         
   500         uint8_t ack_indicator:2;         
   501         uint8_t ack_stride_indicator:1;  
   502         uint8_t window_indicator:1;      
   503         uint8_t ip_id_indicator:1;       
   504         uint8_t urg_ptr_present:1;       
   508         uint8_t dscp_present:1;          
   509         uint8_t ttl_hopl_present:1;      
   510         uint8_t list_present:1;          
   511         uint8_t ip_id_behavior:2;        
   515         uint8_t header_crc:7;            
   571 #if WORDS_BIGENDIAN == 1   572         uint8_t discriminator:6;    
   577         uint8_t header_crc:3;       
   587 } __attribute__((packed)) 
rnd_1_t;
   598 #if WORDS_BIGENDIAN == 1   599         uint8_t discriminator:4;    
   600         uint8_t seq_num_scaled:4;   
   603         uint8_t header_crc:3;       
   612 } __attribute__((packed)) 
rnd_2_t;
   623 #if WORDS_BIGENDIAN == 1   624         uint8_t discriminator:1;    
   629         uint8_t header_crc:3;       
   639 } __attribute__((packed)) 
rnd_3_t;
   650 #if WORDS_BIGENDIAN == 1   651         uint8_t discriminator:4;    
   652         uint8_t ack_num_scaled:4;   
   655         uint8_t header_crc:3;       
   664 } __attribute__((packed)) 
rnd_4_t;
   675 #if WORDS_BIGENDIAN == 1   676         uint8_t discriminator:3;    
   679         uint32_t header_crc:3;      
   697 } __attribute__((packed)) 
rnd_5_t;
   708 #if WORDS_BIGENDIAN == 1   709         uint8_t discriminator:4;    
   710         uint8_t header_crc:3;       
   718 #if WORDS_BIGENDIAN == 1   720         uint8_t seq_num_scaled:4;   
   726 } __attribute__((packed)) 
rnd_6_t;
   737 #if WORDS_BIGENDIAN == 1   738         uint8_t discriminator:6;    
   747 #if WORDS_BIGENDIAN == 1   750         uint8_t header_crc:3;       
   757 } __attribute__((packed)) 
rnd_7_t;
   768 #if WORDS_BIGENDIAN == 1   769         uint8_t discriminator:5;    
   771         uint8_t list_present:1;     
   772         uint16_t header_crc:7;      
   794 } __attribute__((packed)) 
rnd_8_t;
   805 #if WORDS_BIGENDIAN == 1   806         uint8_t discriminator:4;    
   813 #if WORDS_BIGENDIAN == 1   816         uint8_t header_crc:3;       
   823 } __attribute__((packed)) 
seq_1_t;
   834 #if WORDS_BIGENDIAN == 1   835         uint16_t discriminator:5;   
   838         uint16_t seq_num_scaled:4;  
   841         uint8_t header_crc:3;       
   852 } __attribute__((packed)) 
seq_2_t;
   863 #if WORDS_BIGENDIAN == 1   864         uint8_t discriminator:4;    
   871 #if WORDS_BIGENDIAN == 1   874         uint8_t header_crc:3;       
   881 } __attribute__((packed)) 
seq_3_t;
   892 #if WORDS_BIGENDIAN == 1   893         uint8_t discriminator:1;    
   894         uint8_t ack_num_scaled:4;   
   898         uint8_t header_crc:3;       
   908 } __attribute__((packed)) 
seq_4_t;
   919 #if WORDS_BIGENDIAN == 1   920         uint8_t discriminator:4;    
   928 #if WORDS_BIGENDIAN == 1   931         uint8_t header_crc:3;       
   938 } __attribute__((packed)) 
seq_5_t;
   949 #if WORDS_BIGENDIAN == 1   950         uint16_t discriminator:5;   
   951         uint16_t seq_num_scaled1:3; 
   952         uint16_t seq_num_scaled2:1; 
   961 #if WORDS_BIGENDIAN == 1   964         uint8_t header_crc:3;       
   971 } __attribute__((packed)) 
seq_6_t;
   982 #if WORDS_BIGENDIAN == 1   983         uint8_t discriminator:4;    
   991         uint8_t header_crc:3;       
  1004 } __attribute__((packed)) 
seq_7_t;
  1015 #if WORDS_BIGENDIAN == 1  1016         uint8_t discriminator:4;    
  1018         uint8_t list_present:1;     
  1019         uint8_t header_crc:7;       
  1026         uint8_t rsf_flags:2;        
  1047 } __attribute__((packed)) 
seq_8_t;
 uint8_t rsf_flags
Definition: rfc6846.h:454
 
uint8_t ack_num1
Definition: rfc6846.h:1037
 
uint8_t psh_flag
Definition: rfc6846.h:687
 
uint8_t discriminator
Definition: rfc6846.h:956
 
uint8_t ttl_hopl_present
Definition: rfc6846.h:537
 
The rnd_1 compressed packet format. 
Definition: rfc6846.h:569
 
The TCP replicate part. 
Definition: rfc6846.h:428
 
uint8_t flow_label_enc_discriminator
Definition: rfc6846.h:247
 
uint8_t rsf_flags
Definition: rfc6846.h:780
 
uint8_t ack_presence
Definition: rfc6846.h:459
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:314
 
uint8_t list_present
Definition: rfc6846.h:779
 
The rnd_6 compressed packet format. 
Definition: rfc6846.h:706
 
uint8_t ip_id_behavior
Definition: rfc6846.h:157
 
uint8_t ack_num1
Definition: rfc6846.h:631
 
uint8_t psh_flag
Definition: rfc6846.h:583
 
uint16_t flow_label2
Definition: rfc6846.h:343
 
uint8_t ack_num2
Definition: rfc6846.h:633
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:160
 
uint8_t ip_id
Definition: rfc6846.h:957
 
uint8_t reserved2
Definition: rfc6846.h:316
 
uint8_t urp_presence
Definition: rfc6846.h:458
 
Definition: rfc6846.h:209
 
uint8_t discriminator
Definition: rfc6846.h:658
 
uint8_t ecn_used
Definition: rfc6846.h:784
 
uint8_t version_flag
Definition: rfc6846.h:249
 
uint8_t discriminator
Definition: rfc6846.h:715
 
uint8_t ip_id_behavior
Definition: rfc6846.h:535
 
uint8_t df
Definition: rfc6846.h:543
 
The rnd_2 compressed packet format. 
Definition: rfc6846.h:596
 
uint8_t msn
Definition: rfc6846.h:686
 
uint16_t msn
Definition: rfc6846.h:461
 
uint8_t discriminator
Definition: rfc6846.h:1031
 
uint8_t msn
Definition: rfc6846.h:754
 
uint8_t next_header
Definition: rfc6846.h:227
 
uint8_t ack_zero
Definition: rfc6846.h:386
 
uint8_t ip_id_indicator
Definition: rfc6846.h:528
 
The rnd_8 compressed packet format. 
Definition: rfc6846.h:766
 
uint8_t flow_label_enc_discriminator
Definition: rfc6846.h:271
 
uint8_t reserved
Definition: rfc6846.h:341
 
uint8_t ip_id
Definition: rfc6846.h:809
 
uint8_t psh_flag
Definition: rfc6846.h:904
 
uint8_t header_crc
Definition: rfc6846.h:607
 
uint16_t ack_num
Definition: rfc6846.h:870
 
uint8_t version_flag
Definition: rfc6846.h:273
 
uint8_t urg_flag
Definition: rfc6846.h:534
 
uint8_t list_present
Definition: rfc6846.h:1033
 
uint8_t msn
Definition: rfc6846.h:849
 
uint8_t seq_num_scaled
Definition: rfc6846.h:722
 
uint8_t psh_flag
Definition: rfc6846.h:455
 
uint8_t ack_flag
Definition: rfc6846.h:392
 
uint16_t seq_num
Definition: rfc6846.h:927
 
The IPv6 static part, flow_label encoded with 1+20 bits. 
Definition: rfc6846.h:262
 
uint8_t discriminator
Definition: rfc6846.h:844
 
uint16_t ack_num
Definition: rfc6846.h:717
 
uint8_t psh_flag
Definition: rfc6846.h:967
 
uint16_t msn
Definition: rfc6846.h:396
 
Definition: rfc6846.h:225
 
uint8_t seq_num1
Definition: rfc6846.h:689
 
uint8_t window1
Definition: rfc6846.h:993
 
The rnd_7 compressed packet format. 
Definition: rfc6846.h:735
 
uint8_t psh_flag
Definition: rfc6846.h:635
 
uint8_t ack_num1
Definition: rfc6846.h:692
 
uint8_t window2
Definition: rfc6846.h:995
 
uint8_t rsf_flags
Definition: rfc6846.h:1041
 
uint8_t dscp
Definition: rfc6846.h:294
 
The rnd_4 compressed packet format. 
Definition: rfc6846.h:648
 
uint8_t ttl_hopl
Definition: rfc6846.h:1034
 
uint8_t ttl_hopl
Definition: rfc6846.h:139
 
uint8_t discriminator
Definition: rfc6846.h:902
 
uint8_t discriminator
Definition: rfc6846.h:810
 
Definition: rfc6846.h:217
 
Definition: rfc6846.h:201
 
uint8_t reserved1
Definition: rfc6846.h:318
 
The TCP static part. 
Definition: rfc6846.h:357
 
uint8_t df
Definition: rfc6846.h:158
 
uint8_t ip_id
Definition: rfc6846.h:1030
 
The rnd_5 compressed packet format. 
Definition: rfc6846.h:673
 
uint8_t ack_stride_flag
Definition: rfc6846.h:387
 
The IPv6 dynamic part. 
Definition: rfc6846.h:287
 
uint8_t ttl_flag
Definition: rfc6846.h:184
 
uint8_t src_port_presence
Definition: rfc6846.h:448
 
uint8_t ack_stride_flag
Definition: rfc6846.h:446
 
uint8_t psh_flag
Definition: rfc6846.h:713
 
uint8_t length
Definition: rfc6846.h:220
 
uint8_t ecn_used
Definition: rfc6846.h:453
 
uint8_t window_indicator
Definition: rfc6846.h:529
 
uint32_t seq_num
Definition: rfc6846.h:397
 
uint8_t ecn_used
Definition: rfc6846.h:1038
 
uint8_t flow_label1
Definition: rfc6846.h:339
 
uint8_t msn
Definition: rfc6846.h:661
 
uint8_t psh_flag
Definition: rfc6846.h:1035
 
The rnd_3 compressed packet format. 
Definition: rfc6846.h:621
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:187
 
uint8_t flow_label1
Definition: rfc6846.h:270
 
uint16_t ip_id
Definition: rfc6846.h:164
 
uint8_t window3
Definition: rfc6846.h:997
 
uint8_t ecn_used
Definition: rfc6846.h:539
 
uint8_t reserved
Definition: rfc6846.h:186
 
uint8_t ack_num1
Definition: rfc6846.h:742
 
The seq_1 compressed packet format. 
Definition: rfc6846.h:803
 
uint8_t reserved
Definition: rfc6846.h:540
 
uint8_t ip_id1
Definition: rfc6846.h:843
 
uint8_t header_crc
Definition: rfc6846.h:999
 
uint8_t ip_id
Definition: rfc6846.h:867
 
uint8_t reserved
Definition: rfc6846.h:451
 
The IPv4 dynamic part without IP-ID field. 
Definition: rfc6846.h:124
 
uint8_t fl_enc_flag
Definition: rfc6846.h:340
 
The seq_6 compressed packet format. 
Definition: rfc6846.h:947
 
uint8_t fl_enc_flag
Definition: rfc6846.h:317
 
uint8_t ip_id_behavior
Definition: rfc6846.h:185
 
uint16_t ack_num
Definition: rfc6846.h:790
 
uint16_t ack_num
Definition: rfc6846.h:998
 
uint8_t ttl_hopl
Definition: rfc6846.h:163
 
uint8_t psh_flag
Definition: rfc6846.h:608
 
uint8_t msn1
Definition: rfc6846.h:782
 
uint8_t discriminator
Definition: rfc6846.h:868
 
uint8_t discriminator
Definition: rfc6846.h:924
 
uint16_t src_port
Definition: rfc6846.h:359
 
uint8_t seq_num_scaled
Definition: rfc6846.h:605
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:293
 
uint8_t list_present
Definition: rfc6846.h:536
 
uint8_t header_crc
Definition: rfc6846.h:966
 
uint8_t rsf_flags
Definition: rfc6846.h:390
 
uint8_t discriminator
Definition: rfc6846.h:606
 
uint16_t seq_num2
Definition: rfc6846.h:581
 
uint8_t ttl_hopl
Definition: rfc6846.h:296
 
uint8_t urg_flag
Definition: rfc6846.h:393
 
uint8_t psh_flag
Definition: rfc6846.h:786
 
uint8_t urg_flag
Definition: rfc6846.h:457
 
The TCP dynamic part. 
Definition: rfc6846.h:369
 
The seq_2 compressed packet format. 
Definition: rfc6846.h:832
 
The IPv6 static part, null flow_label encoded with 1 bit. 
Definition: rfc6846.h:238
 
uint8_t ecn_used
Definition: rfc6846.h:388
 
uint8_t dst_port_presence
Definition: rfc6846.h:447
 
uint8_t ack_num2
Definition: rfc6846.h:694
 
The IPv6 replicate part with short Flow Label. 
Definition: rfc6846.h:305
 
The IPv4 dynamic part with IP-ID field. 
Definition: rfc6846.h:148
 
Definition: rfc6846.h:417
 
uint8_t tcp_res_flags
Definition: rfc6846.h:384
 
uint8_t header_crc
Definition: rfc6846.h:752
 
uint8_t header_crc
Definition: rfc6846.h:933
 
The seq_8 compressed packet format. 
Definition: rfc6846.h:1013
 
uint8_t next_header
Definition: rfc6846.h:276
 
uint8_t psh_flag
Definition: rfc6846.h:848
 
uint8_t psh_flag
Definition: rfc6846.h:753
 
uint8_t seq_num_scaled2
Definition: rfc6846.h:958
 
uint16_t seq_num
Definition: rfc6846.h:789
 
The IPv4 static part. 
Definition: rfc5225.h:51
 
uint8_t header_crc
Definition: rfc6846.h:659
 
uint8_t dscp
Definition: rfc6846.h:188
 
uint8_t header_crc
Definition: rfc6846.h:634
 
The IPv6 replicate part with long Flow Label. 
Definition: rfc6846.h:328
 
uint16_t dst_port
Definition: rfc6846.h:360
 
uint8_t ttl_hopl
Definition: rfc6846.h:785
 
uint16_t flow_label2
Definition: rfc6846.h:275
 
uint8_t msn
Definition: rfc6846.h:878
 
Definition: rfc6846.h:419
 
uint8_t psh_flag
Definition: rfc6846.h:1000
 
uint8_t ack_stride_indicator
Definition: rfc6846.h:530
 
uint8_t next_header
Definition: rfc6846.h:251
 
The seq_7 compressed packet format. 
Definition: rfc6846.h:980
 
uint8_t tcp_ecn_flags
Definition: rfc6846.h:394
 
uint8_t length
Definition: rfc6846.h:204
 
uint8_t discriminator
Definition: rfc6846.h:994
 
uint8_t psh_flag
Definition: rfc6846.h:524
 
uint16_t ack_num
Definition: rfc6846.h:960
 
uint16_t window
Definition: rfc6846.h:746
 
uint8_t seq_num2
Definition: rfc6846.h:691
 
uint8_t msn
Definition: rfc6846.h:968
 
Definition: rfc6846.h:416
 
uint8_t msn
Definition: rfc6846.h:820
 
uint8_t msn
Definition: rfc6846.h:609
 
The seq_4 compressed packet format. 
Definition: rfc6846.h:890
 
uint8_t header_crc
Definition: rfc6846.h:1032
 
uint8_t msn
Definition: rfc6846.h:522
 
uint8_t ip_id
Definition: rfc6846.h:996
 
uint8_t header_crc
Definition: rfc6846.h:690
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:136
 
uint8_t reserved
Definition: rfc6846.h:159
 
uint8_t psh_flag
Definition: rfc6846.h:391
 
uint8_t seq_num2
Definition: rfc6846.h:1042
 
uint8_t urg_ptr_present
Definition: rfc6846.h:527
 
uint8_t discriminator
Definition: rfc6846.h:743
 
uint8_t ttl_hopl_outer_flag
Definition: rfc6846.h:519
 
uint8_t psh_flag
Definition: rfc6846.h:819
 
uint8_t discriminator
Definition: rfc6846.h:688
 
The seq_5 compressed packet format. 
Definition: rfc6846.h:917
 
uint8_t length
Definition: rfc6846.h:228
 
uint8_t msn
Definition: rfc6846.h:905
 
uint8_t rsf_flags
Definition: rfc6846.h:523
 
uint8_t dscp
Definition: rfc6846.h:338
 
uint16_t seq_num
Definition: rfc6846.h:812
 
uint8_t ip_id_behavior
Definition: rfc6846.h:133
 
The IPv4 replicate part. 
Definition: rfc6846.h:173
 
The seq_3 compressed packet format. 
Definition: rfc6846.h:861
 
uint8_t next_header
Definition: rfc6846.h:219
 
uint8_t header_crc
Definition: rfc6846.h:876
 
uint8_t seq_num1
Definition: rfc6846.h:1040
 
uint8_t ack_num2
Definition: rfc6846.h:1039
 
uint8_t psh_flag
Definition: rfc6846.h:660
 
uint8_t dscp
Definition: rfc6846.h:161
 
uint8_t header_crc
Definition: rfc6846.h:714
 
uint8_t ip_id2
Definition: rfc6846.h:846
 
uint8_t dscp_present
Definition: rfc6846.h:538
 
uint8_t df
Definition: rfc6846.h:183
 
uint8_t reserved
Definition: rfc6846.h:135
 
uint8_t discriminator
Definition: rfc6846.h:632
 
uint8_t ip_id
Definition: rfc6846.h:900
 
uint8_t next_header
Definition: rfc6846.h:211
 
uint8_t msn
Definition: rfc6846.h:636
 
uint16_t ack_num
Definition: rfc6846.h:926
 
uint8_t discriminator
Definition: rfc6846.h:781
 
uint8_t reserved2
Definition: rfc6846.h:246
 
uint8_t ack_flag
Definition: rfc6846.h:525
 
uint8_t next_header
Definition: rfc6846.h:203
 
uint8_t length
Definition: rfc6846.h:212
 
uint8_t seq_indicator
Definition: rfc6846.h:532
 
uint8_t msn
Definition: rfc6846.h:1036
 
uint8_t window_presence
Definition: rfc6846.h:450
 
uint32_t seq_num
Definition: rfc6846.h:462
 
uint8_t ack_flag
Definition: rfc6846.h:456
 
uint8_t msn
Definition: rfc6846.h:584
 
uint8_t msn2
Definition: rfc6846.h:787
 
uint8_t header_crc
Definition: rfc6846.h:903
 
uint8_t psh_flag
Definition: rfc6846.h:877
 
uint8_t dscp
Definition: rfc6846.h:137
 
uint8_t seq_num1
Definition: rfc6846.h:579
 
uint8_t ack_num_scaled
Definition: rfc6846.h:901
 
uint8_t msn
Definition: rfc6846.h:935
 
uint8_t urp_zero
Definition: rfc6846.h:385
 
The Common compressed packet format. 
Definition: rfc6846.h:486
 
uint8_t reserved
Definition: rfc6846.h:272
 
uint8_t ack_num_scaled
Definition: rfc6846.h:657
 
uint8_t seq_num3
Definition: rfc6846.h:693
 
uint8_t header_crc
Definition: rfc6846.h:783
 
uint8_t msn
Definition: rfc6846.h:1001
 
uint8_t psh_flag
Definition: rfc6846.h:934
 
Definition: rfc6846.h:418
 
uint8_t ip_ecn_flags
Definition: rfc6846.h:337
 
uint8_t header_crc
Definition: rfc6846.h:582
 
uint8_t list_present
Definition: rfc6846.h:449
 
uint8_t header_crc
Definition: rfc6846.h:847
 
uint8_t df
Definition: rfc6846.h:134
 
uint8_t ack_indicator
Definition: rfc6846.h:531
 
uint8_t header_crc
Definition: rfc6846.h:542
 
uint8_t msn
Definition: rfc6846.h:723
 
uint8_t reserved1
Definition: rfc6846.h:248
 
uint8_t ip_id
Definition: rfc6846.h:923
 
uint8_t discriminator
Definition: rfc6846.h:520
 
uint8_t seq_num_scaled
Definition: rfc6846.h:845
 
uint16_t ack_num2
Definition: rfc6846.h:744
 
uint8_t seq_num_scaled1
Definition: rfc6846.h:955
 
uint8_t header_crc
Definition: rfc6846.h:818
 
uint8_t dscp
Definition: rfc6846.h:315
 
uint8_t discriminator
Definition: rfc6846.h:580