#include "layer.h"
#include <netinet/in.h>
-#include <limits>
#include "protocols/layer.h"
#include "protocols/protocol_ids.h"
#include "protocols/packet.h"
if (curr_layer < 0 || curr_layer >= p->num_layers)
return false;
- const uint16_t proto = p->layers[curr_layer].prot_id;
- const uint8_t ip_proto_max = std::numeric_limits<uint8_t>::max();
- if ( (proto <= ip_proto_max) && is_ip6_extension((uint8_t)proto) )
+ if (is_ip6_extension(p->layers[curr_layer].prot_id))
{
const ip::IP6Extension* const ip6_ext =
reinterpret_cast<const ip::IP6Extension*>(p->layers[curr_layer].start);
constexpr uint16_t ETHERTYPE_EAPOL = 0x888e;
constexpr uint16_t ETHERTYPE_FPATH = 0x8903;
-inline bool is_ip6_extension(const uint8_t proto)
+inline bool is_ip6_extension(const uint16_t proto)
{
+ if(proto > UINT8_MAX)
+ return false;
+
switch (proto)
{
case IPPROTO_ID_HOPOPTS:
stream.ignore_session(
&session->clientIP, session->clientPort,
&session->serverIP, session->serverPort,
- p->type(), FtpDataFlowData::flow_id,
- SSN_DIR_BOTH);
+ p->type(), SSN_DIR_BOTH,
+ FtpDataFlowData::flow_id);
}
}
}
stream.ignore_session(
&session->clientIP, session->clientPort,
&session->serverIP, session->serverPort,
- p->type(), FtpDataFlowData::flow_id,
- SSN_DIR_BOTH);
+ p->type(), SSN_DIR_BOTH,
+ FtpDataFlowData::flow_id);
}
}
}
else
{
stream.ignore_session(&mdataA->maddress, mdataA->mport, &mdataB->maddress,
- mdataB->mport, p->type(), SipFlowData::flow_id, SSN_DIR_BOTH);
+ mdataB->mport, p->type(), SSN_DIR_BOTH, SipFlowData::flow_id);
}
sip_stats.ignoreChannels++;
mdataA = mdataA->nextM;
for (i=0, app = host->services; app; app = app->next,i++)
{
DebugFormat(DEBUG_ATTRIBUTE, "\tService #%d:\n", i);
- DebugFormat(DEBUG_ATTRIBUTE, "\t\tIPProtocol: %s\tPort: %s\tProtocol %s\n",
+ DebugFormat(DEBUG_ATTRIBUTE, "\t\tIPProtocol: %d\tPort: %d\tProtocol %d\n",
app->ipproto, app->port, app->protocol);
}
if (i==0)
for (i=0, app = host->clients; app; app = app->next,i++)
{
DebugFormat(DEBUG_ATTRIBUTE, "\tClient #%d:\n", i);
- DebugFormat(DEBUG_ATTRIBUTE, "\t\tIPProtocol: %s\tProtocol %s\n",
+ DebugFormat(DEBUG_ATTRIBUTE, "\t\tIPProtocol: %d\tProtocol %d\n",
app->ipproto, app->protocol);
if (app->fields & APPLICATION_ENTRY_PORT)
{
- DebugFormat(DEBUG_ATTRIBUTE, "\t\tPort: %s\n", app->port);
+ DebugFormat(DEBUG_ATTRIBUTE, "\t\tPort: %d\n", app->port);
}
}
if (i==0)
// other protos are added dynamically as used
enum SnortProtocols
{
+ // The is_*_protocol functions depend on the order of these enums.
SNORT_PROTO_IP = 1,
SNORT_PROTO_ICMP,
SNORT_PROTO_TCP,
{ return proto < SNORT_PROTO_MAX; }
inline bool is_service_protocol(int16_t proto)
-{ return !is_network_protocol(proto); }
+{ return proto > SNORT_PROTO_UDP; }
void InitializeProtocolReferenceTable(void);
void FreeProtoocolReferenceTable(void);