ProbingParserFPtr ProbingParser)
{
char param[100];
+ uint8_t ip_proto;
+ DetectProto dp;
int r;
ConfNode *node;
ConfNode *proto_node = NULL;
/* for each proto */
TAILQ_FOREACH(proto_node, &node->head, next) {
- DetectProto dp;
- int ip_proto = DetectProtoParse(&dp, proto_node->name);
- if (ip_proto < 0) {
+ memset(&dp, 0, sizeof(dp));
+ r = DetectProtoParse(&dp, proto_node->name);
+ if (r < 0) {
+ SCLogError(SC_ERR_INVALID_YAML_CONF_ENTRY, "Invalid entry for "
+ "%s.%s. Accepted values are tcp, udp and sctp",
+ param, proto_node->name);
+ exit(EXIT_FAILURE);
+ }
+ if (dp.proto[IPPROTO_TCP / 8] & (1 << (IPPROTO_TCP % 8))) {
+ ip_proto = IPPROTO_TCP;
+ } else if (dp.proto[IPPROTO_UDP / 8] & (1 << (IPPROTO_UDP % 8))) {
+ ip_proto = IPPROTO_UDP;
+ } else if (dp.proto[IPPROTO_SCTP / 8] & (1 << (IPPROTO_SCTP % 8))) {
+ ip_proto = IPPROTO_SCTP;
+ } else {
SCLogError(SC_ERR_INVALID_YAML_CONF_ENTRY, "Invalid entry for "
- "%s.%s", param, proto_node->name);
+ "%s.%s. Accepted values are tcp, udp and sctp",
+ param, proto_node->name);
exit(EXIT_FAILURE);
}