Commit 5bbf2437 authored by Yann Garcia's avatar Yann Garcia
Browse files

Add skeleton for Diameter codec; Add install.sh script for titanization

parent 7fa2d145
Loading
Loading
Loading
Loading
+20 −7
Original line number Original line Diff line number Diff line
@@ -3,6 +3,8 @@


#include "loggers.hh"
#include "loggers.hh"


#include "diameter_uar_codec.hh"

namespace LibDiameter__EncdecDeclarations {
namespace LibDiameter__EncdecDeclarations {


  BITSTRING fx__enc__CER__MSG(const LibDiameter__TypesAndValues::CER__MSG& p) {
  BITSTRING fx__enc__CER__MSG(const LibDiameter__TypesAndValues::CER__MSG& p) {
@@ -230,26 +232,37 @@ namespace LibDiameter__EncdecDeclarations {
  INTEGER fx__dec__DPA__MSG(BITSTRING&, LibDiameter__TypesAndValues::DPA__MSG& p) { return INTEGER(0); }
  INTEGER fx__dec__DPA__MSG(BITSTRING&, LibDiameter__TypesAndValues::DPA__MSG& p) { return INTEGER(0); }


  BITSTRING fx__enc__UAR__MSG(const LibDiameter__TypesAndValues::UAR__MSG& p) {
  BITSTRING fx__enc__UAR__MSG(const LibDiameter__TypesAndValues::UAR__MSG& p) {
    loggers::get_instance().log_msg(">>>   BITSTRING fx__enc__Request: ", p);
    loggers::get_instance().log_msg(">>> fx__enc__UAR__MSG: ", p);


    float duration;
    float duration;
    std::string tag("  BITSTRING fx__enc__Request");
    std::string tag("fx__enc__UAR__MSG");
    loggers::get_instance().set_start_time(tag);
    loggers::get_instance().set_start_time(tag);


    OCTETSTRING os;
    OCTETSTRING os;
    // TODO
    diameter_uar_codec codec;
    if (codec.encode(p, os) == -1) {
      loggers::get_instance().warning("fx__enc__UAR__MSG: -1 result code was returned");
      return int2bit(0, 1);
    }
    loggers::get_instance().set_stop_time(tag, duration);
    loggers::get_instance().set_stop_time(tag, duration);
    
    
    return oct2bit(os);
    return oct2bit(os);
  }
  }
  
  
  INTEGER fx__dec__UAR__MSG(BITSTRING&, LibDiameter__TypesAndValues::UAR__MSG& p) { return INTEGER(0); }
  INTEGER fx__dec__UAR__MSG(BITSTRING& pdu, LibDiameter__TypesAndValues::UAR__MSG& p) {

    OCTETSTRING os = bit2oct(pdu);
    diameter_uar_codec codec;
    codec.decode(os, p);

    return INTEGER(0);
 }


  BITSTRING fx__enc__UAA__MSG(const LibDiameter__TypesAndValues::UAA__MSG& p) {
  BITSTRING fx__enc__UAA__MSG(const LibDiameter__TypesAndValues::UAA__MSG& p) {
    loggers::get_instance().log_msg(">>>   BITSTRING fx__enc__Request: ", p);
    loggers::get_instance().log_msg(">>>   BITSTRING fx__enc__UAR__MSG: ", p);


    float duration;
    float duration;
    std::string tag("  BITSTRING fx__enc__Request");
    std::string tag("  BITSTRING fx__enc__UAR__MSG");
    loggers::get_instance().set_start_time(tag);
    loggers::get_instance().set_start_time(tag);


    OCTETSTRING os;
    OCTETSTRING os;
+80 −0
Original line number Original line Diff line number Diff line
@@ -5,3 +5,83 @@
#include "loggers.hh"
#include "loggers.hh"
#include "converter.hh"
#include "converter.hh"


avp::avp(const int p_code, const unsigned char p_vendor_specific, const unsigned char p_mandatory, const unsigned char p_protected_, const int p_length, const int p_vendor_id, const int p_encoded_length, const std::vector<unsigned char> p_payload) : _code(p_code), _vendor_specific(p_vendor_specific), _mandatory(p_mandatory), _protected_(p_protected_), _length(p_length), _vendor_id(p_vendor_id), _encoded_length(p_encoded_length), _payload(p_payload),   _avp_header(LibDiameter__Types__Base__AVPs::AVP__Header(p_code, LibDiameter__Types__Base__AVPs::AVP__Flags( int2bit(p_vendor_specific, 1), int2bit(p_mandatory, 1), int2bit(p_protected_, 1), int2bit(0, 5)), p_length, (p_vendor_specific == 0) ? OPTIONAL<INTEGER>(OPTIONAL_OMIT) : OPTIONAL<INTEGER>(p_vendor_id))), _enc_avp() {
  loggers::get_instance().log_msg("avp::avp (1): _avp_header:", _avp_header);
  loggers::get_instance().log_to_hexa("avp::avp (1): _payload:", _payload.data(), _payload.size());
} // End of ctor

avp::avp(const int p_code, const unsigned char p_vendor_specific, const unsigned char p_mandatory, const unsigned char p_protected_, const int p_length, const int p_vendor_id, const int p_encoded_length, const std::vector<unsigned char> p_payload, const OCTETSTRING& p_enc_avp) : _code(p_code), _vendor_specific(p_vendor_specific), _mandatory(p_mandatory), _protected_(p_protected_), _length(p_length), _vendor_id(p_vendor_id), _encoded_length(p_encoded_length), _payload(p_payload),   _avp_header(LibDiameter__Types__Base__AVPs::AVP__Header(p_code, LibDiameter__Types__Base__AVPs::AVP__Flags( int2bit(p_vendor_specific, 1), int2bit(p_mandatory, 1), int2bit(p_protected_, 1), int2bit(0, 5)), p_length, (p_vendor_specific == 0) ? OPTIONAL<INTEGER>(OPTIONAL_OMIT) : OPTIONAL<INTEGER>(p_vendor_id))), _enc_avp(p_enc_avp) {
  loggers::get_instance().log_msg("avp::avp (2): _avp_header:", _avp_header);
  loggers::get_instance().log_to_hexa("avp::avp (2): _payload:", _payload.data(), _payload.size());
  loggers::get_instance().log_msg("avp::avp (2): _enc_avp:", _enc_avp);
} // End of ctor

int avp::get_code() const {
  return _code;
}

int avp::decode_session_id(LibDiameter__Types__Base__AVPs::Session__Id__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_session_id: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_session_id: _payload:", _payload.data(), _payload.size());

  p_avp = LibDiameter__Types__Base__AVPs::Session__Id__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), CHARSTRING(converter::get_instance().bytes_to_string(_payload).c_str()));
  loggers::get_instance().log_msg("avp::decode_session_id: p_avp:", p_avp);

  return 0;
}

int avp::decode_auth_session_state(LibDiameter__Types__Base__AVPs::Auth__Session__State__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_auth_session_state: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_auth_session_state: _payload:", _payload.data(), _payload.size());

  // Sanity checks
  if (_payload.size() != 4) {
    loggers::get_instance().warning("avp::decode_auth_session_state: Wrong payload length: '%d'", _payload.size());
    return -1;
  }
  p_avp = LibDiameter__Types__Base__AVPs::Auth__Session__State__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), LibDiameter__Types__Base__AVPs::Auth__Session__State__Type(_payload[0] << 24 || _payload[1] << 16 || _payload[2] << 8 || _payload[3]));
  loggers::get_instance().log_msg("avp::decode_auth_session_state: p_avp:", p_avp);

  return 0;
}

int avp::decode_origin_host(LibDiameter__Types__Base__AVPs::Origin__Host__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_origin_host: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_origin_host: _payload:", _payload.data(), _payload.size());

  p_avp = LibDiameter__Types__Base__AVPs::Origin__Host__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), CHARSTRING(converter::get_instance().bytes_to_string(_payload).c_str()));
  loggers::get_instance().log_msg("avp::decode_origin_host: p_avp:", p_avp);

  return 0;
}

int avp::decode_origin_realm(LibDiameter__Types__Base__AVPs::Origin__Realm__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_origin_realm: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_origin_realm: _payload:", _payload.data(), _payload.size());

  p_avp = LibDiameter__Types__Base__AVPs::Origin__Realm__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), CHARSTRING(converter::get_instance().bytes_to_string(_payload).c_str()));
  loggers::get_instance().log_msg("avp::decode_origin_realm: p_avp:", p_avp);

  return 0;
}

int avp::decode_destination_host(LibDiameter__Types__Base__AVPs::Destination__Host__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_destination_host: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_destination_host: _payload:", _payload.data(), _payload.size());

  p_avp = LibDiameter__Types__Base__AVPs::Destination__Host__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), CHARSTRING(converter::get_instance().bytes_to_string(_payload).c_str()));
  loggers::get_instance().log_msg("avp::decode_destination_host: p_avp:", p_avp);

  return 0;
}

int avp::decode_destination_realm(LibDiameter__Types__Base__AVPs::Destination__Realm__AVP& p_avp) const {
  loggers::get_instance().log(">>> avp::decode_destination_realm: '%d'", _code);
  loggers::get_instance().log_to_hexa("avp::decode_destination_realm: _payload:", _payload.data(), _payload.size());

  p_avp = LibDiameter__Types__Base__AVPs::Destination__Realm__AVP(LibDiameter__Types__Base__AVPs::AVP__Header(_avp_header), CHARSTRING(converter::get_instance().bytes_to_string(_payload).c_str()));
  loggers::get_instance().log_msg("avp::decode_destination_realm: p_avp:", p_avp);

  return 0;
}
+31 −0
Original line number Original line Diff line number Diff line
#pragma once
#pragma once


#include <vector>
#include <memory>


#include "LibDiameter_TypesAndValues.hh"

class avp {
class avp {
    const int _code;
    const unsigned char _vendor_specific;
    const unsigned char _mandatory;
    const unsigned char _protected_;
    const int _length;
    const int _vendor_id;
    const int _encoded_length;
    const std::vector<unsigned char> _payload;
    const OCTETSTRING _enc_avp;
    const LibDiameter__Types__Base__AVPs::AVP__Header _avp_header;
public:
  avp(const int p_code, const unsigned char p_vendor_specific, const unsigned char p_mandatory, const unsigned char p_protected_, const int p_length, const int p_vendor_id, const int p_encoded_length, const std::vector<unsigned char> p_payload);
  avp(const int p_code, const unsigned char p_vendor_specific, const unsigned char p_mandatory, const unsigned char p_protected_, const int p_length, const int p_vendor_id, const int p_encoded_length, const std::vector<unsigned char> p_payload, const OCTETSTRING& p_enc_avp);
  virtual ~avp() {};

  int get_code() const;

  int encode_auth_session_state(const LibDiameter__Types__Base__AVPs::Auth__Session__State__AVP& p_avp, std::unique_ptr<avp>& p_encoded_avp);

  int decode_session_id(LibDiameter__Types__Base__AVPs::Session__Id__AVP& p_avp) const;
  int decode_auth_session_state(LibDiameter__Types__Base__AVPs::Auth__Session__State__AVP& p_avp) const;
  int decode_origin_host(LibDiameter__Types__Base__AVPs::Origin__Host__AVP& p_avp) const;
  int decode_origin_realm(LibDiameter__Types__Base__AVPs::Origin__Realm__AVP& p_avp) const;
  int decode_destination_host(LibDiameter__Types__Base__AVPs::Destination__Host__AVP& p_avp) const;
  int decode_destination_realm(LibDiameter__Types__Base__AVPs::Destination__Realm__AVP& p_avp) const;


}; // End of class avp
}; // End of class avp
 No newline at end of file
+550 −23

File changed.

Preview size limit exceeded, changes collapsed.

+514 −15

File changed.

Preview size limit exceeded, changes collapsed.

Loading