diff options
| author | 刘学利 <[email protected]> | 2020-10-12 12:05:47 +0800 |
|---|---|---|
| committer | 刘学利 <[email protected]> | 2020-10-12 12:05:47 +0800 |
| commit | 324cedb28a2558be9c5e80eb76fb9e703b669967 (patch) | |
| tree | 266024971a46ef4bcd7c869c63fbff74ac11a40e /src/ntc_radius_plug.cpp | |
| parent | 0bcaeed0b040ceee1eba686c321dbe17db0fca5c (diff) | |
| parent | dda8280eba64ba15a14cb150083915643996f280 (diff) | |
Merge branch 'develop' into 'master'v1.0.0
Develop
See merge request PanGu/ntc_radius_plug!1
Diffstat (limited to 'src/ntc_radius_plug.cpp')
| -rw-r--r-- | src/ntc_radius_plug.cpp | 308 |
1 files changed, 203 insertions, 105 deletions
diff --git a/src/ntc_radius_plug.cpp b/src/ntc_radius_plug.cpp index 28f1c51..4b9598c 100644 --- a/src/ntc_radius_plug.cpp +++ b/src/ntc_radius_plug.cpp @@ -25,8 +25,30 @@ #include "ntc_radius_plug.h" -static int NTC_RADIUS_PLUG_VERSION_20191022=0; -const char *config_file="t1conf/main.conf"; +#ifdef __cplusplus +extern "C" +{ +#endif + +#define GIT_VERSION_CATTER(v) __attribute__((__used__)) const char * GIT_VERSION_##v = NULL +#define GIT_VERSION_EXPEND(v) GIT_VERSION_CATTER(v) + +/* VERSION TAG */ +#ifdef GIT_VERSION +GIT_VERSION_EXPEND(GIT_VERSION); +#else +static __attribute__((__used__)) const char * GIT_VERSION_UNKNOWN = NULL; +#endif +#undef GIT_VERSION_CATTER +#undef GIT_VERSION_EXPEND + +#ifdef __cplusplus +} +#endif + + +static int NTC_RADIUS_PLUG_VERSION_20191211=0; +const char *config_file="conf/radius/radius.conf"; g_ntc_radius_plug_t g_ntc_radius_plug; @@ -65,88 +87,157 @@ error: } -int get_radius_object_element(cJSON *radius_info_object, radius_header_t *radius_header, radius_body_t *radius_body) +int get_radius_object_element(cJSON *radius_info_object, cJSON *radius_debug, radius_header_t *radius_header, radius_body_t *radius_body, int *account_index) { int i=0; - cJSON *radius_json_obj = radius_info_object; - cJSON_AddNumberToObject(radius_json_obj, "CODE", radius_header->code); + cJSON_AddNumberToObject(radius_debug, "radius_packet_type", radius_header->code); + cJSON_AddNumberToObject(radius_info_object, "radius_packet_type", radius_header->code); for(i=0; i<radius_body->attribute_num; i++) { switch(radius_body->attribute[i].type) { - case RADIUS_USER_NAME: - cJSON_AddStringToObject(radius_json_obj, "user_name", (char *)(radius_body->attribute[i].value)); - break; - case CALLBACK_NUMBER: - cJSON_AddStringToObject(radius_json_obj, "CALLBACK_NUMBER", (char *)(radius_body->attribute[i].value)); + case USER_NAME: + cJSON_AddStringToObject(radius_debug, "radius_account", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_account", (char *)(radius_body->attribute[i].value)); + *account_index=i; break; - case CALLBACK_ID: - cJSON_AddStringToObject(radius_json_obj, "CALLBACK_ID", (char *)(radius_body->attribute[i].value)); - break; - case CALLED_STATION_ID: - cJSON_AddStringToObject(radius_json_obj, "CALLED_STATION_ID", (char *)(radius_body->attribute[i].value)); + case NAS_IP_ADDRESS: + cJSON_AddStringToObject(radius_debug, "radius_nas_ip", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_nas_ip", (char *)(radius_body->attribute[i].value)); break; - case CALLING_STATION_ID: - cJSON_AddStringToObject(radius_json_obj, "CALLING_STATION_ID", (char *)(radius_body->attribute[i].value)); + case NAS_PORT: + cJSON_AddNumberToObject(radius_debug, "radius_nas_port", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_nas_port", *(unsigned int *)(radius_body->attribute[i].value)); break; - case ACCT_SESSION_ID: - cJSON_AddStringToObject(radius_json_obj, "ACCT_SESSION_ID", (char *)(radius_body->attribute[i].value)); + case SERVICE_TYPE: + cJSON_AddNumberToObject(radius_debug, "radius_service_type", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_service_type", *(unsigned int *)(radius_body->attribute[i].value)); break; - case ACCT_MULTI_SESSION_ID: - cJSON_AddStringToObject(radius_json_obj, "ACCT_MULTI_SESSION_ID", (char *)(radius_body->attribute[i].value)); - break; - case NAS_IP_ADDRESS: - cJSON_AddStringToObject(radius_json_obj, "NAS_IP_ADDRESS", (char *)(radius_body->attribute[i].value)); + case FRAMED_PROTOCOL: + cJSON_AddNumberToObject(radius_debug, "radius_framed_protocol", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_framed_protocol", *(unsigned int *)(radius_body->attribute[i].value)); break; case FRAMED_IP_ADDRESS: - cJSON_AddStringToObject(radius_json_obj, "FRAMED_IP_ADDRESS", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_debug, "radius_framed_ip", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_framed_ip", (char *)(radius_body->attribute[i].value)); break; case FRAMED_IP_NETMASK: - cJSON_AddStringToObject(radius_json_obj, "FRAMED_IP_NETMASK", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_debug, "radius_framed_ip_netmask", (char *)(radius_body->attribute[i].value)); break; - case SERVICE_TYPE: - cJSON_AddNumberToObject(radius_json_obj, "SERVICE_TYPE", *(unsigned int *)(radius_body->attribute[i].value)); + case FRAMED_ROUTING: + cJSON_AddNumberToObject(radius_debug, "radius_framed_routing", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case FILTER_ID: + cJSON_AddStringToObject(radius_debug, "radius_filter_id", (char *)(radius_body->attribute[i].value)); break; case FRAMED_MTU: - cJSON_AddNumberToObject(radius_json_obj, "FRAMED_MTU", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_framed_mtu", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case FRAMED_COMPRESSION: + cJSON_AddNumberToObject(radius_debug, "radius_framed_compression", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case CALLBACK_NUMBER: + cJSON_AddStringToObject(radius_debug, "radius_callback_number", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_callback_number", (char *)(radius_body->attribute[i].value)); break; - case SESSION_TIMEOUT: - cJSON_AddNumberToObject(radius_json_obj, "SESSION_TIMEOUT", *(unsigned int *)(radius_body->attribute[i].value)); + case CALLBACK_ID: + cJSON_AddStringToObject(radius_debug, "radius_callback_id", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_callback_id", (char *)(radius_body->attribute[i].value)); break; + case CLASS: + cJSON_AddStringToObject(radius_debug, "radius_class", (char *)(radius_body->attribute[i].value)); + break; + case SESSION_TIMEOUT: + cJSON_AddNumberToObject(radius_debug, "radius_session_timeout", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_session_timeout", *(unsigned int *)(radius_body->attribute[i].value)); + break; case IDLE_TIMEOUT: - cJSON_AddNumberToObject(radius_json_obj, "IDLE_TIMEOUT", *(unsigned int *)(radius_body->attribute[i].value)); - break; + cJSON_AddNumberToObject(radius_debug, "radius_idle_timeout", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_idle_timeout", *(unsigned int *)(radius_body->attribute[i].value)); + break; case TERMINATION_ACTION: - cJSON_AddNumberToObject(radius_json_obj, "TERMINATION_ACTION", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_termination_action", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_termination_action", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case CALLED_STATION_ID: + cJSON_AddStringToObject(radius_debug, "radius_called_station_id", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_called_station_id", (char *)(radius_body->attribute[i].value)); + break; + case CALLING_STATION_ID: + cJSON_AddStringToObject(radius_debug, "radius_calling_station_id", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_calling_station_id", (char *)(radius_body->attribute[i].value)); + break; + case NAS_IDENTIFIER: + cJSON_AddStringToObject(radius_debug, "radius_nas_indentifies", (char *)(radius_body->attribute[i].value)); break; case PROXY_STATE: - cJSON_AddNumberToObject(radius_json_obj, "PROXY_STATE", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_proxy_state", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_STATUS_TYPE: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_STATUS_TYPE", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_status_type", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_status_type", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_DELAY_TIME: + cJSON_AddNumberToObject(radius_debug, "radius_acct_delay_time", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_delay_time", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_SESSION_ID: + cJSON_AddStringToObject(radius_debug, "radius_acct_session_id", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_acct_session_id", (char *)(radius_body->attribute[i].value)); + break; + case ACCT_MULTI_SESSION_ID: + cJSON_AddStringToObject(radius_debug, "radius_acct_multi_session_id", (char *)(radius_body->attribute[i].value)); + cJSON_AddStringToObject(radius_info_object, "radius_acct_multi_session_id", (char *)(radius_body->attribute[i].value)); break; case ACCT_INPUT_OCTETS: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_INPUT_OCTETS", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_input_octets", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_input_octets", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_OUTPUT_OCTETS: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_OUTPUT_OCTETS", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_output_octets", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_output_octets", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_INPUT_PACKETS: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_INPUT_PACKETS", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_input_packets", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_input_packets", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_OUTPUT_PACKETS: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_OUTPUT_PACKETS", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_output_packets", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_output_packets", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_SESSION_TIME: + cJSON_AddNumberToObject(radius_debug, "radius_acct_session_time", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_session_time", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_TERMINATE_CAUSE: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_TERMINATE_CAUSE", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_terminate_cause", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_terminate_cause", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_LINK_COUNT: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_LINK_COUNT", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_link_count", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_link_count", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_INPUT_GIGAWORDS: + cJSON_AddNumberToObject(radius_debug, "radius_acct_input_gigawords", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_OUTPUT_GIGAWORDS: + cJSON_AddNumberToObject(radius_debug, "radius_acct_output_gigawords", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case ACCT_EVENT_TIMESTAMP: + cJSON_AddNumberToObject(radius_debug, "radius_event_timestamp", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_event_timestamp", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case NAS_PORT_TYPE: + cJSON_AddNumberToObject(radius_debug, "radius_nas_port_type", *(unsigned int *)(radius_body->attribute[i].value)); break; case ACCT_INTERIM_INTERVAL: - cJSON_AddNumberToObject(radius_json_obj, "ACCT_INTERIM_INTERVAL", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_debug, "radius_acct_interim_interval", *(unsigned int *)(radius_body->attribute[i].value)); + cJSON_AddNumberToObject(radius_info_object, "radius_acct_interim_interval", *(unsigned int *)(radius_body->attribute[i].value)); + break; + case NAS_PORT_ID: + cJSON_AddStringToObject(radius_debug, "radius_nas_port_id", (char *)(radius_body->attribute[i].value)); break; default: continue; @@ -158,7 +249,8 @@ int get_radius_object_element(cJSON *radius_info_object, radius_header_t *radius static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_stream) { - int ret = 0; + time_t cur_time; + int ret=0,con_duration_ms=0; const char *addr_proto = NULL; unsigned short tunnel_type=0; char nest_addr_buf[1024]; @@ -166,37 +258,64 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str const struct layer_addr *addr=NULL; char src_ip_str[128] = {0}, dst_ip_str[128] = {0}; - cJSON_AddNumberToObject(json_obj, "stream_dir", a_stream->dir); + cJSON_AddNumberToObject(json_obj, "common_stream_dir", a_stream->dir); addr=&(a_stream->addr); switch(addr->addrtype) { case ADDR_TYPE_IPV4: case __ADDR_TYPE_IP_PAIR_V4: - cJSON_AddNumberToObject(json_obj, "addr_type", 4); + cJSON_AddNumberToObject(json_obj, "common_address_type", 4); inet_ntop(AF_INET, &addr->ipv4->saddr, src_ip_str, sizeof(src_ip_str)); inet_ntop(AF_INET, &addr->ipv4->daddr, dst_ip_str, sizeof(dst_ip_str)); - cJSON_AddStringToObject(json_obj, "s_ip", src_ip_str); - cJSON_AddStringToObject(json_obj, "d_ip", dst_ip_str); - cJSON_AddNumberToObject(json_obj, "s_port", ntohs(addr->ipv4->source)); - cJSON_AddNumberToObject(json_obj, "d_port", ntohs(addr->ipv4->dest)); + cJSON_AddStringToObject(json_obj, "common_client_ip", src_ip_str); + cJSON_AddStringToObject(json_obj, "common_server_ip", dst_ip_str); + cJSON_AddNumberToObject(json_obj, "common_client_port", ntohs(addr->ipv4->source)); + cJSON_AddNumberToObject(json_obj, "common_server_port", ntohs(addr->ipv4->dest)); break; case ADDR_TYPE_IPV6: case __ADDR_TYPE_IP_PAIR_V6: - cJSON_AddNumberToObject(json_obj, "addr_type", 6); + cJSON_AddNumberToObject(json_obj, "common_address_type", 6); inet_ntop(AF_INET6, addr->ipv6->saddr, src_ip_str, sizeof(src_ip_str)); inet_ntop(AF_INET6, addr->ipv6->daddr, dst_ip_str, sizeof(dst_ip_str)); - cJSON_AddStringToObject(json_obj, "s_ip", src_ip_str); - cJSON_AddStringToObject(json_obj, "d_ip", dst_ip_str); - cJSON_AddNumberToObject(json_obj, "s_port", ntohs(addr->ipv6->source)); - cJSON_AddNumberToObject(json_obj, "d_port", ntohs(addr->ipv6->dest)); + cJSON_AddStringToObject(json_obj, "common_client_ip", src_ip_str); + cJSON_AddStringToObject(json_obj, "common_server_ip", dst_ip_str); + cJSON_AddNumberToObject(json_obj, "common_client_port", ntohs(addr->ipv6->source)); + cJSON_AddNumberToObject(json_obj, "common_server_port", ntohs(addr->ipv6->dest)); break; default: break; } + cJSON_AddNumberToObject(json_obj, "common_c2s_pkt_num", a_stream->ptcpdetail->serverpktnum); + cJSON_AddNumberToObject(json_obj, "common_s2c_pkt_num", a_stream->ptcpdetail->clientpktnum); + cJSON_AddNumberToObject(json_obj, "common_c2s_byte_num", a_stream->ptcpdetail->serverbytes); + cJSON_AddNumberToObject(json_obj, "common_s2c_byte_num", a_stream->ptcpdetail->clientbytes); + + cur_time = time(NULL); + if(a_stream!=NULL && a_stream->ptcpdetail!=NULL) + { + cJSON_AddNumberToObject(json_obj, "common_start_time", a_stream->ptcpdetail->createtime); + cJSON_AddNumberToObject(json_obj, "common_end_time", a_stream->ptcpdetail->lastmtime); + + con_duration_ms=(a_stream->ptcpdetail->lastmtime-a_stream->ptcpdetail->createtime)*1000; + cJSON_AddNumberToObject(json_obj, "common_con_duration_ms", con_duration_ms); + } + else + { + con_duration_ms=0; + cJSON_AddNumberToObject(json_obj, "common_start_time", cur_time); + cJSON_AddNumberToObject(json_obj, "common_end_time", cur_time); + cJSON_AddNumberToObject(json_obj, "common_con_duration_ms", con_duration_ms); + } + + int device_id_size=sizeof(unsigned long long); + unsigned long long device_id=(unsigned long long)g_ntc_radius_plug.device_id; + MESA_get_stream_opt(a_stream, MSO_GLOBAL_STREAM_ID, (void *)&device_id, &device_id_size); + cJSON_AddNumberToObject(json_obj, "common_stream_trace_id", device_id); + addr_proto = layer_addr_prefix_ntop(a_stream); - cJSON_AddStringToObject(json_obj, "trans_proto", addr_proto); + cJSON_AddStringToObject(json_obj, "common_l4_protocol", addr_proto); ret=MESA_get_stream_opt(a_stream, MSO_STREAM_TUNNEL_TYPE, &tunnel_type, &tunnel_type_size); assert(ret==0); @@ -209,7 +328,7 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str stream_addr_list_ntop(a_stream,nest_addr_buf, sizeof(nest_addr_buf)); } - cJSON_AddStringToObject(json_obj, "addr_list", nest_addr_buf); + cJSON_AddStringToObject(json_obj, "common_address_list", nest_addr_buf); return 0; } @@ -217,72 +336,50 @@ static int streamInfo2jsonObject(cJSON *json_obj, const struct streaminfo *a_str char NTC_RADIUS_PLUG_ENTRY(stSessionInfo *session_info, void **pme, int thread_seq, struct streaminfo *stream, void *a_packet) { - int ret=0,status=0; + int status=0; int config_id=0; - int payload_len=0; - time_t cur_time; + int payload_len=0,index=0; char *payload=NULL; - struct vxlan_info vinfo; - int opt_val_len = sizeof(vinfo); radius_info_t *radius_info=(radius_info_t *)session_info->app_info; cJSON *radius_info_object=cJSON_CreateObject(); streamInfo2jsonObject(radius_info_object, stream); - get_radius_object_element(radius_info_object, &radius_info->header, &radius_info->body); - cJSON_AddNumberToObject(radius_info_object, "cfg_id", config_id); - cJSON_AddNumberToObject(radius_info_object, "service", g_ntc_radius_plug.service_id); - - cur_time = time(NULL); - if(stream!=NULL && stream->ptcpdetail!=NULL) - { - cJSON_AddNumberToObject(radius_info_object, "recv_time", stream->ptcpdetail->createtime); - } - else - { - cJSON_AddNumberToObject(radius_info_object, "recv_time", cur_time); - } - cJSON_AddNumberToObject(radius_info_object, "found_time", cur_time); + cJSON_AddNumberToObject(radius_info_object, "common_policy_id", config_id); + cJSON_AddNumberToObject(radius_info_object, "common_service", g_ntc_radius_plug.service_id); - ret = MESA_get_stream_opt(stream, MSO_STREAM_VXLAN_INFO, &vinfo, &opt_val_len); - if(ret < 0) - { - MESA_handle_runtime_log(g_ntc_radius_plug.logger, RLOG_LV_FATAL, "DNS_COLLECT_LOG", "soq log: get vxlan info error, tuple4: %s", printaddr(&stream->addr, thread_seq)); - } - else - { - cJSON_AddNumberToObject(radius_info_object, "entrance_id", vinfo.entrance_id); - cJSON_AddNumberToObject(radius_info_object, "direction", vinfo.link_dir); - cJSON_AddNumberToObject(radius_info_object, "device_id", vinfo.dev_id); - cJSON_AddNumberToObject(radius_info_object, "encap_type", vinfo.encap_type); - cJSON_AddNumberToObject(radius_info_object, "link_id", vinfo.link_id); - - cJSON_AddStringToObject(radius_info_object, "inner_smac", (char *)vinfo.inner_smac); - cJSON_AddStringToObject(radius_info_object, "inner_dmac", (char *)vinfo.inner_dmac); - } - - cJSON_AddStringToObject(radius_info_object, "cap_ip", g_ntc_radius_plug.local_ip); + cJSON_AddStringToObject(radius_info_object, "common_sled_ip", g_ntc_radius_plug.local_ip); + cJSON_AddStringToObject(radius_info_object, "common_schema_type", "RADIUS"); + cJSON *radius_debug=cJSON_Duplicate(radius_info_object, 1); + + get_radius_object_element(radius_info_object, radius_debug, &radius_info->header, &radius_info->body, &index); payload = cJSON_PrintUnformatted(radius_info_object); payload_len = strlen(payload); - - status = rd_kafka_produce(g_ntc_radius_plug.topic_rkt, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, payload_len, NULL, 0, NULL); + status = rd_kafka_produce(g_ntc_radius_plug.topic_rkt, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, payload_len, + radius_info->body.attribute[index].value, radius_info->body.attribute[index].len, NULL); if(status < 0) { - MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"sendlog", "sendlog to kafka is error, status: %d, topic: %s payload: %s", status, g_ntc_radius_plug.topic_name, payload); + MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"SEND_LOG", "sendlog to kafka is error, status: %d, topic: %s payload: %s", status, g_ntc_radius_plug.topic_name, payload); } else { - MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"sendlog", "topic: %s %s", g_ntc_radius_plug.topic_name, payload); + MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO,"SEND_LOG", "topic: %s %s", g_ntc_radius_plug.topic_name, payload); } free(payload); cJSON_Delete(radius_info_object); radius_info_object = NULL; + + payload = cJSON_PrintUnformatted(radius_debug); + MESA_handle_runtime_log(g_ntc_radius_plug.logger,RLOG_LV_INFO, "RADIUS_DEBUG", "payload: %s", payload); + free(payload); + cJSON_Delete(radius_debug); + radius_debug = NULL; return APP_STATE_GIVEME; } @@ -297,12 +394,13 @@ int NTC_RADIUS_PLUG_INIT(void) rd_kafka_topic_conf_t *topic_conf; memset(&g_ntc_radius_plug,0,sizeof(g_ntc_radius_plug_t)); - MESA_load_profile_string_def(config_file, "SYSTEM", "NIC_NAME", nic_name, sizeof(nic_name), "eth0"); - MESA_load_profile_string_def(config_file, "RADIUS","LOG_PATH",g_ntc_radius_plug.pathname, sizeof(g_ntc_radius_plug.pathname), "./t1log/ntc_radius_plug/ntc_radius_plug"); - MESA_load_profile_int_def(config_file, "RADIUS", "SERVICE_ID", &g_ntc_radius_plug.service_id, 0xA2); - MESA_load_profile_int_def(config_file, "RADIUS","LEVEL", &g_ntc_radius_plug.level, RLOG_LV_FATAL); - MESA_load_profile_string_def(config_file, "RADIUS", "COLLECT_TOPIC", g_ntc_radius_plug.topic_name, sizeof(g_ntc_radius_plug.topic_name), "eth0"); - MESA_load_profile_string_def(config_file, "RADIUS", "BROKERLIST", g_ntc_radius_plug.brokerlist, sizeof(g_ntc_radius_plug.brokerlist), "127.0.0.1:9092"); + MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "NIC_NAME", nic_name, sizeof(nic_name), "lo"); + MESA_load_profile_string_def(config_file, "RADIUS_PLUG","LOG_PATH",g_ntc_radius_plug.pathname, sizeof(g_ntc_radius_plug.pathname), "./log/ntc_radius_plug/ntc_radius_plug"); + MESA_load_profile_int_def(config_file, "RADIUS_PLUG", "SERVICE_ID", &g_ntc_radius_plug.service_id, 0xA2); + MESA_load_profile_int_def(config_file, "RADIUS_PLUG","LOG_LEVEL", &g_ntc_radius_plug.level, RLOG_LV_FATAL); + MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "COLLECT_TOPIC", g_ntc_radius_plug.topic_name, sizeof(g_ntc_radius_plug.topic_name), "RADIUS-RECORD-LOG"); + MESA_load_profile_string_def(config_file, "RADIUS_PLUG", "BROKERLIST", g_ntc_radius_plug.brokerlist, sizeof(g_ntc_radius_plug.brokerlist), "127.0.0.1:9092"); + MESA_load_profile_int_def(config_file, "RADIUS_PLUG", "DEVICE_ID", &g_ntc_radius_plug.device_id, 0); g_ntc_radius_plug.logger = MESA_create_runtime_log_handle(g_ntc_radius_plug.pathname, g_ntc_radius_plug.level); if(g_ntc_radius_plug.logger == NULL) @@ -345,7 +443,7 @@ int NTC_RADIUS_PLUG_INIT(void) return -1; } - printf("INIT NTC_RADIUS_PLUG SUCCESS, VERSION: %d\n", NTC_RADIUS_PLUG_VERSION_20191022); + printf("INIT NTC_RADIUS_PLUG SUCCESS, VERSION: %d\n", NTC_RADIUS_PLUG_VERSION_20191211); return 0; } |
