Make AF_PACKET and PCAP mode use it.
return verdict;
}
+static inline void DecodeLinkLayer(ThreadVars *tv, DecodeThreadVars *dtv,
+ const int datalink, Packet *p, const uint8_t *data, const uint32_t len)
+{
+ /* call the decoder */
+ switch (datalink) {
+ case LINKTYPE_ETHERNET:
+ DecodeEthernet(tv, dtv, p, data, len);
+ break;
+ case LINKTYPE_LINUX_SLL:
+ DecodeSll(tv, dtv, p, data, len);
+ break;
+ case LINKTYPE_PPP:
+ DecodePPP(tv, dtv, p, data, len);
+ break;
+ case LINKTYPE_RAW:
+ case LINKTYPE_GRE_OVER_IP:
+ DecodeRaw(tv, dtv, p, data, len);
+ break;
+ case LINKTYPE_NULL:
+ DecodeNull(tv, dtv, p, data, len);
+ break;
+ default:
+ SCLogError(SC_ERR_DATALINK_UNIMPLEMENTED, "datalink type "
+ "%"PRId32" not yet supported", datalink);
+ break;
+ }
+}
+
#endif /* __DECODE_H__ */
}
/* call the decoder */
- switch (p->datalink) {
- case LINKTYPE_ETHERNET:
- DecodeEthernet(tv, dtv, p,GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_LINUX_SLL:
- DecodeSll(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_PPP:
- DecodePPP(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_RAW:
- case LINKTYPE_GRE_OVER_IP:
- DecodeRaw(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_NULL:
- DecodeNull(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- default:
- SCLogError(SC_ERR_DATALINK_UNIMPLEMENTED, "Error: datalink type %" PRId32 " not yet supported in module DecodeAFP", p->datalink);
- break;
- }
+ DecodeLinkLayer(tv, dtv, p->datalink, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
PacketDecodeFinalize(tv, dtv, p);
/* update counters */
DecodeUpdatePacketCounters(tv, dtv, p);
- /* call the decoder */
- switch(p->datalink) {
- case LINKTYPE_LINUX_SLL:
- DecodeSll(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_ETHERNET:
- DecodeEthernet(tv, dtv, p,GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_PPP:
- DecodePPP(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_RAW:
- case LINKTYPE_GRE_OVER_IP:
- DecodeRaw(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- case LINKTYPE_NULL:
- DecodeNull(tv, dtv, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
- break;
- default:
- SCLogError(SC_ERR_DATALINK_UNIMPLEMENTED, "Error: datalink "
- "type %" PRId32 " not yet supported in module "
- "DecodePcap", p->datalink);
- break;
- }
+ DecodeLinkLayer(tv, dtv, p->datalink, p, GET_PKT_DATA(p), GET_PKT_LEN(p));
PacketDecodeFinalize(tv, dtv, p);