7a832a8a0e
The flow dispatches deferred and timer handling for flows centrally, but needs to call into protocol specific code for the handling of individual flows. Currently this passes a general union flow *. It makes more sense to pass the specific relevant flow type structure. That brings the check on the flow type adjacent to casting to the union variant which it tags. Arguably, this is a slight abstraction violation since it involves the generic flow code using protocol specific types. It's already calling into protocol specific functions, so I don't think this really makes any difference. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
31 lines
788 B
C
31 lines
788 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright Red Hat
|
|
* Author: David Gibson <david@gibson.dropbear.id.au>
|
|
*
|
|
* ICMP flow tracking data structures
|
|
*/
|
|
#ifndef ICMP_FLOW_H
|
|
#define ICMP_FLOW_H
|
|
|
|
/**
|
|
* struct icmp_ping_flow - Descriptor for a flow of ping requests/replies
|
|
* @f: Generic flow information
|
|
* @seq: Last sequence number sent to tap, host order, -1: not sent yet
|
|
* @sock: "ping" socket
|
|
* @ts: Last associated activity from tap, seconds
|
|
* @id: ICMP id for the flow as seen by the guest
|
|
*/
|
|
struct icmp_ping_flow {
|
|
/* Must be first element */
|
|
struct flow_common f;
|
|
|
|
int seq;
|
|
int sock;
|
|
time_t ts;
|
|
uint16_t id;
|
|
};
|
|
|
|
bool icmp_ping_timer(const struct ctx *c, const struct icmp_ping_flow *pingf,
|
|
const struct timespec *now);
|
|
|
|
#endif /* ICMP_FLOW_H */
|