TCP rst -> TLS rst
This commit is contained in:
parent
6c2781dbd1
commit
7ad01312de
|
|
@ -69,7 +69,7 @@ static int transport_indication(facilities_t *facilities, void* responder, void*
|
||||||
case TransportIndication_PR_packet:
|
case TransportIndication_PR_packet:
|
||||||
break;
|
break;
|
||||||
case TransportIndication_PR_data:
|
case TransportIndication_PR_data:
|
||||||
transport_data_indication(facilities, &ti->choice.data);
|
transport_data_indication(facilities, &ti->choice.data, security_socket);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
default:
|
default:
|
||||||
syslog_debug("[facilities]<- unrecognized TI.choice received");
|
syslog_debug("[facilities]<- unrecognized TI.choice received");
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include <itss-security/SecurityRequest.h>
|
#include <itss-security/SecurityRequest.h>
|
||||||
#include <itss-security/SecurityReply.h>
|
#include <itss-security/SecurityReply.h>
|
||||||
|
|
||||||
static void tcp_conn_reset(facilities_t* facilities, TCPConnRSTInfo_t* cri) {
|
static void tcp_conn_reset(facilities_t* facilities, TCPConnRSTInfo_t* cri, void* security_socket) {
|
||||||
if (cri->destinationAddress.size != 16) return;
|
if (cri->destinationAddress.size != 16) return;
|
||||||
|
|
||||||
SecurityRequest_t* sreq = NULL;
|
SecurityRequest_t* sreq = NULL;
|
||||||
|
|
@ -20,10 +20,16 @@ static void tcp_conn_reset(facilities_t* facilities, TCPConnRSTInfo_t* cri) {
|
||||||
sreq->choice.tlsReset.connId = tolling->tls_conn_id;
|
sreq->choice.tlsReset.connId = tolling->tls_conn_id;
|
||||||
|
|
||||||
uint8_t b_s[64];
|
uint8_t b_s[64];
|
||||||
asn_enc_rval_t enc = asn_encode_to_buffer(NULL, ATS_CANONICAL_OER, &asn_DEF_SecurityRequest, sreq, b_s, 64);
|
b_s[0] = 4;
|
||||||
|
asn_enc_rval_t enc = asn_encode_to_buffer(NULL, ATS_CANONICAL_OER, &asn_DEF_SecurityRequest, sreq, b_s+1, 63);
|
||||||
if (enc.encoded == -1) {
|
if (enc.encoded == -1) {
|
||||||
syslog_err("[facilities] SecurityRequest.tlsReset encoding failed");
|
syslog_err("[facilities] SecurityRequest.tlsReset encoding failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zmq_send(security_socket, b_s, enc.encoded+1, 0);
|
||||||
|
zmq_recv(security_socket, b_s, 64, 0);
|
||||||
|
|
||||||
|
// TODO handle SReply
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -32,14 +38,14 @@ static void tcp_conn_reset(facilities_t* facilities, TCPConnRSTInfo_t* cri) {
|
||||||
ASN_STRUCT_FREE(asn_DEF_SecurityRequest, sreq);
|
ASN_STRUCT_FREE(asn_DEF_SecurityRequest, sreq);
|
||||||
}
|
}
|
||||||
|
|
||||||
int transport_data_indication(facilities_t* facilities, TransportDataIndication_t* tdi) {
|
int transport_data_indication(facilities_t* facilities, TransportDataIndication_t* tdi, void* security_socket) {
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
switch (tdi->present) {
|
switch (tdi->present) {
|
||||||
case TransportDataIndication_PR_tcp:
|
case TransportDataIndication_PR_tcp:
|
||||||
switch (tdi->choice.tcp.present) {
|
switch (tdi->choice.tcp.present) {
|
||||||
case TCPDataIndication_PR_connInfoReset:
|
case TCPDataIndication_PR_connInfoReset:
|
||||||
tcp_conn_reset(facilities, &tdi->choice.tcp.choice.connInfoReset);
|
tcp_conn_reset(facilities, &tdi->choice.tcp.choice.connInfoReset, security_socket);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
rv = 1;
|
rv = 1;
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,4 @@
|
||||||
#include "facilities.h"
|
#include "facilities.h"
|
||||||
#include <itss-transport/TransportIndication.h>
|
#include <itss-transport/TransportIndication.h>
|
||||||
|
|
||||||
int transport_data_indication(facilities_t* facilities, TransportDataIndication_t* tpi);
|
int transport_data_indication(facilities_t* facilities, TransportDataIndication_t* tpi, void* security_socket);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue