1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef LNN_AUDIT_CONVERTER_H
17 #define LNN_AUDIT_CONVERTER_H
18 
19 #include "softbus_event_converter.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define LNN_AUDIT_ASSIGNER(type, fieldName, field)                                                            \
26     static inline bool LnnAuditAssigner##fieldName(                                                           \
27         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28     {                                                                                                         \
29         if (Assigner##type(form->lnnAuditExtra->field, &param) &&                                             \
30             CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) {                                   \
31             param->t = paramType;                                                                             \
32             return true;                                                                                      \
33         }                                                                                                     \
34         return false;                                                                                         \
35     }
36 
37 LNN_AUDIT_ASSIGNER(Int32,   Result, result)
38 LNN_AUDIT_ASSIGNER(Errcode, ErrCode, errCode)
39 LNN_AUDIT_ASSIGNER(Int32,  AuditType, auditType)
40 LNN_AUDIT_ASSIGNER(Uint64, ConnectionId, connId)
41 LNN_AUDIT_ASSIGNER(Int32,  AuthLinkType, authLinkType)
42 LNN_AUDIT_ASSIGNER(Uint32, AuthRequestId, authRequestId)
43 LNN_AUDIT_ASSIGNER(Int32,  OnlineNum, onlineNum)
44 LNN_AUDIT_ASSIGNER(String, HostPkg, hostPkg)
45 LNN_AUDIT_ASSIGNER(String, LocalIp, localIp)
46 LNN_AUDIT_ASSIGNER(String, LocalBrMac, localBrMac)
47 LNN_AUDIT_ASSIGNER(String, LocalBleMac, localBleMac)
48 LNN_AUDIT_ASSIGNER(String, LocalUdid, localUdid)
49 LNN_AUDIT_ASSIGNER(String, LocalNetworkId, localNetworkId)
50 LNN_AUDIT_ASSIGNER(String, LocalDevName, localDevName)
51 LNN_AUDIT_ASSIGNER(String, PeerIp, peerIp)
52 LNN_AUDIT_ASSIGNER(String, PeerUdid, peerUdid)
53 LNN_AUDIT_ASSIGNER(String, PeerBrMac, peerBrMac)
54 LNN_AUDIT_ASSIGNER(String, PeerBleMac, peerBleMac)
55 LNN_AUDIT_ASSIGNER(String, PeerNetworkId, peerNetworkId)
56 LNN_AUDIT_ASSIGNER(String, PeerDevName, peerDevName)
57 LNN_AUDIT_ASSIGNER(Int32, LocalAuthPort, localAuthPort)
58 LNN_AUDIT_ASSIGNER(Int32, LocalProxyPort, localProxyPort)
59 LNN_AUDIT_ASSIGNER(Int32, LocalSessionPort, localSessionPort)
60 LNN_AUDIT_ASSIGNER(Int32, LocalDevType, localDevType)
61 LNN_AUDIT_ASSIGNER(Int32, PeerAuthPort, peerAuthPort)
62 LNN_AUDIT_ASSIGNER(Int32, PeerProxyPort, peerProxyPort)
63 LNN_AUDIT_ASSIGNER(Int32, PeerSessionPort, peerSessionPort)
64 LNN_AUDIT_ASSIGNER(Int32, PeerDevType, peerDevType)
65 LNN_AUDIT_ASSIGNER(Int32, AttackTimes, attackTimes)
66 LNN_AUDIT_ASSIGNER(Int32, BeAttackedPort, beAttackedPort)
67 LNN_AUDIT_ASSIGNER(Int32, HbEventType, hbEventType)
68 
69 #define LNN_AUDIT_ASSIGNER_SIZE 31 // Size of g_lnnAuditAssigners
70 static const HiSysEventParamAssigner g_lnnAuditAssigners[] = {
71     { "RESULT",               HISYSEVENT_INT32,  LnnAuditAssignerResult           },
72     { "ERROR_CODE",           HISYSEVENT_INT32,  LnnAuditAssignerErrCode          },
73     { "AUDIT_TYPE",           HISYSEVENT_INT32,  LnnAuditAssignerAuditType        },
74     { "CONN_ID",              HISYSEVENT_UINT64, LnnAuditAssignerConnectionId     },
75     { "AUTH_LINK_TYPE",       HISYSEVENT_INT32,  LnnAuditAssignerAuthLinkType     },
76     { "AUTH_REQUEST_ID",      HISYSEVENT_UINT32, LnnAuditAssignerAuthRequestId    },
77     { "ONLINE_NUM",           HISYSEVENT_INT32,  LnnAuditAssignerOnlineNum        },
78     { "HOST_PKG",             HISYSEVENT_STRING, LnnAuditAssignerHostPkg          },
79     { "LOCAL_IP",             HISYSEVENT_STRING, LnnAuditAssignerLocalIp          },
80     { "LOCAL_BR_MAC",         HISYSEVENT_STRING, LnnAuditAssignerLocalBrMac       },
81     { "LOCAL_BLE_MAC",        HISYSEVENT_STRING, LnnAuditAssignerLocalBleMac      },
82     { "LOCAL_UDID",           HISYSEVENT_STRING, LnnAuditAssignerLocalUdid        },
83     { "LOCAL_NETWORK_ID",     HISYSEVENT_STRING, LnnAuditAssignerLocalNetworkId   },
84     { "LOCAL_DEV_NAME",       HISYSEVENT_STRING, LnnAuditAssignerLocalDevName     },
85     { "PEER_IP",              HISYSEVENT_STRING, LnnAuditAssignerPeerIp           },
86     { "PEER_BR_MAC",          HISYSEVENT_STRING, LnnAuditAssignerPeerBrMac        },
87     { "PEER_BLE_MAC",         HISYSEVENT_STRING, LnnAuditAssignerPeerBleMac       },
88     { "PEER_UDID",            HISYSEVENT_STRING, LnnAuditAssignerPeerUdid         },
89     { "PEER_NETWORK_ID",      HISYSEVENT_STRING, LnnAuditAssignerPeerNetworkId    },
90     { "PEER_DEV_NAME",        HISYSEVENT_STRING, LnnAuditAssignerPeerDevName      },
91     { "LOCAL_AUTH_PORT",      HISYSEVENT_INT32,  LnnAuditAssignerLocalAuthPort    },
92     { "LOCAL_PROXY_PORT",     HISYSEVENT_INT32,  LnnAuditAssignerLocalProxyPort   },
93     { "LOCAL_SESSION_PORT",   HISYSEVENT_INT32,  LnnAuditAssignerLocalSessionPort },
94     { "LOCAL_DEV_TYPE",       HISYSEVENT_INT32,  LnnAuditAssignerLocalDevType     },
95     { "PEER_AUTH_PORT",       HISYSEVENT_INT32,  LnnAuditAssignerPeerAuthPort     },
96     { "PEER_PROXY_PORT",      HISYSEVENT_INT32,  LnnAuditAssignerPeerProxyPort    },
97     { "PEER_SESSION_PORT",    HISYSEVENT_INT32,  LnnAuditAssignerPeerSessionPort  },
98     { "PEER_DEV_TYPE",        HISYSEVENT_INT32,  LnnAuditAssignerPeerDevType      },
99     { "ATTACK_TIMES",         HISYSEVENT_INT32,  LnnAuditAssignerAttackTimes      },
100     { "BE_ATTACKED_PORT",     HISYSEVENT_INT32,  LnnAuditAssignerBeAttackedPort   },
101     { "HEARTBEAT_EVENT_TYPE", HISYSEVENT_INT32,  LnnAuditAssignerHbEventType      },
102     // Modification Note: remember updating LNN_AUDIT_ASSIGNER_SIZE
103 };
104 
ConvertLnnAuditForm2Param(HiSysEventParam params[],SoftbusEventForm * form)105 static inline size_t ConvertLnnAuditForm2Param(HiSysEventParam params[], SoftbusEventForm *form)
106 {
107     size_t validSize = 0;
108     if (form == NULL || form->lnnExtra == NULL) {
109         return validSize;
110     }
111     for (size_t i = 0; i < sizeof(g_lnnAuditAssigners) / sizeof(g_lnnAuditAssigners[0]); ++i) {
112         HiSysEventParamAssigner assigner = g_lnnAuditAssigners[i];
113         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
114             ++validSize;
115         }
116     }
117     return validSize;
118 }
119 #ifdef __cplusplus
120 }
121 #endif /* __cplusplus */
122 #endif // LNN_AUDIT_CONVERTER_H
123