36 lines
846 B
C
36 lines
846 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_DCCP_H
|
|
#define _LINUX_DCCP_H
|
|
|
|
#include <uapi/linux/dccp.h>
|
|
|
|
static inline struct dccp_hdr_ext *dccp_hdrx(const struct dccp_hdr *dh)
|
|
{
|
|
return (struct dccp_hdr_ext *)((unsigned char *)dh + sizeof(*dh));
|
|
}
|
|
|
|
static inline unsigned int __dccp_basic_hdr_len(const struct dccp_hdr *dh)
|
|
{
|
|
return sizeof(*dh) + (dh->dccph_x ? sizeof(struct dccp_hdr_ext) : 0);
|
|
}
|
|
|
|
static inline __u64 dccp_hdr_seq(const struct dccp_hdr *dh)
|
|
{
|
|
__u64 seq_nr = ntohs(dh->dccph_seq);
|
|
|
|
if (dh->dccph_x != 0)
|
|
seq_nr = (seq_nr << 32) + ntohl(dccp_hdrx(dh)->dccph_seq_low);
|
|
else
|
|
seq_nr += (u32)dh->dccph_seq2 << 16;
|
|
|
|
return seq_nr;
|
|
}
|
|
|
|
static inline unsigned int __dccp_hdr_len(const struct dccp_hdr *dh)
|
|
{
|
|
return __dccp_basic_hdr_len(dh) +
|
|
dccp_packet_hdr_len(dh->dccph_type);
|
|
}
|
|
|
|
#endif /* _LINUX_DCCP_H */
|