1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.
  10  */
  11 
  12 /*
  13  * Copyright 2012 David Hoeppner.  All rights reserved.
  14  */
  15 
  16 #ifndef _NETINET_DCCP_H
  17 #define _NETINET_DCCP_H
  18 
  19 #ifdef  __cplusplus
  20 extern "C" {
  21 #endif
  22 
  23 /*
  24  * DCCP header
  25  */
  26 struct dccphdr {
  27         uint16_t        dh_sport;
  28         uint16_t        dh_dport;
  29         uint8_t         dh_offset;
  30 #ifdef _BIT_FIELDS_LTOH
  31         uint8_t         dh_cscov:4,
  32                         dh_ccval:4;
  33 #else
  34         uint8_t         dh_ccval:4,
  35                         dh_cscov:4;
  36 #endif
  37         uint16_t        dh_sum;
  38 #ifdef _BIT_FIELDS_LTOH
  39         uint8_t         dh_x:1,
  40                         dh_type:4,
  41                         dh_reserved:3;
  42 #else
  43         uint8_t         dh_reserved:3,
  44                         dh_type:4,
  45                         dh_x:1;
  46 #endif
  47         uint8_t         dh_res_seq;
  48         uint16_t        dh_seq;
  49 };
  50 
  51 #define DCCPOPT_PADDING                 0
  52 #define DCCPOPT_MANDATORY               1
  53 #define DCCPOPT_SLOW_RECEIVER           2
  54 #define DCCPOPT_CHANGE_L                32
  55 #define DCCPOPT_CONFIRM_L               33
  56 #define DCCPOPT_CHANGE_R                34
  57 #define DCCPOPT_CONFIRM_R               35
  58 #define DCCPOPT_INIT_COOKIE             36
  59 #define DCCPOPT_NDP_COUNT               37
  60 #define DCCPOPT_ACK_VECTOR_1            38
  61 #define DCCPOPT_ACK_VECTOR_2            39
  62 #define DCCPOPT_DATA_DROPPED            40
  63 #define DCCPOPT_TIMESTAMP               41
  64 #define DCCPOPT_TIMESTAMP_ECHO          42
  65 #define DCCPOPT_ELAPSED_TIME            43
  66 #define DCCPOPT_DATA_CHECKSUM           44
  67 
  68 /*
  69  * Options for use with getsockopt and setsockopt.
  70  */
  71 
  72 #define DCCP_KEEPALIVE                  0x08
  73 #define DCCP_NOTIFY_THRESHOLD           0x10
  74 #define DCCP_ABORT_THRESHOLD            0x11
  75 #define DCCP_CONN_NOTIFY_THRESHOLD      0x12
  76 #define DCCP_CONN_ABORT_THRESHOLD       0x13
  77 
  78 #define DCCP_KEEPALIVE_THRESHOLD        0x16
  79 #define DCCP_KEEPALIVE_ABORT_THRESHOLD  0x17
  80 
  81 #define DCCP_KEEPIDLE                   0x22
  82 #define DCCP_KEEPCNT                    0x23
  83 #define DCCP_KEEPINTVL                  0x24
  84 
  85 #ifdef  __cplusplus
  86 }
  87 #endif
  88 
  89 #endif  /* _NETINET_DCCP_H */