SCTP support: add parsing of sctp

This patch adds support of SCTP in all part of the code in charge
of decoding packets.
remotes/origin/master-1.1.x
Eric Leblond 16 years ago committed by Victor Julien
parent e1d966eaf6
commit 8be92fdd99

@ -26,6 +26,7 @@
#include "decode.h" #include "decode.h"
#include "decode-tcp.h" #include "decode-tcp.h"
#include "decode-sctp.h"
#include "decode-udp.h" #include "decode-udp.h"
#define ICMPV4_HEADER_LEN 8 #define ICMPV4_HEADER_LEN 8

@ -27,6 +27,7 @@
#include "decode-icmpv6.h" #include "decode-icmpv6.h"
#include "decode.h" #include "decode.h"
#include "decode-tcp.h" #include "decode-tcp.h"
#include "decode-sctp.h"
#include "decode-udp.h" #include "decode-udp.h"
#include "decode-events.h" #include "decode-events.h"
#include "util-unittest.h" #include "util-unittest.h"

@ -25,6 +25,7 @@
#define __DECODE_ICMPV6_H__ #define __DECODE_ICMPV6_H__
#include "decode-tcp.h" #include "decode-tcp.h"
#include "decode-sctp.h"
#include "decode-udp.h" #include "decode-udp.h"
#include "decode-ipv6.h" #include "decode-ipv6.h"

@ -556,6 +556,10 @@ void DecodeIPV4(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt,
DecodeICMPV4(tv, dtv, p, pkt + IPV4_GET_HLEN(p), DecodeICMPV4(tv, dtv, p, pkt + IPV4_GET_HLEN(p),
IPV4_GET_IPLEN(p) - IPV4_GET_HLEN(p), pq); IPV4_GET_IPLEN(p) - IPV4_GET_HLEN(p), pq);
break; break;
case IPPROTO_SCTP:
DecodeSCTP(tv, dtv, p, pkt + IPV4_GET_HLEN(p),
IPV4_GET_IPLEN(p) - IPV4_GET_HLEN(p), pq);
break;
case IPPROTO_IPV6: case IPPROTO_IPV6:
{ {
if (pq != NULL) { if (pq != NULL) {

@ -73,6 +73,11 @@ DecodeIPV6ExtHdrs(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt
DecodeICMPV6(tv, dtv, p, pkt, plen, pq); DecodeICMPV6(tv, dtv, p, pkt, plen, pq);
SCReturn; SCReturn;
case IPPROTO_SCTP:
IPV6_SET_L4PROTO(p,nh);
DecodeSCTP(tv, dtv, p, pkt, plen, pq);
SCReturn;
case IPPROTO_ROUTING: case IPPROTO_ROUTING:
hdrextlen = sizeof(IPV6RouteHdr); hdrextlen = sizeof(IPV6RouteHdr);
hdrextlen += (*(pkt+1) * 8); /* 8 octet units */ hdrextlen += (*(pkt+1) * 8); /* 8 octet units */
@ -441,6 +446,8 @@ void DecodeIPV6(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, uint8_t *pkt,
break; break;
case IPPROTO_ICMPV6: case IPPROTO_ICMPV6:
return DecodeICMPV6(tv, dtv, p, pkt + IPV6_HEADER_LEN, IPV6_GET_PLEN(p), pq); return DecodeICMPV6(tv, dtv, p, pkt + IPV6_HEADER_LEN, IPV6_GET_PLEN(p), pq);
case IPPROTO_SCTP:
return DecodeSCTP(tv, dtv, p, pkt + IPV6_HEADER_LEN, IPV6_GET_PLEN(p), pq);
case IPPROTO_FRAGMENT: case IPPROTO_FRAGMENT:
case IPPROTO_HOPOPTS: case IPPROTO_HOPOPTS:
case IPPROTO_ROUTING: case IPPROTO_ROUTING:

@ -45,6 +45,7 @@
#include "decode-icmpv6.h" #include "decode-icmpv6.h"
#include "decode-tcp.h" #include "decode-tcp.h"
#include "decode-udp.h" #include "decode-udp.h"
#include "decode-sctp.h"
#include "decode-raw.h" #include "decode-raw.h"
#include "decode-vlan.h" #include "decode-vlan.h"
@ -702,6 +703,7 @@ void DecodeICMPV4(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_
void DecodeICMPV6(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *); void DecodeICMPV6(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);
void DecodeTCP(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *); void DecodeTCP(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);
void DecodeUDP(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *); void DecodeUDP(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);
void DecodeSCTP(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);
void DecodeGRE(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *); void DecodeGRE(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);
void DecodeVLAN(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *); void DecodeVLAN(ThreadVars *, DecodeThreadVars *, Packet *, uint8_t *, uint16_t, PacketQueue *);

@ -37,6 +37,7 @@
#include "decode.h" #include "decode.h"
#include "decode-ipv4.h" #include "decode-ipv4.h"
#include "decode-tcp.h" #include "decode-tcp.h"
#include "decode-sctp.h"
#include "decode-udp.h" #include "decode-udp.h"
#include "packet-queue.h" #include "packet-queue.h"
#include "threads.h" #include "threads.h"

Loading…
Cancel
Save