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 ); };
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 ); };
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; }
// 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; }
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 ); }
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 ); }