+ break;
+
+ case LMP_OBJ_SERVICE_CONFIG:
+ switch (lmp_obj_ctype) {
+ case LMP_CTYPE_SERVICE_CONFIG_SP:
+ if (obj_tlen != 4) {
+ ND_PRINT((ndo, " (not correct for object)"));
+ break;
+ }
+ ND_PRINT((ndo, "\n\t Flags: %s",
+ bittok2str(lmp_obj_service_config_sp_flag_values,
+ "none",
+ EXTRACT_U_1(obj_tptr))));
+
+ ND_PRINT((ndo, "\n\t UNI Version: %u",
+ EXTRACT_U_1(obj_tptr + 1)));
+
+ break;
+
+ case LMP_CTYPE_SERVICE_CONFIG_CPSA:
+ if (obj_tlen != 16) {
+ ND_PRINT((ndo, " (not correct for object)"));
+ break;
+ }
+
+ link_type = EXTRACT_U_1(obj_tptr);
+
+ ND_PRINT((ndo, "\n\t Link Type: %s (%u)",
+ tok2str(lmp_sd_service_config_cpsa_link_type_values,
+ "Unknown", link_type),
+ link_type));
+
+ switch (link_type) {
+ case LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SDH:
+ ND_PRINT((ndo, "\n\t Signal Type: %s (%u)",
+ tok2str(lmp_sd_service_config_cpsa_signal_type_sdh_values,
+ "Unknown",
+ EXTRACT_U_1(obj_tptr + 1)),
+ EXTRACT_U_1(obj_tptr + 1)));
+ break;
+
+ case LMP_SD_SERVICE_CONFIG_CPSA_LINK_TYPE_SONET:
+ ND_PRINT((ndo, "\n\t Signal Type: %s (%u)",
+ tok2str(lmp_sd_service_config_cpsa_signal_type_sonet_values,
+ "Unknown",
+ EXTRACT_U_1(obj_tptr + 1)),
+ EXTRACT_U_1(obj_tptr + 1)));
+ break;
+ }
+
+ ND_PRINT((ndo, "\n\t Transparency: %s",
+ bittok2str(lmp_obj_service_config_cpsa_tp_flag_values,
+ "none",
+ EXTRACT_U_1(obj_tptr + 2))));
+
+ ND_PRINT((ndo, "\n\t Contiguous Concatenation Types: %s",
+ bittok2str(lmp_obj_service_config_cpsa_cct_flag_values,
+ "none",
+ EXTRACT_U_1(obj_tptr + 3))));
+
+ ND_PRINT((ndo, "\n\t Minimum NCC: %u",
+ EXTRACT_BE_U_2(obj_tptr + 4)));
+
+ ND_PRINT((ndo, "\n\t Maximum NCC: %u",
+ EXTRACT_BE_U_2(obj_tptr + 6)));
+
+ ND_PRINT((ndo, "\n\t Minimum NVC:%u",
+ EXTRACT_BE_U_2(obj_tptr + 8)));
+
+ ND_PRINT((ndo, "\n\t Maximum NVC:%u",
+ EXTRACT_BE_U_2(obj_tptr + 10)));
+
+ ND_PRINT((ndo, "\n\t Local Interface ID: %s (0x%08x)",
+ ipaddr_string(ndo, obj_tptr+12),
+ EXTRACT_BE_U_4(obj_tptr + 12)));
+
+ break;
+
+ case LMP_CTYPE_SERVICE_CONFIG_TRANSPARENCY_TCM:
+ if (obj_tlen != 8) {
+ ND_PRINT((ndo, " (not correct for object)"));
+ break;
+ }
+
+ ND_PRINT((ndo, "\n\t Transparency Flags: %s",
+ bittok2str(
+ lmp_obj_service_config_nsa_transparency_flag_values,
+ "none",
+ EXTRACT_BE_U_4(obj_tptr))));
+
+ ND_PRINT((ndo, "\n\t TCM Monitoring Flags: %s",
+ bittok2str(
+ lmp_obj_service_config_nsa_tcm_flag_values,
+ "none",
+ EXTRACT_U_1(obj_tptr + 7))));
+
+ break;
+
+ case LMP_CTYPE_SERVICE_CONFIG_NETWORK_DIVERSITY:
+ if (obj_tlen != 4) {
+ ND_PRINT((ndo, " (not correct for object)"));
+ break;
+ }
+
+ ND_PRINT((ndo, "\n\t Diversity: Flags: %s",
+ bittok2str(
+ lmp_obj_service_config_nsa_network_diversity_flag_values,
+ "none",
+ EXTRACT_U_1(obj_tptr + 3))));
+ break;
+
+ default:
+ hexdump = TRUE;
+ }
+
+ break;
+