To prepare future changes to the Packet header pointers.
Ticket: #5517.
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_geneve, sizeof(raw_geneve));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top == NULL);
Packet *tp = PacketDequeueNoLock(&tv.decode_pq);
- FAIL_IF(tp->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(tp));
FAIL_IF_NOT(tp->sp == 546);
FlowShutdown();
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_geneve, sizeof(raw_geneve));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top == NULL);
Packet *tp = PacketDequeueNoLock(&tv.decode_pq);
- FAIL_IF(tp->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(tp));
FAIL_IF_NOT(tp->sp == 53);
FlowShutdown();
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_geneve, sizeof(raw_geneve));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top == NULL);
Packet *tp = PacketDequeueNoLock(&tv.decode_pq);
- FAIL_IF(tp->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(tp));
FAIL_IF_NOT(tp->sp == 53);
FlowShutdown();
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_geneve, sizeof(raw_geneve));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top != NULL); /* Geneve packet should not have been processed */
DecodeGeneveConfigPorts(GENEVE_DEFAULT_PORT_S); /* Reset Geneve port list for future calls */
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_geneve, sizeof(raw_geneve));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top != NULL); /* Geneve packet should not have been processed */
FlowShutdown();
/** \test Get the wscale of 2 */
static int TCPGetWscaleTest01(void)
{
- int retval = 0;
static uint8_t raw_tcp[] = {0xda, 0xc1, 0x00, 0x50, 0xb6, 0x21, 0x7f, 0x58,
0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x16, 0xd0,
0x8a, 0xaf, 0x00, 0x00, 0x02, 0x04, 0x05, 0xb4,
0x04, 0x02, 0x08, 0x0a, 0x00, 0x62, 0x88, 0x28,
0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x02};
Packet *p = PacketGetFromAlloc();
- if (unlikely(p == NULL))
- return 0;
+ FAIL_IF_NULL(p);
IPV4Hdr ip4h;
ThreadVars tv;
DecodeThreadVars dtv;
-
memset(&tv, 0, sizeof(ThreadVars));
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&ip4h, 0, sizeof(IPV4Hdr));
FlowInitConfig(FLOW_QUIET);
DecodeTCP(&tv, &dtv, p, raw_tcp, sizeof(raw_tcp));
-
- if (p->tcph == NULL) {
- printf("tcp packet decode failed: ");
- goto end;
- }
+ FAIL_IF_NOT(PKT_IS_TCP(p));
uint8_t wscale = TCP_GET_WSCALE(p);
- if (wscale != 2) {
- printf("wscale %"PRIu8", expected 2: ", wscale);
- goto end;
- }
+ FAIL_IF(wscale != 2);
- retval = 1;
-end:
PacketRecycle(p);
FlowShutdown();
SCFree(p);
- return retval;
+ PASS;
}
/** \test Get the wscale of 15, so see if return 0 properly */
static int TCPGetWscaleTest02(void)
{
- int retval = 0;
static uint8_t raw_tcp[] = {0xda, 0xc1, 0x00, 0x50, 0xb6, 0x21, 0x7f, 0x58,
0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x16, 0xd0,
0x8a, 0xaf, 0x00, 0x00, 0x02, 0x04, 0x05, 0xb4,
0x04, 0x02, 0x08, 0x0a, 0x00, 0x62, 0x88, 0x28,
0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x0f};
Packet *p = PacketGetFromAlloc();
- if (unlikely(p == NULL))
- return 0;
+ FAIL_IF_NULL(p);
IPV4Hdr ip4h;
ThreadVars tv;
DecodeThreadVars dtv;
FlowInitConfig(FLOW_QUIET);
DecodeTCP(&tv, &dtv, p, raw_tcp, sizeof(raw_tcp));
-
- if (p->tcph == NULL) {
- printf("tcp packet decode failed: ");
- goto end;
- }
+ FAIL_IF_NOT(PKT_IS_TCP(p));
uint8_t wscale = TCP_GET_WSCALE(p);
- if (wscale != 0) {
- printf("wscale %"PRIu8", expected 0: ", wscale);
- goto end;
- }
+ FAIL_IF(wscale != 0);
- retval = 1;
-end:
PacketRecycle(p);
FlowShutdown();
SCFree(p);
- return retval;
+ PASS;
}
/** \test Get the wscale, but it's missing, so see if return 0 properly */
static int TCPGetWscaleTest03(void)
{
- int retval = 0;
static uint8_t raw_tcp[] = {0xda, 0xc1, 0x00, 0x50, 0xb6, 0x21, 0x7f, 0x59,
0xdd, 0xa3, 0x6f, 0xf8, 0x80, 0x10, 0x05, 0xb4,
0x7c, 0x70, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a,
0x00, 0x62, 0x88, 0x9e, 0x00, 0x00, 0x00, 0x00};
Packet *p = PacketGetFromAlloc();
- if (unlikely(p == NULL))
- return 0;
+ FAIL_IF_NULL(p);
IPV4Hdr ip4h;
ThreadVars tv;
DecodeThreadVars dtv;
-
memset(&tv, 0, sizeof(ThreadVars));
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&ip4h, 0, sizeof(IPV4Hdr));
FlowInitConfig(FLOW_QUIET);
DecodeTCP(&tv, &dtv, p, raw_tcp, sizeof(raw_tcp));
-
- if (p->tcph == NULL) {
- printf("tcp packet decode failed: ");
- goto end;
- }
+ FAIL_IF_NOT(PKT_IS_TCP(p));
uint8_t wscale = TCP_GET_WSCALE(p);
- if (wscale != 0) {
- printf("wscale %"PRIu8", expected 0: ", wscale);
- goto end;
- }
+ FAIL_IF(wscale != 0);
- retval = 1;
-end:
PacketRecycle(p);
FlowShutdown();
SCFree(p);
- return retval;
+ PASS;
}
static int TCPGetSackTest01(void)
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_vxlan, sizeof(raw_vxlan));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top == NULL);
Packet *tp = PacketDequeueNoLock(&tv.decode_pq);
- FAIL_IF(tp->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(tp));
FAIL_IF_NOT(tp->sp == 53);
FlowShutdown();
FlowInitConfig(FLOW_QUIET);
DecodeUDP(&tv, &dtv, p, raw_vxlan, sizeof(raw_vxlan));
- FAIL_IF(p->udph == NULL);
+ FAIL_IF_NOT(PKT_IS_UDP(p));
FAIL_IF(tv.decode_pq.top != NULL);
DecodeVXLANConfigPorts(VXLAN_DEFAULT_PORT_S); /* reset */
{
const DetectCsumData *cd = (const DetectCsumData *)ctx;
- if (!PacketIsIPv4(p) || p->tcph == NULL || p->proto != IPPROTO_TCP || PKT_IS_PSEUDOPKT(p))
+ if (!PacketIsIPv4(p) || !PKT_IS_TCP(p) || p->proto != IPPROTO_TCP || PKT_IS_PSEUDOPKT(p))
return 0;
if (p->flags & PKT_IGNORE_CHECKSUM) {
{
const DetectCsumData *cd = (const DetectCsumData *)ctx;
- if (!PacketIsIPv6(p) || p->tcph == NULL || p->proto != IPPROTO_TCP || PKT_IS_PSEUDOPKT(p))
+ if (!PacketIsIPv6(p) || !PKT_IS_TCP(p) || p->proto != IPPROTO_TCP || PKT_IS_PSEUDOPKT(p))
return 0;
if (p->flags & PKT_IGNORE_CHECKSUM) {
{
const DetectCsumData *cd = (const DetectCsumData *)ctx;
- if (!PacketIsIPv4(p) || p->udph == NULL || p->proto != IPPROTO_UDP || PKT_IS_PSEUDOPKT(p) ||
+ if (!PacketIsIPv4(p) || !PKT_IS_UDP(p) || p->proto != IPPROTO_UDP || PKT_IS_PSEUDOPKT(p) ||
p->udph->uh_sum == 0)
return 0;
{
const DetectCsumData *cd = (const DetectCsumData *)ctx;
- if (!PacketIsIPv6(p) || p->udph == NULL || p->proto != IPPROTO_UDP || PKT_IS_PSEUDOPKT(p))
+ if (!PacketIsIPv6(p) || !PKT_IS_UDP(p) || p->proto != IPPROTO_UDP || PKT_IS_PSEUDOPKT(p))
return 0;
if (p->flags & PKT_IGNORE_CHECKSUM) {
if (!PrefilterPacketHeaderExtraMatch(ctx, p))
return;
- if ((p->proto) == IPPROTO_TCP && !(PKT_IS_PSEUDOPKT(p)) &&
- (p->tcph != NULL) && (TCP_GET_ACK(p) == ctx->v1.u32[0]))
- {
+ if (p->proto == IPPROTO_TCP && !(PKT_IS_PSEUDOPKT(p)) && PKT_IS_TCP(p) &&
+ (TCP_GET_ACK(p) == ctx->v1.u32[0])) {
SCLogDebug("packet matches TCP ack %u", ctx->v1.u32[0]);
PrefilterAddSids(&det_ctx->pmq, ctx->sigs_array, ctx->sigs_cnt);
}
if (!PrefilterPacketHeaderExtraMatch(ctx, p))
return;
- if ((p->proto) == IPPROTO_TCP && !(PKT_IS_PSEUDOPKT(p)) &&
- (p->tcph != NULL) && (TCP_GET_SEQ(p) == ctx->v1.u32[0]))
- {
+ if (p->proto == IPPROTO_TCP && !(PKT_IS_PSEUDOPKT(p)) && PKT_IS_TCP(p) &&
+ (TCP_GET_SEQ(p) == ctx->v1.u32[0])) {
SCLogDebug("packet matches TCP seq %u", ctx->v1.u32[0]);
PrefilterAddSids(&det_ctx->pmq, ctx->sigs_array, ctx->sigs_cnt);
}
InspectionBuffer *buffer = InspectionBufferGet(det_ctx, list_id);
if (buffer->inspect == NULL) {
- if (p->tcph == NULL) {
+ if (!PKT_IS_TCP(p)) {
// may happen when DecodeTCPPacket fails
// for instance with invalid header length
return NULL;
InspectionBuffer *buffer = InspectionBufferGet(det_ctx, list_id);
if (buffer->inspect == NULL) {
- if (p->udph == NULL) {
+ if (!PKT_IS_UDP(p)) {
return NULL;
}
if (((uint8_t *)p->udph + (ptrdiff_t)UDP_HEADER_LEN) >
static inline void
DetectPrefilterSetNonPrefilterList(const Packet *p, DetectEngineThreadCtx *det_ctx, DetectRunScratchpad *scratch)
{
- if ((p->proto == IPPROTO_TCP) && (p->tcph != NULL) && (p->tcph->th_flags & TH_SYN)) {
+ if ((p->proto == IPPROTO_TCP) && PKT_IS_TCP(p) && (p->tcph->th_flags & TH_SYN)) {
det_ctx->non_pf_store_ptr = scratch->sgh->non_pf_syn_store_array;
det_ctx->non_pf_store_cnt = scratch->sgh->non_pf_syn_store_cnt;
} else {
uint32_t hash = 0;
if (PacketIsIPv4(p)) {
- if (p->tcph != NULL || p->udph != NULL) {
+ if (PKT_IS_TCP(p) || PKT_IS_UDP(p)) {
FlowHashKey4 fhk = { .pad[0] = 0 };
int ai = (p->src.addr_data32[0] > p->dst.addr_data32[0]);
DEBUG_VALIDATE_BUG_ON(1);
}
- if (p->tcph != NULL) { /* XXX MACRO */
+ if (PKT_IS_TCP(p)) {
SET_TCP_SRC_PORT(p,&f->sp);
SET_TCP_DST_PORT(p,&f->dp);
- } else if (p->udph != NULL) { /* XXX MACRO */
+ } else if (PKT_IS_UDP(p)) {
SET_UDP_SRC_PORT(p,&f->sp);
SET_UDP_DST_PORT(p,&f->dp);
} else if (p->icmpv4h != NULL) {
lpacket.flow = 0;
lpacket.class = 0;
- if (p->tcph == NULL)
+ if (!PKT_IS_TCP(p))
return 1;
libnet_t *c = GetCtx(p, LIBNET_RAW4);
lpacket.flow = 0;
lpacket.class = 0;
- if (p->tcph == NULL)
- return 1;
+ if (!PKT_IS_TCP(p))
+ return 1;
libnet_t *c = GetCtx(p, LIBNET_RAW6);
if (c == NULL)
{
SCEnter();
- DEBUG_VALIDATE_BUG_ON(p->tcph == NULL);
+ DEBUG_VALIDATE_BUG_ON(!PKT_IS_TCP(p));
SCLogDebug("ssn %p, stream %p, p %p, p->payload_len %"PRIu16"",
ssn, stream, p, p->payload_len);
int TcpSessionPacketSsnReuse(const Packet *p, const Flow *f, const void *tcp_ssn)
{
- if (p->proto == IPPROTO_TCP && p->tcph != NULL) {
+ if (p->proto == IPPROTO_TCP && PKT_IS_TCP(p)) {
if (TcpSessionPacketIsStreamStarter(p) == 1) {
if (TcpSessionReuseDoneEnough(p, f, tcp_ssn) == 1) {
return 1;
if (p->flags & PKT_WANTS_FLOW) {
uint32_t hash = p->flow_hash;
- if (p->tcph != NULL && ((p->sp >= 1024 && p->dp >= 1024) || p->dp == 21 || p->sp == 21 ||
- p->dp == 20 || p->sp == 20)) {
+ if (PKT_IS_TCP(p) && ((p->sp >= 1024 && p->dp >= 1024) || p->dp == 21 || p->sp == 21 ||
+ p->dp == 20 || p->sp == 20)) {
hash = FlowGetIpPairProtoHash(p);
}
qid = hash % ctx->size;