Hi,
I am developing Bro scripts for reading modbus packets.
I send the packet details to broccoli as events.
When I send an event with parameters of type “addr” and “vector of count” from the bro script to broccoli, the broccoli doesn’t receive the parameters correctly.
The code –
Bro script –
global pong: event(reg: vector of count, ipaddr: addr);
event modbus_read_holding_registers_response(c: connection, headers: ModbusHeaders, registers: ModbusRegisters)
{
event pong(ModbusRegisters,c$id$resp_h);
#ModbusRegisters - type vector of count
#c$id$resp_h type-addr
}
Broccoli Script –
static void bro_pong(BroConn *conn,void *data,BroRecord *rec,BroAddr *address)
{
int type = BRO_TYPE_COUNT;
uint64 *register;
if (! (seq = bro_record_get_nth_val(rec, 0, &type)))
{
printf(“Error getting sequence count from event, got type %i\n”, type);
return;
}
printf("pong event from seq=%“PRIu64"”,*register);
printf("\nAddress:");
for(i=3;i>=0;i–)
{
printf("%“PRIu32”.",address->addr[i]);
}
printf("\n");
}
Thanks in advance!
Vishak Muthukumar
Graduate Student
University of California, Davis