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 #include <sys/types.h> 17 #include <sys/stream.h> 18 #include <sys/debug.h> 19 #include <sys/cmn_err.h> 20 #include <inet/dccp_impl.h> 21 #include <inet/dccp_stack.h> 22 23 /* 24 * This file contains functions to parse and process DCCP features. 25 */ 26 27 /* 28 * Feature handling. 29 */ 30 void 31 dccp_parse_feature(dccp_t *dccp, uint8_t option, uint8_t length, uchar_t *up, 32 boolean_t mandatory) 33 { 34 dccp_feature_t *feature; 35 uint8_t feature_type; 36 uint8_t feature_length = length - 1; 37 38 cmn_err(CE_NOTE, "dccp_features.c: dccp_parse_feature"); 39 40 feature_type = *up; 41 42 switch (feature_type) { 43 case DCCP_FEATURE_CCID: 44 cmn_err(CE_NOTE, "DCCP_FEATURE_CCID"); 45 break; 46 case DCCP_FEATURE_ALLOW_SHORT_SEQNOS: 47 cmn_err(CE_NOTE, "DCCP_FEATURE_ALLOW_SHORT_SEQNOS"); 48 break; 49 case DCCP_FEATURE_SEQUENCE_WINDOW: 50 cmn_err(CE_NOTE, "DCCP_FEATURE_SEQUENCE_WINDOW"); 51 break; 52 case DCCP_FEATURE_ECN_INCAPABLE: 53 cmn_err(CE_NOTE, "DCCP_FEATURE_ECN_INCAPABLE"); 54 break; 55 case DCCP_FEATURE_ACK_RATIO: 56 cmn_err(CE_NOTE, "DCCP_FEATURE_ACK_RATIO"); 57 break; 58 case DCCP_FEATURE_SEND_ACK_VECTOR: 59 cmn_err(CE_NOTE, "DCCP_FEATURE_SEND_ACK_VECTOR"); 60 break; 61 case DCCP_FEATURE_SEND_NDP_COUNT: 62 cmn_err(CE_NOTE, "DCCP_FEATURE_SEND_NDP_COUNT"); 63 break; 64 case DCCP_FEATURE_MIN_CHECKSUM_COVERAGE: 65 cmn_err(CE_NOTE, "DCCP_FEATURE_MIN_CHECKSUM_COVERAGE"); 66 break; 67 case DCCP_FEATURE_CHECK_DATA_CHECKSUM: 68 cmn_err(CE_NOTE, "DCCP_FEATURE_CHECK_DATA_CHECKSUM"); 69 break; 70 71 default: 72 cmn_err(CE_NOTE, "ERROR DEFAULT"); 73 break; 74 } 75 76 cmn_err(CE_NOTE, "feature len: %d", feature_length); 77 78 feature = (dccp_feature_t *)kmem_alloc(sizeof (dccp_feature_t), 79 KM_SLEEP); 80 if (feature == NULL) { 81 return; 82 } 83 84 feature->df_option = option; 85 feature->df_type = feature_type; 86 feature->df_mandatory = mandatory; 87 88 list_insert_tail(&dccp->dccp_features, feature); 89 } 90 91 void 92 dccp_features_init(void) 93 { 94 } 95 96 void 97 dccp_features_destroy(void) 98 { 99 }