/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2019 Tom Jones <[email protected]>4*5* Redistribution and use in source and binary forms, with or without6* modification, are permitted provided that the following conditions7* are met:8* 1. Redistributions of source code must retain the above copyright9* notice, this list of conditions and the following disclaimer.10* 2. Redistributions in binary form must reproduce the above copyright11* notice, this list of conditions and the following disclaimer in the12* documentation and/or other materials provided with the distribution.13*14* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND15* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE16* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE17* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE18* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL19* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS20* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)21* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT22* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY23* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF24* SUCH DAMAGE.25*/2627#ifndef _NETINET_DCCP_H_28#define _NETINET_DCCP_H_2930/* DCCP protocol header as per RFC4340 */31struct dccphdr {32uint16_t d_sport;33uint16_t d_dport;34uint8_t d_doff;35#if BYTE_ORDER == LITTLE_ENDIAN36uint8_t d_cscov:4,37d_ccval:4;38#endif39#if BYTE_ORDER == BIG_ENDIAN40uint8_t d_ccval:4,41d_cscov:4;42#endif43uint8_t d_cksum[2];44#if BYTE_ORDER == LITTLE_ENDIAN45uint8_t d_res:3,46d_type:4,47d_x:1;48#endif49#if BYTE_ORDER == BIG_ENDIAN50uint8_t d_x:1,51d_type:4,52d_res:3;53#endif54/*55* Provide enough space for both the short (24 bit) sequence number and56* the long (48 bit) sequene number and a leading reserved byte in57* front of the long sequence number.58*/59union dccp_seqno {60uint8_t shortseq[3];61struct dccp_long_seqno {62uint8_t res;63uint8_t seq[6];64} longseq;65} d_seqno;66} __packed;6768#define d_seqno_short d_seqno.shortseq;69#define d_seqno_long d_seqno.longseq.seq;7071#define DCCP_SHORTHDR 1272#define DCCP_LONGHDR 1673#define DCCP_EXTHDR 0x807475#endif /* _NETINET_DCCP_H */767778