+ unsigned int traceNb= lttv_traceset_number(traceSetContext->ts);
+ struct {
+ GQuark channelName;
+ GQuark eventName;
+ GQuark* fields;
+ } eventHookInfoList[] = {
+ {
+ .channelName= LTT_CHANNEL_NET,
+ .eventName= LTT_EVENT_DEV_XMIT,
+ .fields= FIELD_ARRAY(LTT_FIELD_SKB, LTT_FIELD_NETWORK_PROTOCOL,
+ LTT_FIELD_TRANSPORT_PROTOCOL, LTT_FIELD_SADDR,
+ LTT_FIELD_DADDR, LTT_FIELD_TOT_LEN, LTT_FIELD_IHL,
+ LTT_FIELD_SOURCE, LTT_FIELD_DEST, LTT_FIELD_SEQ,
+ LTT_FIELD_ACK_SEQ, LTT_FIELD_DOFF, LTT_FIELD_ACK,
+ LTT_FIELD_RST, LTT_FIELD_SYN, LTT_FIELD_FIN),
+ }, {
+ .channelName= LTT_CHANNEL_NET,
+ .eventName= LTT_EVENT_DEV_RECEIVE,
+ .fields= FIELD_ARRAY(LTT_FIELD_SKB, LTT_FIELD_PROTOCOL),
+ }, {
+ .channelName= LTT_CHANNEL_NET,
+ .eventName= LTT_EVENT_TCPV4_RCV,
+ .fields= FIELD_ARRAY(LTT_FIELD_SKB, LTT_FIELD_SADDR,
+ LTT_FIELD_DADDR, LTT_FIELD_TOT_LEN, LTT_FIELD_IHL,
+ LTT_FIELD_SOURCE, LTT_FIELD_DEST, LTT_FIELD_SEQ,
+ LTT_FIELD_ACK_SEQ, LTT_FIELD_DOFF, LTT_FIELD_ACK,
+ LTT_FIELD_RST, LTT_FIELD_SYN, LTT_FIELD_FIN),
+ }, {
+ .channelName= LTT_CHANNEL_NETIF_STATE,
+ .eventName= LTT_EVENT_NETWORK_IPV4_INTERFACE,
+ .fields= FIELD_ARRAY(LTT_FIELD_NAME, LTT_FIELD_ADDRESS,
+ LTT_FIELD_UP),
+ }
+ }; // This is called a compound literal
+ unsigned int hookNb= sizeof(eventHookInfoList) / sizeof(*eventHookInfoList);