text: /**
   * Copyright 2012 JDS Uniphase. All rights reserved.
   * GTPv2 Parameter extractor implementations
   */
  #ifndef XTREME_CPP_GTP_PARAM_EXTRACTOR_H_
  #define XTREME_CPP_GTP_PARAM_EXTRACTOR_H_
  
  #include "xtreme/cpp/param_extractor.h"
  
  namespace xtreme {
  
  namespace cpp {
  
  class GtpParamExtractor : public ParamExtractor {
   public:
    GtpParamExtractor();
    virtual ~GtpParamExtractor();
  
   private:
  #define GTP_FIELDS                          \
    ((IMSI, "IMSI"))                          \
    ((IMEI, "IMEI"))                          \
    ((IMEISV, "IMEISV"))                      \
    ((MSISDN, "MSISDN"))                      \
    ((RAT, "RAT Type"))                       \
    ((MCC, "MCC"))                            \
    ((MNC, "MNC"))                            \
    ((LAC, "Location Area Code (LAC)"))       \
    ((LAC_V1, "Location Area Code"))       \
    ((RAC, "Routing Area Code (RAC)"))        \
    ((RAC_V1, "Routing Area Code"))        \
    ((SAC, "Service Area Code (SAC)"))        \
    ((TAC, "Tracking Area Code (TAC)"))       \
    ((CI, "Cell Identity (CI)"))              \
    ((ECI, "E-UTRAN Cell Identifier (ECI)"))  \
    ((APN, "APN Value"))                      \
    ((PAA, "PDN Address Allocation"))         \
    ((EUAI, "END User Address Id"))          \
    ((PDN_TYPE, "PDN Type"))                  \
    ((PDP_TYPE, "PDP Type Number values"))          \
    ((PDP_IPV4_ADDRESS, "PDP IPv4 Address"))         \
    ((IPV4_ADDRESS, "IPv4 Address"))          \
    ((IPV6_ADDRESS, "IPv6 Address"))
  
    DECLARE_FIELD_ENUMS(GTP_FIELDS);
  
   public:
    DECLARE_EXTRACTORS
  };
  
  }  // namespace cpp
  
  }  // namespace xtreme
  
  #endif  // XTREME_CPP_GTP_PARAM_EXTRACTOR_H_
  