+ ND_PRINT((ndo, "%s optlen goes past header length",
+ tok2str(dccp_option_values, "Option %u", EXTRACT_U_1(option))));
+ return 0;
+ }
+ ND_TCHECK_LEN(option, optlen);
+
+ if (EXTRACT_U_1(option) >= 128) {
+ ND_PRINT((ndo, "CCID option %d", EXTRACT_U_1(option)));
+ switch (optlen) {
+ case 4:
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_2(option + 2)));
+ break;
+ case 6:
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_4(option + 2)));
+ break;
+ default:
+ break;
+ }
+ } else {
+ ND_PRINT((ndo, "%s", tok2str(dccp_option_values, "Option %u", EXTRACT_U_1(option))));
+ switch (EXTRACT_U_1(option)) {
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ if (optlen < 3) {
+ ND_PRINT((ndo, " optlen too short"));
+ return optlen;
+ }
+ if (EXTRACT_U_1(option + 2) < 10){
+ ND_PRINT((ndo, " %s", dccp_feature_nums[EXTRACT_U_1(option + 2)]));
+ for (i = 0; i < optlen - 3; i++)
+ ND_PRINT((ndo, " %d", EXTRACT_U_1(option + 3 + i)));
+ }
+ break;
+ case 36:
+ if (optlen > 2) {
+ ND_PRINT((ndo, " 0x"));
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, "%02x", EXTRACT_U_1(option + 2 + i)));
+ }
+ break;
+ case 37:
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, " %d", EXTRACT_U_1(option + 2 + i)));
+ break;
+ case 38:
+ if (optlen > 2) {
+ ND_PRINT((ndo, " 0x"));
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, "%02x", EXTRACT_U_1(option + 2 + i)));
+ }
+ break;
+ case 39:
+ if (optlen > 2) {
+ ND_PRINT((ndo, " 0x"));
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, "%02x", EXTRACT_U_1(option + 2 + i)));
+ }
+ break;
+ case 40:
+ if (optlen > 2) {
+ ND_PRINT((ndo, " 0x"));
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, "%02x", EXTRACT_U_1(option + 2 + i)));
+ }
+ break;
+ case 41:
+ if (optlen == 4)
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_4(option + 2)));
+ else
+ ND_PRINT((ndo, " optlen != 4"));
+ break;
+ case 42:
+ if (optlen == 4)
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_4(option + 2)));
+ else
+ ND_PRINT((ndo, " optlen != 4"));
+ break;
+ case 43:
+ if (optlen == 6)
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_4(option + 2)));
+ else if (optlen == 4)
+ ND_PRINT((ndo, " %u", EXTRACT_BE_U_2(option + 2)));
+ else
+ ND_PRINT((ndo, " optlen != 4 or 6"));
+ break;
+ case 44:
+ if (optlen > 2) {
+ ND_PRINT((ndo, " "));
+ for (i = 0; i < optlen - 2; i++)
+ ND_PRINT((ndo, "%02x", EXTRACT_U_1(option + 2 + i)));