flow: Add basic SCTP support

This patch adds a basic flow support to SCTP. SCTP specificities
like the verification tag are not taken into account.
remotes/origin/master-1.1.x
Eric Leblond 15 years ago committed by Victor Julien
parent 01e955bc27
commit 674b0bfae7

@ -62,6 +62,7 @@ enum {
FLOW_PROTO_TCP,
FLOW_PROTO_UDP,
FLOW_PROTO_ICMP,
FLOW_PROTO_SCTP,
/* should be last */
FLOW_PROTO_MAX,

@ -100,6 +100,8 @@ uint8_t FlowGetProtoMapping(uint8_t proto) {
return FLOW_PROTO_UDP;
case IPPROTO_ICMP:
return FLOW_PROTO_ICMP;
case IPPROTO_SCTP:
return FLOW_PROTO_SCTP;
default:
return FLOW_PROTO_DEFAULT;
}
@ -142,6 +144,9 @@ void FlowInit(Flow *f, Packet *p)
} else if (p->icmpv6h != NULL) {
f->type = p->type;
f->code = p->code;
} else if (p->sctph != NULL) { /* XXX MACRO */
SET_SCTP_SRC_PORT(p,&f->sp);
SET_SCTP_DST_PORT(p,&f->dp);
} /* XXX handle default */
else {
printf("FIXME: %s:%s:%" PRId32 "\n", __FILE__, __FUNCTION__, __LINE__);

@ -660,7 +660,7 @@ void FlowDecrUsecnt(Flow *f) {
* \retval 1 to_client
*/
int FlowGetPacketDirection(Flow *f, Packet *p) {
if (p->proto == IPPROTO_TCP || p->proto == IPPROTO_UDP) {
if (p->proto == IPPROTO_TCP || p->proto == IPPROTO_UDP || p->proto == IPPROTO_SCTP) {
if (!(CMP_PORT(p->sp,p->dp))) {
/* update flags and counters */
if (CMP_PORT(f->sp,p->sp)) {

Loading…
Cancel
Save