--- gvpe/src/connection.h 2003/10/16 02:28:36 1.9 +++ gvpe/src/connection.h 2005/03/03 07:24:57 1.17 @@ -1,5 +1,6 @@ /* connection.h -- header for connection.C + Copyright (C) 2003-2004 Marc Lehmann This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,15 +37,15 @@ u8 id[RSA_IDLEN]; // the challenge id }; -typedef u8 rsachallenge[RSA_KEYLEN - RSA_OVERHEAD]; // challenge data; -typedef u8 rsaencrdata[RSA_KEYLEN]; // encrypted challenge +typedef rsaclear rsachallenge; // challenge data; +typedef rsacrypt rsaencrdata; // encrypted challenge typedef u8 rsaresponse[RSA_RESLEN]; // the encrypted ripemd160 hash //////////////////////////////////////////////////////////////////////////////////////// struct crypto_ctx; -struct hmac_packet:net_packet +struct hmac_packet : net_packet { u8 hmac[HMACLENGTH]; // each and every packet has a hmac field, but that is not (yet) checked everywhere @@ -110,6 +111,12 @@ ~pkt_queue (); }; +enum + { + FEATURE_COMPRESSION = 0x01, + FEATURE_ROHC = 0x02, + }; + struct connection { conf_node *conf; @@ -124,11 +131,25 @@ sliding_window iseqno; u8 protocol; + u8 features; pkt_queue data_queue, vpn_queue; crypto_ctx *octx, *ictx; +#if ENABLE_DNS + sockinfo dns_si; // forwarder + + vector dns_rcvpq; int dns_rcvseq; // received packets + + struct byte_stream *dns_rcvdq; + struct byte_stream *dns_snddq; int dns_sndseq; //D + + void dnsv4_cb (time_watcher &w); time_watcher dnsv4_tw; + bool send_dnsv4_packet (vpn_packet *pkt, const sockinfo &si, int tos); + void dnsv4_receive_rep (struct dns_rcv *r); +#endif + enum conf_node::connectmode connectmode; u8 prot_minor; // minor number of other side @@ -163,7 +184,7 @@ void dump_status (); - connection(struct vpn *vpn_); + connection (struct vpn *vpn, conf_node *conf); ~connection (); };