增加和kni通信接口

This commit is contained in:
崔一鸣
2019-06-02 15:10:57 +08:00
committed by luqiuwen
parent 28becac88d
commit cc126a73a1
6 changed files with 154 additions and 8 deletions

View File

@@ -39,7 +39,7 @@ struct key_keeper
void* logger;
X509* trusted_ca_cert;
EVP_PKEY* trusted_ca_key;
X509* untrusted_ca_cert;
EVP_PKEY* untrusted_ca_key;
unsigned int no_cache;
@@ -385,7 +385,7 @@ static void certstore_rpc_on_succ(void* result, void* user)
{
key_keeper_free_keyring((struct keyring*)kyr);
}
}
}
ctx->ref_keeper->stat.new_issue++;
promise_success(p, (void*)kyr);
key_keeper_free_keyring((struct keyring*)kyr);
@@ -492,7 +492,7 @@ struct key_keeper* key_keeper_init(const char * profile, const char* section, vo
{
TFE_LOG_ERROR(logger, "Load Trusted Root CA %s failed.", keeper->trusted_ca_path);
goto error_out;
}
}
keeper->untrusted_ca_cert=ssl_x509_load(keeper->untrusted_ca_path);
keeper->untrusted_ca_key=ssl_key_load(keeper->untrusted_ca_path);
if(keeper->untrusted_ca_cert==NULL||keeper->trusted_ca_key==NULL)
@@ -503,13 +503,13 @@ struct key_keeper* key_keeper_init(const char * profile, const char* section, vo
}
TFE_LOG_INFO(logger, "MESA_load_profile, [%s]: mode:%s, no_cache:%u ,ca_path:%s, untrusted_ca_path:%s, cert_store_host:%s, cert_store_port:%d, hash_slot_size:%d, hash_expire_seconds:%d",
section, tmp, keeper->no_cache, keeper->trusted_ca_path, keeper->untrusted_ca_path, keeper->cert_store_host, keeper->cert_store_port, keeper->hash_slot_size, keeper->hash_expire_seconds);
return keeper;
error_out:
key_keeper_destroy(keeper);
return NULL;
}
struct keyring* key_keeper_release_keyring(future_result_t* result)
@@ -644,7 +644,7 @@ void key_keeper_async_ask(struct future * f, struct key_keeper * keeper, const c
key_keeper_free_keyring((struct keyring*)kyr);
}
}
promise_success(p, (void*)kyr);
promise_success(p, (void*)kyr);
keeper->stat.new_issue++;
key_keeper_free_keyring((struct keyring*)kyr);
}

View 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;
}