增加和kni通信接口
This commit is contained in:
@@ -41,3 +41,7 @@ level=10
|
|||||||
statsd_server=192.168.10.72
|
statsd_server=192.168.10.72
|
||||||
statsd_port=8126
|
statsd_port=8126
|
||||||
histogram_bins=0.50,0.80,0.9,0.95
|
histogram_bins=0.50,0.80,0.9,0.95
|
||||||
|
|
||||||
|
[sender_scm]
|
||||||
|
kni_ip = 192.168.10.37
|
||||||
|
kni_port = 8888
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
add_executable(tfe src/acceptor_kni_v1.cpp src/acceptor_kni_v2.cpp src/ssl_stream.cpp src/key_keeper.cpp
|
add_executable(tfe src/acceptor_kni_v1.cpp src/acceptor_kni_v2.cpp src/ssl_stream.cpp src/key_keeper.cpp
|
||||||
src/ssl_sess_cache.cpp src/ssl_sess_ticket.cpp src/ssl_service_cache.cpp
|
src/ssl_sess_cache.cpp src/ssl_sess_ticket.cpp src/ssl_service_cache.cpp
|
||||||
src/ssl_trusted_cert_storage.cpp src/ev_root_ca_metadata.cpp src/ssl_utils.cpp
|
src/ssl_trusted_cert_storage.cpp src/ev_root_ca_metadata.cpp src/ssl_utils.cpp
|
||||||
src/tcp_stream.cpp src/main.cpp src/proxy.cpp)
|
src/tcp_stream.cpp src/main.cpp src/proxy.cpp src/sender_scm.cpp)
|
||||||
|
|
||||||
target_include_directories(tfe PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include/external)
|
target_include_directories(tfe PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include/external)
|
||||||
target_include_directories(tfe PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include/internal)
|
target_include_directories(tfe PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include/internal)
|
||||||
@@ -100,3 +100,11 @@ target_link_libraries(test_chello_parse pthread dl
|
|||||||
MESA_htable wiredcfg
|
MESA_htable wiredcfg
|
||||||
cjson
|
cjson
|
||||||
MESA_field_stat)
|
MESA_field_stat)
|
||||||
|
|
||||||
|
#### test_sender_scm
|
||||||
|
add_executable(test_sender_scm src/sender_scm.cpp test/test_sender_scm.cpp)
|
||||||
|
|
||||||
|
target_include_directories(test_sender_scm PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include/internal)
|
||||||
|
|
||||||
|
target_link_libraries(test_sender_scm common)
|
||||||
|
target_link_libraries(test_sender_scm pthread dl MESA_prof_load MESA_handle_logger)
|
||||||
|
|||||||
4
platform/include/internal/sender_scm.h
Normal file
4
platform/include/internal/sender_scm.h
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
struct sender_scm;
|
||||||
|
struct sender_scm* sender_scm_init(const char *profile, void *logger);
|
||||||
|
void send_scm_destroy(struct sender_scm *sender);
|
||||||
|
int sender_scm_cmsg_send(struct sender_scm *sender, struct tfe_cmsg *cmsg);
|
||||||
97
platform/src/sender_scm.cpp
Normal file
97
platform/src/sender_scm.cpp
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#include "tfe_utils.h"
|
||||||
|
#include "tfe_types.h"
|
||||||
|
#include "tfe_cmsg.h"
|
||||||
|
#include "MESA/MESA_prof_load.h"
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
struct sender_scm
|
||||||
|
{
|
||||||
|
int sockfd;
|
||||||
|
struct sockaddr_in server_addr;
|
||||||
|
void *logger;
|
||||||
|
};
|
||||||
|
|
||||||
|
void send_scm_destroy(struct sender_scm *sender)
|
||||||
|
{
|
||||||
|
if(sender != NULL)
|
||||||
|
{
|
||||||
|
if(sender->sockfd >= 0)
|
||||||
|
{
|
||||||
|
close(sender->sockfd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FREE(&sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct sender_scm* sender_scm_init(const char *profile, void *logger)
|
||||||
|
{
|
||||||
|
const char *section = "sender_scm";
|
||||||
|
char kni_ip[INET_ADDRSTRLEN] = "";
|
||||||
|
int kni_port = -1;
|
||||||
|
int sockfd = -1;
|
||||||
|
struct sockaddr_in server_addr;
|
||||||
|
struct sender_scm *sender = ALLOC(struct sender_scm, 1);
|
||||||
|
sender->logger = logger;
|
||||||
|
int ret = MESA_load_profile_string_nodef(profile, section, "kni_ip", kni_ip, sizeof(kni_ip));
|
||||||
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
TFE_LOG_ERROR(logger, "MESA_prof_load: kni_ip not set, profile is %s, section is %s", profile, section);
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
ret = MESA_load_profile_int_nodef(profile, section, "kni_port", &kni_port);
|
||||||
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
TFE_LOG_ERROR(logger, "MESA_prof_load: kni_port not set, profile is %s, section is %s", profile, section);
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
TFE_LOG_INFO(logger, "MESA_prof_load, [%s]:\n kni_ip: %s\n kni_port: %d",
|
||||||
|
section, kni_ip, kni_port);
|
||||||
|
//create socket
|
||||||
|
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
|
if(sockfd < 0)
|
||||||
|
{
|
||||||
|
TFE_LOG_ERROR(logger, "Failed at create udp socket, errno is %d, %s", errno, strerror(errno));
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
sender->sockfd = sockfd;
|
||||||
|
//server_addr
|
||||||
|
memset(&server_addr, 0, sizeof(server_addr));
|
||||||
|
server_addr.sin_family = AF_INET;
|
||||||
|
server_addr.sin_port = htons(kni_port);
|
||||||
|
server_addr.sin_addr.s_addr = inet_addr(kni_ip);
|
||||||
|
sender->server_addr = server_addr;
|
||||||
|
return sender;
|
||||||
|
|
||||||
|
error_out:
|
||||||
|
send_scm_destroy(sender);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sender_scm_cmsg_send(struct sender_scm *sender, struct tfe_cmsg *cmsg)
|
||||||
|
{
|
||||||
|
void *logger = sender->logger;
|
||||||
|
uint16_t bufflen = tfe_cmsg_serialize_size_get(cmsg);
|
||||||
|
unsigned char *buff = ALLOC(unsigned char, bufflen);
|
||||||
|
uint16_t serialize_len = 0;
|
||||||
|
int ret = tfe_cmsg_serialize(cmsg, buff, bufflen, &serialize_len);
|
||||||
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
TFE_LOG_ERROR(logger, "Failed at serialize tfe cmsg, ret is %d", ret);
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
ret = sendto(sender->sockfd, buff, serialize_len, MSG_CONFIRM,
|
||||||
|
(struct sockaddr *)&(sender->server_addr), sizeof(sender->server_addr));
|
||||||
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
TFE_LOG_ERROR(logger, "Failed at send udp data, errno is %d, %s", errno, strerror(errno));
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error_out:
|
||||||
|
FREE(&buff);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
33
platform/test/test_sender_scm.cpp
Normal file
33
platform/test/test_sender_scm.cpp
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#include "tfe_types.h"
|
||||||
|
#include "tfe_utils.h"
|
||||||
|
#include "sender_scm.h"
|
||||||
|
#include "tfe_cmsg.h"
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
|
||||||
|
struct tfe_cmsg *cmsg = tfe_cmsg_init();
|
||||||
|
if(cmsg == NULL){
|
||||||
|
printf("Failed at call tfe_cmsg_init\n");
|
||||||
|
}
|
||||||
|
//set
|
||||||
|
uint32_t value = 0x12345678;
|
||||||
|
int ret = tfe_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SEQ, (const unsigned char*)(&value), 4);
|
||||||
|
if(ret < 0){
|
||||||
|
printf("Failed at call tfe_cmsg_set: ret is %d\n", ret);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//sender_scm
|
||||||
|
const char *profile = "../../conf/tfe/tfe.conf";
|
||||||
|
struct sender_scm* sender = sender_scm_init(profile, NULL);
|
||||||
|
if(sender == NULL){
|
||||||
|
printf("Failed at call sender_scm_init\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ret = sender_scm_cmsg_send(sender, cmsg);
|
||||||
|
if(ret < 0){
|
||||||
|
printf("Failed at call sender_scm_cmsg_send, ret is %d\n", ret);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user