IPV4_FRAG_OVERLAP,
IPV6_FRAG_PKT_TOO_LARGE,
IPV6_FRAG_OVERLAP,
+ IPV4_FRAG_TOO_LARGE,
+ IPV6_FRAG_TOO_LARGE,
+ /* Fragment ignored due to internal error */
+ IPV4_FRAG_IGNORED,
+ IPV6_FRAG_IGNORED,
/* IPv4 in IPv6 events */
IPV4_IN_IPV6_PKT_TOO_SMALL,
insert:
if (data_len - ltrim <= 0) {
+ if (af == AF_INET) {
+ ENGINE_SET_EVENT(p, IPV4_FRAG_TOO_LARGE);
+ } else {
+ ENGINE_SET_EVENT(p, IPV6_FRAG_TOO_LARGE);
+ }
goto done;
}
Frag *new = PoolGet(dc->frag_pool);
SCMutexUnlock(&dc->frag_pool_lock);
if (new == NULL) {
+ if (af == AF_INET) {
+ ENGINE_SET_EVENT(p, IPV4_FRAG_IGNORED);
+ } else {
+ ENGINE_SET_EVENT(p, IPV6_FRAG_IGNORED);
+ }
goto done;
}
new->pkt = SCMalloc(GET_PKT_LEN(p));
SCMutexLock(&dc->frag_pool_lock);
PoolReturn(dc->frag_pool, new);
SCMutexUnlock(&dc->frag_pool_lock);
+ if (af == AF_INET) {
+ ENGINE_SET_EVENT(p, IPV4_FRAG_IGNORED);
+ } else {
+ ENGINE_SET_EVENT(p, IPV6_FRAG_IGNORED);
+ }
goto done;
}
memcpy(new->pkt, GET_PKT_DATA(p) + ltrim, GET_PKT_LEN(p) - ltrim);