Author: cgr |
Language: text |
Description: Not specified |
Timestamp: 2017-08-25 05:01:38 +0000 |
/*-----------------------------------------------------------------------------
******* Modulo : PRCMPRO ( PROCESADOR DE MENSAJES ISO8583) *******
******* Descripcion : Procesador de mensajes provenientes del ATM. *******
******* Modelo de cajero ISO8584. *******
******* Ver. 02.00.00 *******
******* Fecha : 01/Junio/1998 *******
******* Autor : Ing. Jose Alfredo Pequeno Contreras *******
******* Copyright(c): BanRegio, S.A. *******
-----------------------------------------------------------------------------*/
#include <unistd.h>
#include <string.h>
#include <stdio.h> /* Def. de rutinas estandares de C */
#include <stdlib.h> /* Def. de rutinas estandares de C */
#include <errno.h> /* Def. de errores internos del sistema */
#include <time.h> /* Encabezado para funciones de tiempo */
#include "sicca.h" /* Definicion de estruc., var. y const. */
#include "memdin.h"
//#define DEBUG
/*** Estructura auxiliar de almacenamiento ***/
struct tx_rec {
TRANSACTION tx;
struct tx_rec *next;
struct tx_rec *prev;
};
typedef struct tx_rec TX_REC;
/*** Estructura del nodo de cola de espera para ISO 8583 ***/
struct pend_iso {
int atm;
unsigned int secuencia;
int num_miso;
char prod[2];
time_t wait_time;
int lon;
char direccion; /*'0'= sicca->prosa,'1'= prosa->sicca */
CAMPOS *p_campos;
char *miso;
struct pend_iso *next;
struct pend_iso *prev;
};
typedef struct pend_iso PEND_ISO8583;
/* Mensaje de respuesta ISO8583, poner mascara de resp. ISO 8583 */
struct rsp_msg resp_msg;
RESP_ISO8583 *resp_iso = (RESP_ISO8583 *) &resp_msg;
struct apl_msg *reqaut = (struct apl_msg *) &resp_msg;
/* Mensaje de requerimiento del autorizador hacia PROSA */
REQ_ISO8583 reqiso; /* Mensaje de requerimiento de PROSA */
struct msg_rec prcm_cnfg; /* Mensaje de configuracion */
struct tcpip atms; /* Lista de cajeros configurados */
struct tcpip_rec *atm_actual; /* Apuntador a cajero actual */
TRANSACTION buff; /* Almacenamiento auxiliar */
TX_REC *tr_head; /* Apuntador inicio lista de tipo de tran. */
TX_REC *tr_last; /* Apuntador final lista de tipo de tran. */
PEND_ISO8583 *pend_hISO; /* Apuntador inicio lista de pend. ISO8583 */
PEND_ISO8583 phISO; /* Inicio de la lista de pend. ISO8583 */
REG_CAMPOS_ISO c_iso[MAX_NCISO]; /* definicion de campos ISO */
MSJISO m_iso[MAX_MSJ_ISO]; /* definicion de mensajes ISO */
MAPA_BITS map_b[MAX_MSJ_ISO]; /* Mapa de bits iso por mensaje */
CAMPOS pc_iso; /* Posicion de los campos ISO de msj rec */
CAMPOS pc_iso_rsp; /* Posicion de los campos ISO de msj a env */
unsigned int sig_nsec = 0; /* Siguiente numero de secuencia */
char env_prosa[MAX_MSG_LEN]; /* Mensaje a enviar a PROSA */
FILE *trans_fptr; /* Apuntador al archivo transacciones */
FILE *a; /* Apuntador auxiliar a archivo */
char msg[MAX_MSG_LEN]; /* Buffer del mensaje */
char aux[MAX_MSG_LEN]; /* Buffer auxiliar */
char *ap_msjrec; /* Apuntador al mensaje recibido */
char *ap_msjenv; /* Apuntador al mensaje enviado */
char *ptr; /* Apuntador auxiliar al mensajes */
char luno[4]; /* Identificador del ATM */
char llave_enc_desenc[17]; /* Llave de enc-desencripcion */
int nm_iso = 0; /* numero de mensajes ISO configurados */
int cnfg_wtime; /* Tiempo de espera */
int ret_c; /* Codigo de retorno */
int atm; /* Identificador del ATM. */
int len; /* Longitud del mensaje */
int type; /* Tipo de mensaje */
int atm_ops; /* Estado operacional del ATM */
int reason; /* Razon del rechazo de la operacion */
int pos_atm_act; /* Posición en el arreglo del atm actual */
int procomatm[MAX_NUM_ATM]; /* Enlace ISO en linea, 0 = no, 1 = si */
int proaplatm[MAX_NUM_ATM]; /* Aplic. ISO en linea, 0 = no, 1 = si */
int procompos[MAX_NUM_ATM]; /* Enlace ISO en linea, 0 = no, 1 = si */
int proaplpos[MAX_NUM_ATM]; /* Aplic. ISO en linea, 0 = no, 1 = si */
int sec_0800 = 0; /* Numero de secuencia para 0800 */
int srvdes_conectado = 0; /* Bandera para ver si el SRVDES est
conectado */
int skt_local; /* Socket del PRCMPRO */
This paste is large and only partially shown.
View full paste