static int _dalDmpTrafficTestHandler(dal_ado_t *adoi, dal_attr *attr)
{
void *handler = NULL;
char *key = NULL;
int upIdx = 0;
int packetIdx = 0;
user_port up = {};
UINT16 speed = 0;
char rawPacket[MAX_PAYLOAD_LEN] = {0};
char srcMac[MAC_LEN] ={0};
char dstMac[MAC_LEN] ={0};
char srcIp[IPv4_LEN] = {0};
char dstIp[IPv4_LEN] = {0};
UINT16 lenType = 0;
UINT8 vlan = 0;
if (NULL != (handler = DAL_ADOI_ENTRY(adoi, DAL_TRAFFIC_TEST_PORT_TBL)))
{
DAL_ADOI_ENTRY_LOOP(handler)
{
if (NULL== (key = DAL_ADOI_ENTRY_KEY(handler)) || !DAL_ADOI_ENTRY_KEY_MATCH(handler, DAL_TRAFFIC_TEST_PORT_TBL_ALL))
{
continue;
}
if (DAL_ADOI_ENTRY_KEY_EMPTY(handler))
{
printf("key with no fields");
}
else
{
sscanf(key, DAL_TRAFFIC_TEST_PORT_TBL_FMT, &upIdx, &packetIdx);
UP_FROM_IDX(up, upIdx);
if (UNIT_CURRENT != UP_UNIT(up))
{
continue;
}
DAL_ADOI_ENTRY_FIELD_LOOP(handler, key)
{
if (DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_RAW_PACKET))
{
dalAdoiGetEntryStr(adoi, DAL_TRAFFIC_TEST_PORT_TBL, rawPacket, MAX_PAYLOAD_LEN);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_SRC_MAC))
{
dalAdoiGetEntryStr(adoi, DAL_TRAFFIC_TEST_PORT_TBL, srcMac, MAC_LEN);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_DST_MAC))
{
dalAdoiGetEntryStr(adoi, DAL_TRAFFIC_TEST_PORT_TBL, dstMac, MAC_LEN);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_SRC_IP))
{
dalAdoiGetEntryStr(adoi, DAL_TRAFFIC_TEST_PORT_TBL, srcIp, IPv4_LEN);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_DST_IP))
{
dalAdoiGetEntryStr(adoi, DAL_TRAFFIC_TEST_PORT_TBL, dstIp, IPv4_LEN);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_LENTYPE))
{
dalAdoiGetEntryUI16(adoi, DAL_TRAFFIC_TEST_PORT_TBL, &lenType);
}
else if(DAL_ADOI_ENTRY_FIELD_MATCH(handler, DAL_TRAFFIC_TEST_PORT_VLAN))
{
dalAdoiGetEntryUI8(adoi, DAL_TRAFFIC_TEST_PORT_TBL, &vlan);
}
else
{
printf("Invalid field %s !", DAL_ADOI_ENTRY_FIELD(handler));
}
}
}
}
printf("Calling hiTrafficTestPacketSet with:\n");
printf(" rawPacket: %s\n", rawPacket);
printf(" srcMac: %s\n", srcMac);
printf(" dstMac: %s\n", dstMac);
printf(" srcIp: %s\n", srcIp);
printf(" dstIp: %s\n", dstIp);
printf(" lenType: %d\n", lenType);
printf(" vlan: %d\n", vlan);
APPL_IF_ERR_RET(hiTrafficTestPacketSet(up, rawPacket, srcMac, dstMac, srcIp, dstIp, lenType, vlan));
}这里添加判断语句,拿到的srcMac如果等于初始值,则给其一个合理的默认值