int
main( int argc, char *argv[] )
{
    bind_transceiver_resp_t a;
    bind_transceiver_resp_t b;
    tlv_t tlv;

    memset(&a, 0, sizeof(bind_transceiver_resp_t));
    memset(&b, 0, sizeof(bind_transceiver_resp_t));
    memset(&tlv, 0, sizeof(tlv));

    /* Init PDU ***********************************************************/
    b.command_length   = 0;
    b.command_id       = BIND_TRANSCEIVER_RESP;
    b.command_status   = ESME_ROK;
    b.sequence_number  = 1;
    snprintf((char*)b.system_id, sizeof(b.system_id), "%s", "system_id");

    tlv.tag = TLVID_sc_interface_version;
    tlv.length = sizeof(uint8_t);
    tlv.value.val16 = 0x34;
    build_tlv( &(b.tlv), &tlv );

    doTest(BIND_TRANSCEIVER_RESP, &a, &b);
    destroy_tlv( b.tlv );
    destroy_tlv( a.tlv );
    return( 0 );
};
Exemple #2
0
int
main( int argc, char *argv[] )
{

    deliver_sm_t a;
    deliver_sm_t b;
    tlv_t tlv;

    memset(&a, 0, sizeof(deliver_sm_t));
    memset(&b, 0, sizeof(deliver_sm_t));
    memset(&tlv, 0, sizeof(tlv_t));

    /* Init PDU ***********************************************************/
    b.command_length   = 0;
    b.command_id       = DELIVER_SM;
    b.command_status   = ESME_ROK;
    b.sequence_number  = 1;
    snprintf((char*)b.service_type, SERVICE_TYPE_LENGTH, "%s", "CMT");
    b.source_addr_ton  = 2;
    b.source_addr_npi  = 1;
    snprintf((char*)b.source_addr, ADDRESS_LENGTH, "%s", "0900001111");
    b.dest_addr_ton    = 2;
    b.dest_addr_npi    = 1;
    snprintf((char*)b.destination_addr, ADDRESS_LENGTH, "%s", "0900001111");
    b.esm_class        = 0;
    b.protocol_id      = 0;
    b.priority_flag    = 0;
    memset(b.schedule_delivery_time, 0, sizeof(b.schedule_delivery_time));
    memset(b.validity_period, 0, sizeof(b.validity_period));
    b.registered_delivery = 0;
    b.replace_if_present_flag =0;
    b.data_coding         = 0;
    b.sm_default_msg_id   = 0;
    b.sm_length           = strlen(TEXTO);
    memcpy(b.short_message, TEXTO, b.sm_length);

    tlv.tag = TLVID_user_message_reference;
    tlv.length = sizeof(uint16_t);
    tlv.value.val16 = 0x0024;
    build_tlv( &(b.tlv), &tlv );

    tlv.tag = TLVID_message_payload;
    tlv.length = strlen(TEXTO);
    memcpy(tlv.value.octet, TEXTO, tlv.length);
    build_tlv( &(b.tlv), &tlv );

    tlv.tag = 0x1501;

    tlv.length = strlen(TEXTO);
    memcpy(tlv.value.octet, TEXTO, tlv.length);
    build_tlv( &(b.tlv), &tlv );

    doTest(DELIVER_SM, &a, &b);
    destroy_tlv( b.tlv );
    destroy_tlv( a.tlv );
    return( 0 );
};
Exemple #3
0
struct lldp_tlv *create_power_via_mdi_tlv(struct lldp_port *lldp_port) {
  struct lldp_tlv* tlv = initialize_tlv();
  char OUI[3]  = {0x00, 0x01, 0x0F};
  char subtype = 2;

  if(tlv == NULL)
    return NULL;

  tlv->type = POWER_VIA_MDI_TLV;           // Constant defined in tlv_00120f.h
  tlv->length = 7; // The Power Via MDI TLV length is always 7.

  tlv->info_string = malloc(7);

  if(tlv->info_string == NULL) {
    destroy_tlv(&tlv);
    return NULL;
  }

  memcpy(tlv->info_string, OUI, 3);

  memcpy(tlv->info_string, &subtype, 1);

  // Are there any devices in *NIX that support PSE or PD as per RFC 3621?
 
  return tlv;  
}
Exemple #4
0
// MAC/PHY Configuration/Status TLV
struct lldp_tlv *create_mac_phy_configuration_status_tlv(struct lldp_port *lldp_port) {
  struct lldp_tlv *tlv = initialize_tlv();
  char OUI[3]  = {0x00, 0x01, 0x0F};
  char subtype = 1;

  if(tlv == NULL)
    return NULL;

  tlv->type = MAC_PHY_CONFIGURATION_STATUS_TLV; // Constant defined in tlv_00120f.h
  tlv->length = 9;                       // The MAC/PHY Configuration/Status TLV length is always 9.

  tlv->info_string = malloc(9);

  if(tlv->info_string == NULL) {
    destroy_tlv(&tlv);
    return NULL;
  }

  memcpy(&tlv->info_string[0], OUI, 3);

  memcpy(&tlv->info_string[3], &subtype, 1);
  /*
  memcpy(&tlv->info_string[4], &lldp_port->autoNegCapabilitiesAndSupport, 1);

  memcpy(&tlv->info_string[5], &lldp_port->ifMauAutoNegCapAdvertisedBits, 2);
  
  memcpy(&tlv->info_string[7], &lldp_port->ifMauType, 2);
  */ 

  return tlv;  
}
Exemple #5
0
int do_smpp_connectReceiver(SmppConnect *p, int sock_tcp){
    bind_receiver_t      req;
    bind_receiver_resp_t res;
    memset(&req, 0, sizeof(bind_receiver_t));
    memset(&res, 0, sizeof(bind_receiver_resp_t));

    /* Init PDU ***********************************************************/
    req.command_length   = 0;
    req.command_id       = BIND_RECEIVER;
    req.command_status   = ESME_ROK;
    req.sequence_number  = 1;
    sprintf((char*)req.system_id,"%s",(char*)p->systemId);
    sprintf((char*)req.password,"%s",(char*)p->password);
    sprintf((char*)req.system_type,"%s",(char*)p->systemType);
    req.interface_version = SMPP_VERSION;
#if 0 /* if you need add */
    req.addr_ton          = 2;
    req.addr_npi          = 1;
    snprintf( b.address_range, sizeof(b.address_range), "%s", "");
#endif

    /* FIRST STEP: PACK AND SEND */
#include "pack_and_send.inc"
    /* Set a timer (PENDIENTE) ********************************************/
    /* SECOND STEP: READ AND UNPACK Response */
#include "recv_and_unpack.inc"
    destroy_tlv( res.tlv ); /* Por las dudas */

    if( res.command_id != BIND_RECEIVER_RESP ||
        res.command_status != ESME_ROK ){
        printf("Error in BIND(BIND_RECEIVER)[%d:%d]\n",
                                       res.command_id, res.command_status);
        //return( -1 );
    };
    return( 0 );
}
Exemple #6
0
int do_smpp_send_message(SMS *p, int sock_tcp){
    char message[256];
    tlv_t tlv;
    submit_sm_t      req;
    submit_sm_resp_t res;
    memset(&req, 0, sizeof(submit_sm_t));
    memset(&res, 0, sizeof(submit_sm_resp_t));

    /* Init PDU ***********************************************************/
    req.command_length   = 0;
    req.command_id       = SUBMIT_SM;
    req.command_status   = ESME_ROK;
    req.sequence_number  = 2;
    
    req.source_addr_ton  = TON_International;
    req.source_addr_npi  = NPI_ISDN_E163_E164;
    sprintf((char*)req.source_addr,"%s",(char*)p->src);
///printf("................%s",req.source_addr); 
    req.dest_addr_ton    = TON_International;
    req.dest_addr_npi    = NPI_ISDN_E163_E164;
    sprintf((char*)req.destination_addr,"%s",(char*)p->dst);
/*#if 0 // if you need this
    b.esm_class        = 0;
    b.protocol_id      = 0;
    b.priority_flag    = 0;
    snprintf( b.schedule_delivery_time, TIME_LENGTH, "%s", "");
    snprintf( b.validity_period, TIME_LENGTH, "%s", "");
    b.registered_delivery = 0;
    b.replace_if_present_flag =0;
    b.data_coding         = 0;
    b.sm_default_msg_id   = 0;
#endif*/

    sprintf((char*)message,"%s",(char*)p->msg);
/*#if 0 // Message in short_message scope
    b.sm_length           = strlen(TEXTO);
    memcpy(b.short_message, TEXTO, b.sm_length);
//#else // Message in Payload*/
    tlv.tag = TLVID_message_payload;
    tlv.length = strlen(message);
    memcpy(tlv.value.octet, message, tlv.length);
    build_tlv( &(req.tlv), &tlv );
//#endif

    /* Add other optional param */
    tlv.tag = TLVID_user_message_reference;
    tlv.length = sizeof(uint16_t);
    tlv.value.val16 = 0x0024;
    build_tlv( &(req.tlv), &tlv );

    /* FIRST STEP: PACK AND SEND */
#include "pack_and_send.inc"
    destroy_tlv( req.tlv ); /* Por las dudas */
    /* Set a timer (PENDIENTE) ********************************************/
    /* SECOND STEP: READ AND UNPACK Response */
#include "recv_and_unpack.inc"

    if( res.command_id != SUBMIT_SM_RESP ||
        res.command_status != ESME_ROK ){
        printf("Error in send(SUBMIT_SM)[%08X:%08X]\n", 
                                       res.command_id, res.command_status);
        return( -1 );
    };
    return( 0 );
}