class ctrlfd_t; class l2tp_peer_t; class l2tp_tunnel_t; class multihop_t { private: #define MAX_MULTIHOP_DOMAINS 256 int nr_multihop; const char *multihop_lhs[MAX_MULTIHOP_DOMAINS]; const char *multihop_domains[MAX_MULTIHOP_DOMAINS]; const char *multihop_tunnel_group[MAX_MULTIHOP_DOMAINS]; l2tp_peer_t *multihop_peers[MAX_MULTIHOP_DOMAINS]; l2tp_tunnel_t *try_multihop(const char *full_id, const char *domain); public: multihop_t(); void show_running_config(ctrlfd_t *cfd, int verbose, const char *scope); l2tp_peer_t *lookup_multihop_peer(const char *tunnel_group, const char *full_id, const char *domain, int insert); l2tp_tunnel_t *try_multihop(const char *user); l2tp_tunnel_t *try_multihop_tunnel_group(const char *tunnel_group, unsigned len); void del_multihop_index(int index); int find_multihop_index(const char *tunnel_group, char *domain, l2tp_peer_t *peer, char *lhs); void del_multihop(ctrlfd_t *cfd, const char *tunnel_group, char *domain, l2tp_peer_t *peer, char *lhs); void add_multihop(ctrlfd_t *cfd, const char *tunnel_group, char *domain, l2tp_peer_t *peer, char *lhs, union sockaddr_union *sau, int insert); void dump_multihop(ctrlfd_t *cfd); void dump_full_state(ctrlfd_t *cfd, int do_config); };