Text   |  XML   |  ReML   |   Visible Warnings:

Ignored Return Value  at wimax_utils.c:1934

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

wimax_convengence_service_parameter_encoding_rules_decoder

(/home/sate/Testcases/c/cve/wireshark-1.2.0/plugins/wimax/wimax_utils.c)expand/collapse
Show more  
 1789  void wimax_convengence_service_parameter_encoding_rules_decoder(guint sfe_type, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 1790  {
 1791          guint offset, tlv_offset;
 1792          guint tvb_len, tlv_len, length;
 1793          gint  tlv_type;
 1794          proto_item *csper_item = NULL;
 1795          proto_tree *csper_tree = NULL;
 1796          proto_tree *tlv_tree = NULL;
 1797          proto_tree *ti_tree = NULL;
 1798          tlv_info_t tlv_info;
 1799          gboolean ipv6 = ((sfe_type == SFE_CSPER_PACKET_IPV6) || (sfe_type == SFE_CSPER_PACKET_IPV6_802_3) || (sfe_type == SFE_CSPER_PACKET_IPV6_802_1Q));
 1800   
 1801          /* sanity check */
 1802          if((sfe_type < SFE_CSPER_ATM) || (sfe_type > SFE_CSPER_PACKET_IP_802_3_ECRTP_COMPRESSION))
 1803                  return; /* invalid CS Parameter Encodings */
 1804   
 1805          /* get the tvb reported length */
 1806          tvb_len = tvb_reported_length(tvb);
 1807          offset = 0;
 1808          /* display SFE information */
 1809          csper_item = proto_tree_add_protocol_format(tree, proto_wimax_utility_decoders, tvb, offset, tvb_len, "Convergence Service Parameter Encoding Rules (%u bytes)", tvb_len);
 1810          /* add CS Parameter Encoding Rules subtree */
 1811          csper_tree = proto_item_add_subtree(csper_item, ett_wimax_cst_encoding_rules);
 1812          /* do nothing if the TLV fields is not exist */
 1813          if(!tvb_len)
 1814                  return;
 1815          /* report error if the packet size is less than 2 bytes (type+length) */
 1816          if(tvb_len < 2)
 1817          {       /* invalid tlv info */
 1818                  if(check_col(pinfo->cinfo, COL_INFO))
 1819                  {
 1820                          col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "Invalid Convergence Service Parameter Encoding Rules");
 1821                  }
 1822                  return;
 1823          }
 1824          /* process WiMax Service Flow Encodings */
 1825          while(offset < tvb_len)
 1826          {       /* get the TLV information */
 1827                  init_tlv_info(&tlv_info, tvb, offset);
 1828                  /* get the TLV type */
 1829                  tlv_type = get_tlv_type(&tlv_info);
 1830                  /* get the TLV length */
 1831                  tlv_len = get_tlv_length(&tlv_info);
 1832                  if(tlv_type == -1 || tlv_len > MAX_TLV_LEN || tlv_len < 1)
 1833                  {       /* invalid tlv info */
 1834                          if(check_col(pinfo->cinfo, COL_INFO))
 1835                          {
 1836                                  col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "CSPER TLV error");
 1837                          }
 1838                          proto_tree_add_item(csper_tree, hf_cst_invalid_tlv, tvb, offset, (tvb_len - offset), FALSE);
 1839                          break;
 1840                  }
 1841  #ifdef DEBUG /* for debug only */
 1842                  proto_tree_add_protocol_format(csper_tree, proto_wimax_utility_decoders, tvb, offset, (tlv_len+2+get_tlv_size_of_length(&tlv_info)), "CSPER TLV Type: %u (%u bytes, offset=%u, tvb_len=%u)", tlv_type, tlv_len, offset, tvb_len);
 1843  #endif
 1844                  /* update the offset */
 1845                  offset += get_tlv_value_offset(&tlv_info);
 1846                  /* parse the CS parameter Encoding Rule TLV */
 1847                  if(sfe_type == SFE_CSPER_ATM)
 1848                  {       /* ATM CS Encodings */
 1849                          switch (tlv_type)
 1850                          {
 1851                                  case CST_ATM_SWITCHING:
 1852                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_csper_atm_switching_encoding, tvb, offset, tlv_len, FALSE);
 1853                                          proto_tree_add_item(tlv_tree, hf_csper_atm_switching_encoding, tvb, offset, tlv_len, FALSE);
 1854                                  break;
 1855                                  case CST_ATM_CLASSIFIER:
 1856                                          /* add TLV subtree */
 1857                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_csper_atm_classifier, tvb, offset, tlv_len, FALSE);
 1858                                          tlv_offset = offset;
 1859                                          while(tlv_offset < (tlv_len + offset))
 1860                                          {
 1861                                                  /* get the TLV information */
 1862                                                  init_tlv_info(&tlv_info, tvb, tlv_offset);
 1863                                                  /* get the TLV type */
 1864                                                  tlv_type = get_tlv_type(&tlv_info);
 1865                                                  /* get the TLV length */
 1866                                                  length = get_tlv_length(&tlv_info);
 1867                                                  if(tlv_type == -1 || length > MAX_TLV_LEN || length < 1)
 1868                                                  {       /* invalid tlv info */
 1869                                                          if(check_col(pinfo->cinfo, COL_INFO))
 1870                                                          {
 1871                                                                  col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "ATM Classifier TLV error");
 1872                                                          }
 1873                                                          proto_tree_add_item(tlv_tree, hf_cst_invalid_tlv, tvb, offset, (tlv_len - tlv_offset), FALSE);
 1874                                                          break;
 1875                                                  }
 1876  #ifdef DEBUG /* for debug only */
 1877                                                  proto_tree_add_protocol_format(csper_tree, proto_wimax_utility_decoders, tvb, offset, (tlv_len+2+get_tlv_size_of_length(&tlv_info)), "ATM Classifier TLV Type: %u (%u bytes, offset=%u, tlv_len=%u)", tlv_type, length, offset, tlv_len);
 1878  #endif
 1879                                                  /* update the offset */
 1880                                                  tlv_offset += get_tlv_value_offset(&tlv_info);
 1881                                                  switch (tlv_type)
 1882                                                  {
 1883                                                          case ATM_VPI_CLASSIFIER:
 1884                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_csper_atm_classifier_vpi, tvb, tlv_offset, length, FALSE);
 1885                                                                  proto_tree_add_item(ti_tree, hf_csper_atm_classifier_vpi, tvb, tlv_offset, length, FALSE);
 1886                                                          break;
 1887                                                          case ATM_VCI_CLASSIFIER:
 1888                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_csper_atm_classifier_vci, tvb, tlv_offset, length, FALSE);
 1889                                                                  proto_tree_add_item(ti_tree, hf_csper_atm_classifier_vci, tvb, tlv_offset, length, FALSE);
 1890                                                          break;
 1891                                                          case ATM_CLASSIFIER_ID:
 1892                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_csper_atm_classifier_id, tvb, tlv_offset, length, FALSE);
 1893                                                                  proto_tree_add_item(ti_tree, hf_csper_atm_classifier_id, tvb, tlv_offset, length, FALSE);
 1894                                                          break;
 1895                                                          default:
 1896                                                          break;
 1897                                                  }
 1898                                                  tlv_offset += length;
 1899                                          }       /* end of while loop */
 1900                                  break;
 1901                                  case CST_ATM_CLASSIFIER_DSC_ACTION:
 1902                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_cst_classifier_dsc_action, tvb, offset, tlv_len, FALSE);
 1903                                          proto_tree_add_item(tlv_tree, hf_cst_classifier_dsc_action, tvb, offset, tlv_len, FALSE);
 1904                                  break;
 1905                                  case CST_ATM_CLASSIFIER_ERROR_PARAMETER_SET:
 1906                                          /* call the error parameter set function */
 1907                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, proto_wimax_utility_decoders, tvb, offset, tlv_len, "Classifier Error Parameter Set (%u byte(s))", tlv_len);
 1908                                          wimax_error_parameter_set_decoder(tvb_new_subset(tvb, offset, tlv_len, tlv_len), pinfo, tlv_tree);
 1909                                  break;
 1910                                  default:
 1911                                          /* display the unknown ATM CS encoding in hex */
 1912                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_csper_unknown_type, tvb, offset, tlv_len, FALSE);
 1913                                          proto_tree_add_item(tlv_tree, hf_csper_unknown_type, tvb, offset, tlv_len, FALSE);
 1914                                  break;
 1915                          }
 1916                  }
 1917                  else 
 1918                  {
 1919                          switch (tlv_type)
 1920                          {
 1921                                  case CST_CLASSIFIER_ACTION:
 1922                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_cst_classifier_dsc_action, tvb, offset, tlv_len, FALSE);
 1923                                          proto_tree_add_item(tlv_tree, hf_cst_classifier_dsc_action, tvb, offset, tlv_len, FALSE);
 1924                                  break;
 1925                                  case CST_CLASSIFIER_ERROR_PARAM_SET:
 1926                                  case CST_PHS_ERROR_PARAM_SET:
 1927                                          tlv_tree = add_protocol_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, proto_wimax_utility_decoders, tvb, offset, tlv_len, "Classifier Error Parameter Set (%u byte(s))", tlv_len);
 1928                                          /* call the error parameter set function */
 1929                                          wimax_error_parameter_set_decoder(tvb_new_subset(tvb, offset, tlv_len, tlv_len), pinfo, tlv_tree);
 1930                                  break;
 1931                                  case CST_PACKET_CLASSIFICATION_RULE:
 1932                                  {
 1933                                          /* add TLV subtree */
 1934                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_cst_pkt_class_rule, tvb, offset, tlv_len, FALSE);
 1935                                          tlv_offset = offset;
 1936                                          while(tlv_offset < (tlv_len + offset))
 1937                                          {
 1938                                                  /* get the TLV information */
 1939                                                  init_tlv_info(&tlv_info, tvb, tlv_offset);
 1940                                                  /* get the TLV type */
 1941                                                  tlv_type = get_tlv_type(&tlv_info);
 1942                                                  /* get the TLV length */
 1943                                                  length = get_tlv_length(&tlv_info);
 1944                                                  if(tlv_type == -1 || length > MAX_TLV_LEN || length < 1)
 1945                                                  {       /* invalid tlv info */
 1946                                                          if(check_col(pinfo->cinfo, COL_INFO))
 1947                                                          {
 1948                                                                  col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "Packet Classification Rule TLV error");
 1949                                                          }
 1950                                                          proto_tree_add_item(tlv_tree, hf_cst_invalid_tlv, tvb, offset, (tlv_len - tlv_offset), FALSE);
 1951                                                          break;
 1952                                                  }
 1953  #ifdef DEBUG /* for debug only */
 1954                                                  proto_tree_add_protocol_format(csper_tree, proto_wimax_utility_decoders, tvb, tlv_offset, (length + get_tlv_value_offset(&tlv_info)), "Packet Classification Rule TLV Type: %u (%u bytes, offset=%u, tlv_len=%u)", tlv_type, length, tlv_offset, tlv_len);
 1955  #endif
 1956                                                  /* update the offset */
 1957                                                  tlv_offset += get_tlv_value_offset(&tlv_info);
 1958                                                  switch (tlv_type)
 1959                                                  {
 1960                                                          case CST_PKT_CLASS_RULE_PRIORITY:
 1961                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_priority, tvb, tlv_offset, length, FALSE);
 1962                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_priority, tvb, tlv_offset, length, FALSE);
 1963                                                          break;
 1964                                                          case CST_PKT_CLASS_RULE_RANGE_MASK:
 1965                                                                  /* add TLV subtree */
 1966                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_range_mask, tvb, tlv_offset, length, FALSE);
 1967                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_tos_low, tvb,
 1968                                                                  tlv_offset, 1, FALSE);
 1969                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_tos_high, tvb,
 1970                                                                  tlv_offset + 1, 1, FALSE);
 1971                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_tos_mask, tvb,
 1972                                                                  tlv_offset + 2, 1, FALSE);
 1973                                                          break;
 1974                                                          case CST_PKT_CLASS_RULE_PROTOCOL:
 1975                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_protocol, tvb, tlv_offset, length, FALSE);
 1976                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_protocol, tvb, tlv_offset, length, FALSE);
 1977                                                          break;
 1978                                                          case CST_PKT_CLASS_RULE_SRC_IP:
 1979                                                                  /* add TLV subtree */
 1980                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_ip_masked_src_address, tvb, tlv_offset, length, FALSE);
 1981                                                                  if(ipv6)
 1982                                                                  {
 1983                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_src_ipv6, tvb, tlv_offset, 16, FALSE);
 1984                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_ipv6, tvb, tlv_offset + 16, 16, FALSE);
 1985                                                                  }
 1986                                                                  else 
 1987                                                                  {
 1988                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_src_ipv4, tvb, tlv_offset, 4, FALSE);
 1989                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_ipv4, tvb, tlv_offset + 4, 4, FALSE);
 1990                                                                  }
 1991                                                          break;
 1992                                                          case CST_PKT_CLASS_RULE_DST_IP:
 1993                                                                  /* add TLV subtree */
 1994                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_ip_masked_dest_address, tvb, tlv_offset, length, FALSE);
 1995                                                                  if(ipv6)
 1996                                                                  {
 1997                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_dest_ipv6, tvb, tlv_offset, 16, FALSE);
 1998                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_ipv6, tvb, tlv_offset + 16, 16, FALSE);
 1999                                                                  }
 2000                                                                  else 
 2001                                                                  {
 2002                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_dest_ipv4, tvb, tlv_offset, 4, FALSE);
 2003                                                                          proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_ipv4, tvb, tlv_offset + 4, 4, FALSE);
 2004                                                                  }
 2005                                                          break;
 2006                                                          case CST_PKT_CLASS_RULE_SRCPORT_RANGE:
 2007                                                                  /* add TLV subtree */
 2008                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_prot_src_port_range, tvb, tlv_offset, length, FALSE);
 2009                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_src_port_low, tvb, tlv_offset, 2, FALSE);
 2010                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_src_port_high, tvb, tlv_offset + 2, 2, FALSE);
 2011                                                          break;
 2012                                                          case CST_PKT_CLASS_RULE_DSTPORT_RANGE:
 2013                                                                  /* add TLV subtree */
 2014                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_prot_dest_port_range, tvb, tlv_offset, length, FALSE);
 2015                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_dest_port_low, tvb, tlv_offset, 2, FALSE);
 2016                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_dest_port_high, tvb, tlv_offset + 2, 2, FALSE);
 2017                                                          break;
 2018                                                          case CST_PKT_CLASS_RULE_DST_MAC:
 2019                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_dest_mac_address, tvb, tlv_offset, length, FALSE);
 2020                                                                  /* add TLV subtree */
 2021                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_dest_mac, tvb, tlv_offset, 6, FALSE);
 2022                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_mac, tvb, tlv_offset + 6, 6, FALSE);
 2023                                                          break;
 2024                                                          case CST_PKT_CLASS_RULE_SRC_MAC:
 2025                                                                  /* add TLV subtree */
 2026                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_src_mac_address, tvb, tlv_offset, length, FALSE);
 2027                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_src_mac, tvb, tlv_offset, 6, FALSE);
 2028                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_mask_mac, tvb, tlv_offset + 6, 6, FALSE);
 2029                                                          break;
 2030                                                          case CST_PKT_CLASS_RULE_ETHERTYPE:
 2031                                                                  /* add TLV subtree */
 2032                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_ethertype, tvb, tlv_offset, length, FALSE);
 2033                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_etype, tvb, tlv_offset, 1, FALSE);
 2034                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_eprot1, tvb, tlv_offset + 1, 1, FALSE);
 2035                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_eprot2, tvb, tlv_offset + 2, 1, FALSE);
 2036                                                          break;
 2037                                                          case CST_PKT_CLASS_RULE_USER_PRIORITY:
 2038                                                                  /* add TLV subtree */
 2039                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_user_priority, tvb, tlv_offset, length, FALSE);
 2040                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_pri_low, tvb, tlv_offset, 1, FALSE);
 2041                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_pri_high, tvb, tlv_offset + 1, 1, FALSE);
 2042                                                          break;
 2043                                                          case CST_PKT_CLASS_RULE_VLAN_ID:
 2044                                                                  /* add TLV subtree */
 2045                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_vlan_id, tvb, tlv_offset, length, FALSE);
 2046                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_vlan_id1, tvb, tlv_offset, 1, FALSE);
 2047                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_vlan_id2, tvb, tlv_offset + 1, 1, FALSE);
 2048                                                          break;
 2049                                                          case CST_PKT_CLASS_RULE_PHSI:
 2050                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_phsi, tvb, tlv_offset, length, FALSE);
 2051                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_phsi, tvb, tlv_offset, length, FALSE);
 2052                                                          break;
 2053                                                          case CST_PKT_CLASS_RULE_INDEX:
 2054                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_index, tvb, tlv_offset, length, FALSE);
 2055                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_index, tvb, tlv_offset, length, FALSE);
 2056                                                          break;
 2057                                                          case CST_PKT_CLASS_RULE_IPv6_FLOW_LABEL:
 2058  /*???                                                           if(ipv6)*/
 2059                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_ipv6_flow_label, tvb, tlv_offset, length, FALSE);
 2060                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_ipv6_flow_label, tvb, tlv_offset, length, FALSE);
 2061                                                          break;
 2062                                                          case CST_PKT_CLASS_RULE_VENDOR_SPEC:
 2063                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_vendor_spec, tvb, tlv_offset, length, FALSE);
 2064                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_vendor_spec, tvb, tlv_offset, length, FALSE);
 2065                                                          break;
 2066                                                          case CST_CLASSIFIER_ACTION_RULE:
 2067                                                                  /* add TLV subtree */
 2068                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_pkt_class_rule_classifier_action_rule, tvb, tlv_offset, length, FALSE);
 2069                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_classifier_action_rule_bit0, tvb, tlv_offset, 1, FALSE);
 2070                                                                  proto_tree_add_item(ti_tree, hf_cst_pkt_class_rule_classifier_action_rule_bit1, tvb, tlv_offset, 1, FALSE);
 2071                                                          break;
 2072                                                          case CST_PKT_CLASS_RULE_LARGE_CONTEXT_ID:
 2073                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_large_context_id, tvb, tlv_offset, length, FALSE);
 2074                                                                  proto_tree_add_item(ti_tree, hf_cst_large_context_id, tvb, tlv_offset, length, FALSE);
 2075                                                          break;
 2076                                                          case CST_PKT_CLASS_RULE_SHORT_FORMAT_CONTEXT_ID:
 2077                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_short_format_context_id, tvb, tlv_offset, length, FALSE);
 2078                                                                  proto_tree_add_item(ti_tree, hf_cst_short_format_context_id, tvb, tlv_offset, length, FALSE);
 2079                                                          break;
 2080                                                          default:
 2081                                                          break;
 2082                                                  }       /* end of switch */
 2083                                                  tlv_offset += length;
 2084                                          }       /* end of while loop */
 2085                                          break;
 2086                                  }
 2087                                  case CST_PHS_DSC_ACTION:
 2088                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_cst_phs_dsc_action, tvb, offset, tlv_len, FALSE);
 2089                                          proto_tree_add_item(tlv_tree, hf_cst_phs_dsc_action, tvb, offset, tlv_len, FALSE);
 2090                                  break;
 2091                                  case CST_PHS_RULE:
 2092                                  {
 2093                                          /* add TLV subtree */
 2094                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, csper_tree, hf_cst_phs_rule, tvb, offset, tlv_len, FALSE);
 2095                                          tlv_offset = offset;
 2096                                          while(tlv_offset < (tlv_len + offset))
 2097                                          {
 2098                                                  /* get the TLV information */
 2099                                                  init_tlv_info(&tlv_info, tvb, tlv_offset);
 2100                                                  /* get the TLV type */
 2101                                                  tlv_type = get_tlv_type(&tlv_info);
 2102                                                  /* get the TLV length */
 2103                                                  length = get_tlv_length(&tlv_info);
 2104                                                  if(tlv_type == -1 || length > MAX_TLV_LEN || length < 1)
 2105                                                  {       /* invalid tlv info */
 2106                                                          if(check_col(pinfo->cinfo, COL_INFO))
 2107                                                          {
 2108                                                                  col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "PHS n Rule TLV error");
 2109                                                          }
 2110                                                          proto_tree_add_item(tlv_tree, hf_cst_invalid_tlv, tvb, offset, (tlv_len - tlv_offset), FALSE);
 2111                                                          break;
 2112                                                  }
 2113  #ifdef DEBUG /* for debug only */
 2114                                                  proto_tree_add_protocol_format(csper_tree, proto_wimax_utility_decoders, tvb, offset, (tlv_len+2+get_tlv_size_of_length(&tlv_info)), "PHS Rule TLV Type: %u (%u bytes, offset=%u, tlv_len=%u)", tlv_type, length, offset, tlv_len);
 2115  #endif
 2116                                                  /* update the offset */
 2117                                                  tlv_offset += get_tlv_value_offset(&tlv_info);
 2118                                                  switch (tlv_type)
 2119                                                  {
 2120                                                          case CST_PHS_PHSI:
 2121                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_phsi, tvb, tlv_offset, length, FALSE);
 2122                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_phsi, tvb, tlv_offset, length, FALSE);
 2123                                                          break;
 2124                                                          case CST_PHS_PHSF:
 2125                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_phsf, tvb, tlv_offset, length, FALSE);
 2126                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_phsf, tvb, tlv_offset, length, FALSE);
 2127                                                          break;
 2128                                                          case CST_PHS_PHSM:
 2129                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_phsm, tvb, tlv_offset, length, FALSE);
 2130                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_phsm, tvb, tlv_offset, length, FALSE);
 2131                                                          break;
 2132                                                          case CST_PHS_PHSS:
 2133                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_phss, tvb, tlv_offset, length, FALSE);
 2134                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_phss, tvb, tlv_offset, length, FALSE);
 2135                                                          break;
 2136                                                          case CST_PHS_PHSV:
 2137                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_phsv, tvb, tlv_offset, length, FALSE);
 2138                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_phsv, tvb, tlv_offset, length, FALSE);
 2139                                                          break;
 2140                                                          case CST_PHS_VENDOR_SPEC:
 2141                                                                  ti_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tlv_tree, hf_cst_phs_vendor_spec, tvb, tlv_offset, length, FALSE);
 2142                                                                  proto_tree_add_item(ti_tree, hf_cst_phs_vendor_spec, tvb, tlv_offset, length, FALSE);
 2143                                                          break;
 2144                                                  }
 2145                                                  tlv_offset += length;
 2146                                          }
 2147                                          break;
 2148                                  }
 2149                                  default:
 2150                                          /* display the unknown csper type in hex */
 2151                                          tlv_tree = add_tlv_subtree(&tlv_info, ett_wimax_cst_encoding_rules, tree, hf_csper_unknown_type, tvb, offset, tlv_len, FALSE);
 2152                                          proto_tree_add_item(tlv_tree, hf_csper_unknown_type, tvb, offset, tlv_len, FALSE);
 2153                                  break;
 2154                          }       /* end of switch */
 2155                  }       /* end of if */
 2156                  offset += tlv_len;
 2157          }       /* end of while loop */
 2158  }
Show more  




Change Warning 5493.35762 : Ignored Return Value

Priority:
State:
Finding:
Owner:
Note: