Made listener_print be CONST
[freeradius.git] / src / include / detail.h
1 #ifndef DETAIL_H
2 #define DETAIL_H
3 /*
4  *      detail.h        Routines to handle detail files.
5  *
6  * Version:     $Id$
7  *
8  */
9
10 #include <freeradius-devel/ident.h>
11 RCSIDH(detail_h, "$Id$")
12
13 typedef enum detail_state_t {
14   STATE_UNOPENED = 0,
15   STATE_UNLOCKED,
16   STATE_HEADER,
17   STATE_READING,
18   STATE_QUEUED,
19   STATE_RUNNING,
20   STATE_NO_REPLY,
21   STATE_REPLIED
22 } detail_state_t;
23
24 typedef struct listen_detail_t {
25         fr_event_t      *ev;    /* has to be first entry (ugh) */
26         int             delay_time;
27         char            *filename;
28         char            *filename_work;
29         VALUE_PAIR      *vps;
30         FILE            *fp;
31         off_t           offset;
32         detail_state_t  state;
33         time_t          timestamp;
34         time_t          running;
35         fr_ipaddr_t     client_ip;
36         int             load_factor; /* 1..100 */
37         int             signal;
38         int             poll_interval;
39         int             retry_interval;
40         int             packets;
41         int             tries;
42
43         int             has_rtt;
44         int             srtt;
45         int             rttvar;
46         struct timeval  last_packet;
47         RADCLIENT       detail_client;
48 } listen_detail_t;
49
50 int detail_recv(rad_listen_t *listener,
51                 RAD_REQUEST_FUNP *pfun, REQUEST **prequest);
52 int detail_send(rad_listen_t *listener, REQUEST *request);
53 void detail_free(rad_listen_t *this);
54 int detail_print(const rad_listen_t *this, char *buffer, size_t bufsize);
55 int detail_encode(UNUSED rad_listen_t *this, UNUSED REQUEST *request);
56 int detail_decode(UNUSED rad_listen_t *this, UNUSED REQUEST *request);
57 int detail_parse(CONF_SECTION *cs, rad_listen_t *this);
58
59 #endif /* DETAIL_H */