summaryrefslogtreecommitdiffstats
path: root/redir.h
blob: fe785b82515511f64c3a19c2fb23b23473f0f12b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "RedirectionConstants.h"

enum redir_state {
    REDIR_NONE      =  0,
    REDIR_INIT      =  1,
    REDIR_AUTH      =  2,
    REDIR_INIT_SOL  = 10,
    REDIR_CONN_SOL  = 11,
    REDIR_INIT_IDER = 20,
    REDIR_CONN_IDER = 21,
    REDIR_CLOSING   = 30,
    REDIR_CLOSED    = 31,
    REDIR_ERROR     = 99,
};

struct redir {
    int               sock;
    int               verbose;
    unsigned char     type[4];
    unsigned char     user[16];
    unsigned char     pass[16];
    enum redir_state  state;

    /* callbacks */
    void *cb_data;
    void (*cb_state)(void *cb_data, enum redir_state old, enum redir_state new);
    int (*cb_recv)(void *cb_data, unsigned char *buf, int len);
};

const char *redir_strstate(enum redir_state state);

int redir_start(struct redir *r);
int redir_stop(struct redir *r);
int redir_auth(struct redir *r);
int redir_sol_start(struct redir *r);
int redir_sol_stop(struct redir *r);
int redir_sol_send(struct redir *r, unsigned char *buf, int blen);
int redir_sol_recv(struct redir *r, unsigned char *buf, int blen);
int redir_data(struct redir *r);