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