jb_restore_mark(jb, &mark);
}
break;
+ case ALPROTO_DCERPC:
+ jb_get_mark(jb, &mark);
+ void *state = FlowGetAppState(p->flow);
+ if (state) {
+ void *tx = AppLayerParserGetTx(p->flow->proto, proto, state, tx_id);
+ if (tx) {
+ jb_open_object(jb, "dcerpc");
+ if (p->proto == IPPROTO_TCP) {
+ if (!rs_dcerpc_log_json_record_tcp(state, tx, jb)) {
+ jb_restore_mark(jb, &mark);
+ }
+ } else {
+ if (!rs_dcerpc_log_json_record_udp(state, tx, jb)) {
+ jb_restore_mark(jb, &mark);
+ }
+ }
+ jb_close(jb);
+ }
+ }
+ break;
default:
break;
}
{ ALPROTO_IMAP, NULL }, // protocol detection only
{ ALPROTO_JABBER, NULL }, // no parser, no logging
{ ALPROTO_SMB, NULL }, // special: uses state
- { ALPROTO_DCERPC, NULL }, // TODO missing
+ { ALPROTO_DCERPC, NULL }, // special: uses state
{ ALPROTO_IRC, NULL }, // no parser, no logging
{ ALPROTO_DNS, AlertJsonDns },
{ ALPROTO_MODBUS, (EveJsonSimpleTxLogFunc)rs_modbus_to_json },