|
|
|
|
@ -949,7 +949,6 @@ static bool AFPReadFromRingSetupPacket(
|
|
|
|
|
p->vlan_idx = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ptv->flags & AFP_ZERO_COPY) {
|
|
|
|
|
if (PacketSetData(p, (unsigned char *)h.raw + h.h2->tp_mac, h.h2->tp_snaplen) == -1) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@ -965,11 +964,7 @@ static bool AFPReadFromRingSetupPacket(
|
|
|
|
|
} else {
|
|
|
|
|
p->afp_v.peer = NULL;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (PacketCopyData(p, (unsigned char *)h.raw + h.h2->tp_mac, h.h2->tp_snaplen) == -1) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Timestamp */
|
|
|
|
|
p->ts.tv_sec = h.h2->tp_sec;
|
|
|
|
|
p->ts.tv_usec = h.h2->tp_nsec / 1000;
|
|
|
|
|
@ -1083,10 +1078,6 @@ static int AFPReadFromRing(AFPThreadVars *ptv)
|
|
|
|
|
TmqhOutputPacketpool(ptv->tv, p);
|
|
|
|
|
return AFPSuriFailure(ptv, h);
|
|
|
|
|
}
|
|
|
|
|
/* release frame if not in zero copy mode */
|
|
|
|
|
if (!(ptv->flags & AFP_ZERO_COPY)) {
|
|
|
|
|
h.h2->tp_status = TP_STATUS_KERNEL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (TmThreadsSlotProcessPkt(ptv->tv, ptv->slot, p) != TM_ECODE_OK) {
|
|
|
|
|
return AFPSuriFailure(ptv, h);
|
|
|
|
|
@ -1131,7 +1122,6 @@ static inline int AFPParsePacketV3(AFPThreadVars *ptv, struct tpacket_block_desc
|
|
|
|
|
p->vlan_idx = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ptv->flags & AFP_ZERO_COPY) {
|
|
|
|
|
if (PacketSetData(p, (unsigned char *)ppd + ppd->tp_mac, ppd->tp_snaplen) == -1) {
|
|
|
|
|
TmqhOutputPacketpool(ptv->tv, p);
|
|
|
|
|
SCReturnInt(AFP_SURI_FAILURE);
|
|
|
|
|
@ -1147,12 +1137,7 @@ static inline int AFPParsePacketV3(AFPThreadVars *ptv, struct tpacket_block_desc
|
|
|
|
|
} else {
|
|
|
|
|
p->afp_v.peer = NULL;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (PacketCopyData(p, (unsigned char*)ppd + ppd->tp_mac, ppd->tp_snaplen) == -1) {
|
|
|
|
|
TmqhOutputPacketpool(ptv->tv, p);
|
|
|
|
|
SCReturnInt(AFP_SURI_FAILURE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Timestamp */
|
|
|
|
|
p->ts.tv_sec = ppd->tp_sec;
|
|
|
|
|
p->ts.tv_usec = ppd->tp_nsec/1000;
|
|
|
|
|
|