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 ROHC_TCP_OPT_MAX_LEN 34U 67 #define MAX_TCP_OPTION_INDEX 15U 70 #define TCP_INDEX_NOP 0U 71 #define TCP_INDEX_EOL 1U 72 #define TCP_INDEX_MSS 2U 73 #define TCP_INDEX_WS 3U 74 #define TCP_INDEX_TS 4U 75 #define TCP_INDEX_SACK_PERM 5U 76 #define TCP_INDEX_SACK 6U 77 #define TCP_INDEX_GENERIC7 7U 78 #define TCP_INDEX_GENERIC8 8U 79 #define TCP_INDEX_GENERIC9 9U 80 #define TCP_INDEX_GENERIC10 10U 81 #define TCP_INDEX_GENERIC11 11U 82 #define TCP_INDEX_GENERIC12 12U 83 #define TCP_INDEX_GENERIC13 13U 84 #define TCP_INDEX_GENERIC14 14U 85 #define TCP_INDEX_GENERIC15 15U 100 #if WORDS_BIGENDIAN == 1 101 uint8_t version_flag:1;
105 uint8_t version_flag:1;
120 #if WORDS_BIGENDIAN == 1 123 uint8_t ip_id_behavior:2;
125 uint8_t ip_ecn_flags:2;
144 #if WORDS_BIGENDIAN == 1 147 uint8_t ip_id_behavior:2;
149 uint8_t ip_ecn_flags:2;
169 #if WORDS_BIGENDIAN == 1 171 uint8_t ip_id_behavior:2;
175 uint8_t ip_ecn_flags:2;
234 #if WORDS_BIGENDIAN == 1 235 uint8_t version_flag:1;
237 uint8_t flow_label_enc_discriminator:1;
246 uint32_t src_addr[4];
247 uint32_t dst_addr[4];
258 #if WORDS_BIGENDIAN == 1 259 uint8_t version_flag:1;
261 uint8_t flow_label_enc_discriminator:1;
262 uint8_t flow_label1:4;
271 uint32_t src_addr[4];
272 uint32_t dst_addr[4];
283 #if WORDS_BIGENDIAN == 1 285 uint8_t ip_ecn_flags:2;
301 #if WORDS_BIGENDIAN == 1 303 uint8_t ip_ecn_flags:2;
305 uint8_t fl_enc_flag:1;
324 #if WORDS_BIGENDIAN == 1 326 uint8_t ip_ecn_flags:2;
328 uint8_t fl_enc_flag:1;
329 uint8_t flow_label1:4;
365 #if WORDS_BIGENDIAN == 1 367 uint8_t ack_stride_flag:1;
370 uint8_t tcp_res_flags:4;
372 uint8_t tcp_ecn_flags:2;
424 #if WORDS_BIGENDIAN == 1 426 uint8_t window_presence:1;
427 uint8_t list_present:1;
428 uint8_t src_port_presence:2;
429 uint8_t dst_port_presence:2;
430 uint8_t ack_stride_flag:1;
432 uint8_t ack_presence:1;
433 uint8_t urp_presence:1;
482 #if WORDS_BIGENDIAN == 1 484 uint8_t discriminator:7;
485 uint8_t ttl_hopl_outer_flag:1;
493 uint8_t seq_indicator:2;
494 uint8_t ack_indicator:2;
495 uint8_t ack_stride_indicator:1;
496 uint8_t window_indicator:1;
497 uint8_t ip_id_indicator:1;
498 uint8_t urg_ptr_present:1;
502 uint8_t dscp_present:1;
503 uint8_t ttl_hopl_present:1;
504 uint8_t list_present:1;
505 uint8_t ip_id_behavior:2;
509 uint8_t header_crc:7;
565 #if WORDS_BIGENDIAN == 1 566 uint8_t discriminator:6;
571 uint8_t header_crc:3;
581 } __attribute__((packed))
rnd_1_t;
592 #if WORDS_BIGENDIAN == 1 593 uint8_t discriminator:4;
594 uint8_t seq_num_scaled:4;
597 uint8_t header_crc:3;
606 } __attribute__((packed))
rnd_2_t;
617 #if WORDS_BIGENDIAN == 1 618 uint8_t discriminator:1;
623 uint8_t header_crc:3;
633 } __attribute__((packed))
rnd_3_t;
644 #if WORDS_BIGENDIAN == 1 645 uint8_t discriminator:4;
646 uint8_t ack_num_scaled:4;
649 uint8_t header_crc:3;
658 } __attribute__((packed))
rnd_4_t;
669 #if WORDS_BIGENDIAN == 1 670 uint8_t discriminator:3;
673 uint32_t header_crc:3;
691 } __attribute__((packed))
rnd_5_t;
702 #if WORDS_BIGENDIAN == 1 703 uint8_t discriminator:4;
704 uint8_t header_crc:3;
712 #if WORDS_BIGENDIAN == 1 714 uint8_t seq_num_scaled:4;
720 } __attribute__((packed))
rnd_6_t;
731 #if WORDS_BIGENDIAN == 1 732 uint8_t discriminator:6;
741 #if WORDS_BIGENDIAN == 1 744 uint8_t header_crc:3;
751 } __attribute__((packed))
rnd_7_t;
762 #if WORDS_BIGENDIAN == 1 763 uint8_t discriminator:5;
765 uint8_t list_present:1;
766 uint16_t header_crc:7;
788 } __attribute__((packed))
rnd_8_t;
799 #if WORDS_BIGENDIAN == 1 800 uint8_t discriminator:4;
807 #if WORDS_BIGENDIAN == 1 810 uint8_t header_crc:3;
817 } __attribute__((packed))
seq_1_t;
828 #if WORDS_BIGENDIAN == 1 829 uint16_t discriminator:5;
832 uint16_t seq_num_scaled:4;
835 uint8_t header_crc:3;
846 } __attribute__((packed))
seq_2_t;
857 #if WORDS_BIGENDIAN == 1 858 uint8_t discriminator:4;
865 #if WORDS_BIGENDIAN == 1 868 uint8_t header_crc:3;
875 } __attribute__((packed))
seq_3_t;
886 #if WORDS_BIGENDIAN == 1 887 uint8_t discriminator:1;
888 uint8_t ack_num_scaled:4;
892 uint8_t header_crc:3;
902 } __attribute__((packed))
seq_4_t;
913 #if WORDS_BIGENDIAN == 1 914 uint8_t discriminator:4;
922 #if WORDS_BIGENDIAN == 1 925 uint8_t header_crc:3;
932 } __attribute__((packed))
seq_5_t;
943 #if WORDS_BIGENDIAN == 1 944 uint16_t discriminator:5;
945 uint16_t seq_num_scaled1:3;
946 uint16_t seq_num_scaled2:1;
955 #if WORDS_BIGENDIAN == 1 958 uint8_t header_crc:3;
965 } __attribute__((packed))
seq_6_t;
976 #if WORDS_BIGENDIAN == 1 977 uint8_t discriminator:4;
985 uint8_t header_crc:3;
998 } __attribute__((packed))
seq_7_t;
1009 #if WORDS_BIGENDIAN == 1 1010 uint8_t discriminator:4;
1012 uint8_t list_present:1;
1013 uint8_t header_crc:7;
1020 uint8_t rsf_flags:2;
1041 } __attribute__((packed))
seq_8_t;
uint8_t rsf_flags
Definition: rfc6846.h:448
uint8_t ack_num1
Definition: rfc6846.h:1031
uint8_t psh_flag
Definition: rfc6846.h:681
uint8_t discriminator
Definition: rfc6846.h:950
uint8_t ttl_hopl_present
Definition: rfc6846.h:531
The rnd_1 compressed packet format.
Definition: rfc6846.h:563
The TCP replicate part.
Definition: rfc6846.h:422
uint8_t flow_label_enc_discriminator
Definition: rfc6846.h:241
uint8_t rsf_flags
Definition: rfc6846.h:774
uint8_t ack_presence
Definition: rfc6846.h:453
uint8_t ip_ecn_flags
Definition: rfc6846.h:308
uint8_t list_present
Definition: rfc6846.h:773
The rnd_6 compressed packet format.
Definition: rfc6846.h:700
uint8_t ip_id_behavior
Definition: rfc6846.h:151
uint8_t ack_num1
Definition: rfc6846.h:625
uint8_t psh_flag
Definition: rfc6846.h:577
uint16_t flow_label2
Definition: rfc6846.h:337
uint8_t ack_num2
Definition: rfc6846.h:627
uint8_t ip_ecn_flags
Definition: rfc6846.h:154
uint8_t ip_id
Definition: rfc6846.h:951
uint8_t reserved2
Definition: rfc6846.h:310
uint8_t urp_presence
Definition: rfc6846.h:452
Definition: rfc6846.h:203
uint8_t discriminator
Definition: rfc6846.h:652
uint8_t ecn_used
Definition: rfc6846.h:778
uint8_t version_flag
Definition: rfc6846.h:243
uint8_t discriminator
Definition: rfc6846.h:709
uint8_t ip_id_behavior
Definition: rfc6846.h:529
uint8_t df
Definition: rfc6846.h:537
The rnd_2 compressed packet format.
Definition: rfc6846.h:590
uint8_t msn
Definition: rfc6846.h:680
uint16_t msn
Definition: rfc6846.h:455
uint8_t discriminator
Definition: rfc6846.h:1025
uint8_t msn
Definition: rfc6846.h:748
uint8_t next_header
Definition: rfc6846.h:221
uint8_t ack_zero
Definition: rfc6846.h:380
uint8_t ip_id_indicator
Definition: rfc6846.h:522
The rnd_8 compressed packet format.
Definition: rfc6846.h:760
uint8_t flow_label_enc_discriminator
Definition: rfc6846.h:265
uint8_t reserved
Definition: rfc6846.h:335
uint8_t ip_id
Definition: rfc6846.h:803
uint8_t psh_flag
Definition: rfc6846.h:898
uint8_t header_crc
Definition: rfc6846.h:601
uint16_t ack_num
Definition: rfc6846.h:864
uint8_t version_flag
Definition: rfc6846.h:267
uint8_t urg_flag
Definition: rfc6846.h:528
uint8_t list_present
Definition: rfc6846.h:1027
uint8_t msn
Definition: rfc6846.h:843
uint8_t seq_num_scaled
Definition: rfc6846.h:716
uint8_t psh_flag
Definition: rfc6846.h:449
uint8_t ack_flag
Definition: rfc6846.h:386
uint16_t seq_num
Definition: rfc6846.h:921
The IPv6 static part, flow_label encoded with 1+20 bits.
Definition: rfc6846.h:256
uint8_t discriminator
Definition: rfc6846.h:838
uint16_t ack_num
Definition: rfc6846.h:711
uint8_t psh_flag
Definition: rfc6846.h:961
uint16_t msn
Definition: rfc6846.h:390
Definition: rfc6846.h:219
uint8_t seq_num1
Definition: rfc6846.h:683
uint8_t window1
Definition: rfc6846.h:987
The rnd_7 compressed packet format.
Definition: rfc6846.h:729
uint8_t psh_flag
Definition: rfc6846.h:629
uint8_t ack_num1
Definition: rfc6846.h:686
uint8_t window2
Definition: rfc6846.h:989
uint8_t rsf_flags
Definition: rfc6846.h:1035
uint8_t dscp
Definition: rfc6846.h:288
The rnd_4 compressed packet format.
Definition: rfc6846.h:642
uint8_t ttl_hopl
Definition: rfc6846.h:1028
uint8_t ttl_hopl
Definition: rfc6846.h:133
uint8_t discriminator
Definition: rfc6846.h:896
uint8_t discriminator
Definition: rfc6846.h:804
Definition: rfc6846.h:211
Definition: rfc6846.h:195
uint8_t reserved1
Definition: rfc6846.h:312
The TCP static part.
Definition: rfc6846.h:351
uint8_t df
Definition: rfc6846.h:152
uint8_t ip_id
Definition: rfc6846.h:1024
The rnd_5 compressed packet format.
Definition: rfc6846.h:667
uint8_t ack_stride_flag
Definition: rfc6846.h:381
The IPv6 dynamic part.
Definition: rfc6846.h:281
uint8_t ttl_flag
Definition: rfc6846.h:178
uint8_t src_port_presence
Definition: rfc6846.h:442
uint8_t ack_stride_flag
Definition: rfc6846.h:440
uint8_t psh_flag
Definition: rfc6846.h:707
uint8_t length
Definition: rfc6846.h:214
uint8_t ecn_used
Definition: rfc6846.h:447
uint8_t window_indicator
Definition: rfc6846.h:523
uint32_t seq_num
Definition: rfc6846.h:391
uint8_t ecn_used
Definition: rfc6846.h:1032
uint8_t flow_label1
Definition: rfc6846.h:333
uint8_t msn
Definition: rfc6846.h:655
uint8_t psh_flag
Definition: rfc6846.h:1029
The rnd_3 compressed packet format.
Definition: rfc6846.h:615
uint8_t ip_ecn_flags
Definition: rfc6846.h:181
uint8_t flow_label1
Definition: rfc6846.h:264
uint16_t ip_id
Definition: rfc6846.h:158
uint8_t window3
Definition: rfc6846.h:991
uint8_t ecn_used
Definition: rfc6846.h:533
uint8_t reserved
Definition: rfc6846.h:180
uint8_t ack_num1
Definition: rfc6846.h:736
The seq_1 compressed packet format.
Definition: rfc6846.h:797
uint8_t reserved
Definition: rfc6846.h:534
uint8_t ip_id1
Definition: rfc6846.h:837
uint8_t header_crc
Definition: rfc6846.h:993
uint8_t ip_id
Definition: rfc6846.h:861
uint8_t reserved
Definition: rfc6846.h:445
The IPv4 dynamic part without IP-ID field.
Definition: rfc6846.h:118
uint8_t fl_enc_flag
Definition: rfc6846.h:334
The seq_6 compressed packet format.
Definition: rfc6846.h:941
uint8_t fl_enc_flag
Definition: rfc6846.h:311
uint8_t ip_id_behavior
Definition: rfc6846.h:179
uint16_t ack_num
Definition: rfc6846.h:784
uint16_t ack_num
Definition: rfc6846.h:992
uint8_t ttl_hopl
Definition: rfc6846.h:157
uint8_t psh_flag
Definition: rfc6846.h:602
uint8_t msn1
Definition: rfc6846.h:776
uint8_t discriminator
Definition: rfc6846.h:862
uint8_t discriminator
Definition: rfc6846.h:918
uint16_t src_port
Definition: rfc6846.h:353
uint8_t seq_num_scaled
Definition: rfc6846.h:599
uint8_t ip_ecn_flags
Definition: rfc6846.h:287
uint8_t list_present
Definition: rfc6846.h:530
uint8_t header_crc
Definition: rfc6846.h:960
uint8_t rsf_flags
Definition: rfc6846.h:384
uint8_t discriminator
Definition: rfc6846.h:600
uint16_t seq_num2
Definition: rfc6846.h:575
uint8_t ttl_hopl
Definition: rfc6846.h:290
uint8_t urg_flag
Definition: rfc6846.h:387
uint8_t psh_flag
Definition: rfc6846.h:780
uint8_t urg_flag
Definition: rfc6846.h:451
The TCP dynamic part.
Definition: rfc6846.h:363
The seq_2 compressed packet format.
Definition: rfc6846.h:826
The IPv6 static part, null flow_label encoded with 1 bit.
Definition: rfc6846.h:232
uint8_t ecn_used
Definition: rfc6846.h:382
uint8_t dst_port_presence
Definition: rfc6846.h:441
uint8_t ack_num2
Definition: rfc6846.h:688
The IPv6 replicate part with short Flow Label.
Definition: rfc6846.h:299
The IPv4 dynamic part with IP-ID field.
Definition: rfc6846.h:142
Definition: rfc6846.h:411
uint8_t tcp_res_flags
Definition: rfc6846.h:378
uint8_t header_crc
Definition: rfc6846.h:746
uint8_t header_crc
Definition: rfc6846.h:927
The seq_8 compressed packet format.
Definition: rfc6846.h:1007
uint8_t next_header
Definition: rfc6846.h:270
uint8_t psh_flag
Definition: rfc6846.h:842
uint8_t psh_flag
Definition: rfc6846.h:747
uint8_t seq_num_scaled2
Definition: rfc6846.h:952
uint16_t seq_num
Definition: rfc6846.h:783
The IPv4 static part.
Definition: rfc5225.h:51
uint8_t header_crc
Definition: rfc6846.h:653
uint8_t dscp
Definition: rfc6846.h:182
uint8_t header_crc
Definition: rfc6846.h:628
The IPv6 replicate part with long Flow Label.
Definition: rfc6846.h:322
uint16_t dst_port
Definition: rfc6846.h:354
uint8_t ttl_hopl
Definition: rfc6846.h:779
uint16_t flow_label2
Definition: rfc6846.h:269
uint8_t msn
Definition: rfc6846.h:872
Definition: rfc6846.h:413
uint8_t psh_flag
Definition: rfc6846.h:994
uint8_t ack_stride_indicator
Definition: rfc6846.h:524
uint8_t next_header
Definition: rfc6846.h:245
The seq_7 compressed packet format.
Definition: rfc6846.h:974
uint8_t tcp_ecn_flags
Definition: rfc6846.h:388
uint8_t length
Definition: rfc6846.h:198
uint8_t discriminator
Definition: rfc6846.h:988
uint8_t psh_flag
Definition: rfc6846.h:518
uint16_t ack_num
Definition: rfc6846.h:954
uint16_t window
Definition: rfc6846.h:740
uint8_t seq_num2
Definition: rfc6846.h:685
uint8_t msn
Definition: rfc6846.h:962
Definition: rfc6846.h:410
uint8_t msn
Definition: rfc6846.h:814
uint8_t msn
Definition: rfc6846.h:603
The seq_4 compressed packet format.
Definition: rfc6846.h:884
uint8_t header_crc
Definition: rfc6846.h:1026
uint8_t msn
Definition: rfc6846.h:516
uint8_t ip_id
Definition: rfc6846.h:990
uint8_t header_crc
Definition: rfc6846.h:684
uint8_t ip_ecn_flags
Definition: rfc6846.h:130
uint8_t reserved
Definition: rfc6846.h:153
uint8_t psh_flag
Definition: rfc6846.h:385
uint8_t seq_num2
Definition: rfc6846.h:1036
uint8_t urg_ptr_present
Definition: rfc6846.h:521
uint8_t discriminator
Definition: rfc6846.h:737
uint8_t ttl_hopl_outer_flag
Definition: rfc6846.h:513
uint8_t psh_flag
Definition: rfc6846.h:813
uint8_t discriminator
Definition: rfc6846.h:682
The seq_5 compressed packet format.
Definition: rfc6846.h:911
uint8_t length
Definition: rfc6846.h:222
uint8_t msn
Definition: rfc6846.h:899
uint8_t rsf_flags
Definition: rfc6846.h:517
uint8_t dscp
Definition: rfc6846.h:332
uint16_t seq_num
Definition: rfc6846.h:806
uint8_t ip_id_behavior
Definition: rfc6846.h:127
The IPv4 replicate part.
Definition: rfc6846.h:167
The seq_3 compressed packet format.
Definition: rfc6846.h:855
uint8_t next_header
Definition: rfc6846.h:213
uint8_t header_crc
Definition: rfc6846.h:870
uint8_t seq_num1
Definition: rfc6846.h:1034
uint8_t ack_num2
Definition: rfc6846.h:1033
uint8_t psh_flag
Definition: rfc6846.h:654
uint8_t dscp
Definition: rfc6846.h:155
uint8_t header_crc
Definition: rfc6846.h:708
uint8_t ip_id2
Definition: rfc6846.h:840
uint8_t dscp_present
Definition: rfc6846.h:532
uint8_t df
Definition: rfc6846.h:177
uint8_t reserved
Definition: rfc6846.h:129
uint8_t discriminator
Definition: rfc6846.h:626
uint8_t ip_id
Definition: rfc6846.h:894
uint8_t next_header
Definition: rfc6846.h:205
uint8_t msn
Definition: rfc6846.h:630
uint16_t ack_num
Definition: rfc6846.h:920
uint8_t discriminator
Definition: rfc6846.h:775
uint8_t reserved2
Definition: rfc6846.h:240
uint8_t ack_flag
Definition: rfc6846.h:519
uint8_t next_header
Definition: rfc6846.h:197
uint8_t length
Definition: rfc6846.h:206
uint8_t seq_indicator
Definition: rfc6846.h:526
uint8_t msn
Definition: rfc6846.h:1030
uint8_t window_presence
Definition: rfc6846.h:444
uint32_t seq_num
Definition: rfc6846.h:456
uint8_t ack_flag
Definition: rfc6846.h:450
uint8_t msn
Definition: rfc6846.h:578
uint8_t msn2
Definition: rfc6846.h:781
uint8_t header_crc
Definition: rfc6846.h:897
uint8_t psh_flag
Definition: rfc6846.h:871
uint8_t dscp
Definition: rfc6846.h:131
uint8_t seq_num1
Definition: rfc6846.h:573
uint8_t ack_num_scaled
Definition: rfc6846.h:895
uint8_t msn
Definition: rfc6846.h:929
uint8_t urp_zero
Definition: rfc6846.h:379
The Common compressed packet format.
Definition: rfc6846.h:480
uint8_t reserved
Definition: rfc6846.h:266
uint8_t ack_num_scaled
Definition: rfc6846.h:651
uint8_t seq_num3
Definition: rfc6846.h:687
uint8_t header_crc
Definition: rfc6846.h:777
uint8_t msn
Definition: rfc6846.h:995
uint8_t psh_flag
Definition: rfc6846.h:928
Definition: rfc6846.h:412
uint8_t ip_ecn_flags
Definition: rfc6846.h:331
uint8_t header_crc
Definition: rfc6846.h:576
uint8_t list_present
Definition: rfc6846.h:443
uint8_t header_crc
Definition: rfc6846.h:841
uint8_t df
Definition: rfc6846.h:128
uint8_t ack_indicator
Definition: rfc6846.h:525
uint8_t header_crc
Definition: rfc6846.h:536
uint8_t msn
Definition: rfc6846.h:717
uint8_t reserved1
Definition: rfc6846.h:242
uint8_t ip_id
Definition: rfc6846.h:917
uint8_t discriminator
Definition: rfc6846.h:514
uint8_t seq_num_scaled
Definition: rfc6846.h:839
uint16_t ack_num2
Definition: rfc6846.h:738
uint8_t seq_num_scaled1
Definition: rfc6846.h:949
uint8_t header_crc
Definition: rfc6846.h:812
uint8_t dscp
Definition: rfc6846.h:309
uint8_t discriminator
Definition: rfc6846.h:574